Hệ điều hành thời gian thực RTOS

download Hệ điều hành thời gian thực RTOS

of 28

description

Bài giảng hệ điều hành thời gian thực RTOS

Transcript of Hệ điều hành thời gian thực RTOS

Chng 1:GVHD: ThS. Hunh Vn KimH iu hnh thi gian thc RTOS SVTH: L Vn Mi

CHNG 1: H IU HNH THI GIAN THC (RTOS)1.1 GII THIU CHUNG:

1.1.1 nh ngha H iu hnh thi gian thc RTOS1.1.1.1 H thng thi gian thc ( Real time System): Thi gian ( Time) : S chnh xc ca h thng khng ch ph thuc vo kt qu tnh ton logic m cn ph thuc vo thi gian cho ra kt qu. Thc ( Real): p ng ca h thng vi nhng s kin bn ngoi. Thi gian thc ( Real-Time): Phi m bo cc yu t : p ng nhanh D on c. Cc tc v ( Real-time Task) c xc nh bng deadline. Deadline l thi gian ti a mt tc v PHI hon thnh vic thnh ton.

1.1.1.2 Thi gian thc cng ( Hard Real-time) v thi gian thc mm ( Soft Real-Time):

Hnh 1.1: Thi gian thc cng v thi gian thc mm.

Thi gian thc cng: Mt tc v l thi gian thc cng nu nh thi gian tnh ton vt qu deadtime c th gy ra s ph v mi trng iu khin. Thi gian thc mm: Mt tc v l thi gian thc mm nu nh m bo thc thi trong deadtime cho php v nu nh khng m bo th s khng to ra nhng nguy hi no ng k cho h thng v khng lm nh hng n s ng x ca h thng.1.1.1.3 nh ngha h iu hnh thi gian thc RTOS:L h thng c: Lch trnh thc thi theo thi gian. Qun l ti nguyn h thng. Cung cp nhng nn tng c bn pht trin cc ng dng trn n.1.1.2 Cc thnh phn trong RTOS:

Hnh 1.2 : Cc i tng trong RTOS B lch trnh ( scheduler):L mt tp cc thut ton xc nh tc v ( Task) no c thc thi . i tng (Object) :L nhng cu trc c bit (Kernel) gip ngi lp trnh to ra cc ng dng.

Dch v ( Service) :L nhng iu khin m Kernel ( li) thc thi trong i tng ( object): chia thi gian ( Timing), Ngt( interrupt), p ng ( handling) v qun l ti nguyn h thng ( resource management)

1.1.2.1 B lch trnh ( Scheduler): L mt phn v cng quan trng ca li h thng iu khin ( Operating System Kernel). N gip xc nh tc v (task) no s dnh quyn CPU thc thi tip theo. Sau , n thc hin vic chuyn trng thi ( context switching) c thc hin bng b iu phi ( dispatcher).

1.1.2.1.1 Chuyn i trng thi ( Context Switching)

Hnh 1.3 : Chuyn i trng thi ( ng cnh) Trng thi ( ng cnh) ca tc v ( Task) Mi task c mt trng thi ring ca n, n chnh l trng thi ca nhng thanh ghi ( registers). Mi thi im 1 task mi c to ra , kernel s to ra v lu gi mt block iu khin lin quan n task ( TCBs ). TCBs l nhng cu trc d liu h thng m kernel dng lu tr nhng thng tin c trung ca task. TCBs cha mi th m mt kernel cn bit v mt task c th no . Khi task nag chy, trng thi ca n l ng. Trng thi ng ny c lu tr trong TCB. Khi task khng cn chy na, trng thi s b ng bang ( frozen) trong TCB, v c s dng cho ln thc thi tip theo ca task.

Cng tc chuyn i trng thi ( Context Switch): S xy ra khi b lch trnh ( scheduler) chuyn t mt trng thi ny sang mt trng thi khc. Vic chuyn i trng thi bao gm: Thi gian chuyn i:L thi gian tiu tn cho b lch trnh chuyn t task ny sang task khc.N khng c lin quan no n cc lnh thc hin trong task.Nu mt ng dng c thit k m xy ra chuyn i trng thi thng xuyn th c th dn n nhng thc thi khng cn thit. V vy, nn thit k ng dng theo cch m to ra t chuyn i trng thi nht. Khi no chuyn i xy ra:Mi khi ng dng to mt li gi h thng ( System Call) , b lch trnh s xc nh rng c cn chuyn i trng thu hay khng. Khi b lch trnh xc nh vic chuyn i l cn thit th s gi b phn phi ( dispatcher) thc hin vic chuyn i. V d: Khi b thc thi ca Kernel xc nh cn dng vic thc thi task 1 chuyn qua trng task 2 th n s thc thi theo cc bc sau: Kernel s lu thng tin trng thi ca Task 1 Load thng tin trng thi ca Task 2, task2 tr thnh lung ( thread) thc thi hin ti. Trng thi chuyn i ca Task 1 s c ng bang trong khi Task 2 ang c thc thi, nhng nu nh b chuyn i xc nh cn chy li task 1 th task 1 s quay li v tr ngay trc khi n b chuyn i.

Hnh 1.4: V d v Contex Switch

1.1.2.1.2 B iu phi (Dispatcher): Dng thc thi ( Flow of Execution):Ti bt k thi im no RTOS ang chy, dng thc thi s chuyn n 3 vng: n cc Task ng dng ( application Task), n mt chng trnh phc v ngt ( ISR), hoc n Kernel. Khi no b phn phi c thc hin: Khi mt Task hoc ISR to mt li gi h thng, dng iu khin s chuyn n Kernel thc thi mt trong s nhng th tc c cung cp bi Kernel. Khi ri khi kernel, Dispatcher s c trch nhim l chuyn lnh iu khin n mt trong s nhng Task ng dng. Cch thc hin nh sau: Khng cn thit chuyn ton b lnh iu khin n cng mt task gi System Call. iu ny s c xc nh bng gii thut phn chia thi gian biu ( scheduling algorithms ) ca b lch trnh ( scheduler). Chuyn i thc thi t mt Task

Hnh 1.5: iu phi t mt Task Ty thuc vo cch truy cp vo Kernel nh th no m dispatching s xy ra khc nhau. Khi mt Task thc hin mt li gi h thng, dispatcher s c s dng thot khi Kernel mi khi Li gi h thng c hon thnh. Trong trng hp ny, dispatcher c dng nh mt li gi ca li gi ( call- by call basic) n c th h tr cho vic chuyn i trng thi ca Task. Bt k Task no cng c th gi system call. Mt hay nhiu Task c th trng thi sn sng cho thc thi. Chuyn i thc thi t 1 chng trnh phc v ngt(ISR):

Hnh 1.6: iu phi t mt ISR

Khi mt ISR to mt System Call, Dispatcher s b b v hiu ha cho n khi ISR thc thi xong. Qu trinh ny s ng min l c ti nguyn chuyn i gia cc Task. Chuyn i trng thi ny s khng c din ra bi v ISR phi c thc thi xong m khng c ngt bi cc Tasks. Sau khi ISR thc thi xong, Kernel s thot n dispatcher c th iu phi n ng task thc thi tip theo.

1.1.2.1.3 Gii thut cho lch trnh: Lch trnh thay th theo u tin:

Hnh 7: Gii thut lch trnh theo u tin. Hu ht cc Real time Kernel s dng gii thut lch trnh thay th theo u tin ( preemptive priority- based scheduling) lm mc nh. Cc task s c thc thi ti bt k mt thi im l task c u tin cao nht so vi cc task khc ang trng thi sn sng. Real Time Kernel h tr 256 cp u tin, vi 0 l u tin cao nht v 255 l u tin thp nht. Mt s Kernel th ngc li vi 255 l u tin cao nht v 0 l u tin thp nht. Vi b chuyn i theo u tin, mi task phi c mt u tin, v task c u tin cao nht chy u tin. Nu mt Task c u tin cao hn task ang chy tr nn sn sng chy th kernel s ngay lp tc lu li trng thi Task hin ti v chuyn sang Task c u tin cao hn. Mc d vic phn chia u tin ca Task c thc hin khi task c to nhng u tin ca Task l c th thay i mt cch linh ng s dng Li gi do kernel cung cp ( Kernel provided calls). Kh nng ny dng thay i mt cch linh ng cho php mt ng dng nhng c linh hot ng x vi s kin bn ngoi khi chng xut hin, to ra mt h thng thi gian thc v p ng tt. Lu l vic s dng khng ng kh nng thay i u tin ny c th dn n o u tin ( priority inversion), vng cht ( deadlock), v c th dn n treo h thng ( system failure). V d: ( Hnh 7)Task 1 c thay th bi task 2 c u tin cao hn, task 2 c thay th bi task 3 c u tin cao hn, khi Task 3 hon thnh, task 2 s tip tc thc thi trng thi ngay trc khi b dnh quyn thc thi. Tng t, khi task 2 hon thanh th Task 1 s c tip tc thc thi (resumes). Lch trnh theo Round- Robin( Gi vng)

Hnh 1.8 : Lch trnh theo Round- Robin Mi Task s cng chia s thi gian thc thi ca CPU. Round- Robin thun ty khng tha mn yu cu ca h thng thi gian thc bi v mt h thng thi gian thc cc task phi lm vic theo mc quan trong khc nhau.

V d : ( Hnh 8) Thay v thay th theo u tin, cc task round robin c phn chia thi giant thc thi theo cc khong thi gian ( time slice). Vi time slicing , mi task s c thc thi trong mt khong thi gian nht nh, v theo vong trong. Mt b m thi gian s gim st thi gian ca mi Task, tng ln theo mi xung clock. Khi thi gian thc thi mt task ht, b m s b xa, v task ny s c t cui cng ca chu k ( end of circle).

Nu nh mt task round-robin b thay th bi mt task c u tin cao hn, th b m thi gian s lu li v phc hi khi task b thay th dnh quyn thc thi li.1.1.2.2 Cc i tng ( Objects) trong RTOS: Tasks:L cc lung ( thread) thc thi cng tn ti v c lp nhau c th cnh tranh nhau dnh quyn thc thi. Semaphores:L i tng bt s kin ng b gia cc tasks, c th tng hoc gim. Message Queues:L mt kiu cu trc d liu c dng ng b ha hoc trao i thng tin gia cc Tasks. Real-time embedded applications:L s kt ni gia cc i tng ca Kernel gii quyt vn thi gian thc nh s ng thi, s ng b,v trao i d liu

1.2 VN QUN L CC TASKS:

1.2.1 nh ngha Tasks: Hnh 1.9: S cu trc ca mt Task c bn.

Task l mt lung thc thi c lp m c th cnh tranh chim quyn thc thi . Mt ng dng c chia ra lm nhiu Tasks ng thi ( Concurrent Task) ti u kh nng p ng vo ra trong lut thi gian. Mt Task c nh ngha thun ty l mt tp cc tham s v cu trc d liu. Cc thnh phn ca mt Task: Khi c to ra, Task s c tn, ID duy nht, u tin, mt block iu khin Task ( TCB), Stack, v Cc th tc thc thi Task.1.2.2 Task h thng ( System Task):Bao gm cc Task sau: Task khi to ( Initialization or Startup Task)Khi to h thng v to task khi ng h thng. Task Ri ( Idle Task).Idle Task chy theo chu k ri ca h thng ( idle cycles), c t u tin thp nht.Thc thi mt vng lp v tn. Idle task chc chn rng b m chng trnh lun lun c gi tr cho trong trng hp khng c task no thc thi.Kernel cho php cc thao tc c cu hnh bi ngi dng ( developer) chy nhng yu cu c bit : sleep mode Task ng nhp ( Logging Task).L tin nhn truy cp vo h thng. Task Li ( Exception- Handling Task).Thc thi cc trng hp li h thng hoc ng dng. Task sa li ( Debug Agent Task).Cho php sa li thng qua cng c debug ( host debugger). Ch rng cc task h thng khc c th c to ra trong qu trnh khi to, ph thuc vo cc thnh phn c trong kernel.

1.2.3 Cc trng thi ca mt Task:

Hnh 1.10 . Cc trng thi ca mt Task. Trng thi ca mt Task:Ti bt k mt thi im, mi task tn ti mt trong s nhng trng thi nh bao gm: Sn sng ( Ready), ang thc thi ( Running), hoc Kha ( Blocked). Khi mt h thng nhng thi gian thc chy, mi task thay i t trng thi ny n trng thi khc theo quy lut logic ca mt my trang thi hu hn n gin ( Finite state machine (FSM)).V c bn, 3 trng thi chnh c s dng trong hu ht cc h thng Kernel s dng phng phplch trnh thy th . ( preemptive scheduling).1.2.3.1 Trng thi sn sng ( Ready State):Task sn sng thc thi nhng cha th thc thi v task c u tin cao hn ang chim quyn thc thi. Khi mt Task c to ln u tin, Kernel s t ng t task ny vo trng thi sn sng. trng thi ny, Task s dnh quyn thc thi vi cc Task trng thi sn sng khc chim thi gian thc thi ca b vi x l. Task trng thi sn sng khng th chuyn vo trng thi Kha( blocked) mt cch trc tip. Mt Task u tin cn phi chy c th gi blocking call, blocking call l li gi n mt hm m khng th chy n vic hon thnh ngay lp tc. i vi nhng Kernel ch h tr mi mc u tin cho mt Task duy nht, gii thut lich trnh s c chuyn thng ti Task c u tin cao nht sn sng cho ln chy tip theo. Vi vic hin thc theo cch ny , Kernel gii hn s lng Task trong mt ng dng tng ng vi s mc u tin c h tr. Tuy nhin, hu ht cc kernel h tr nhiu hn mt Task cho mi mc u tin trong mt ng dng c th no . Trong trng hp ny, gii thut lch trnh s phc tp hownvaf bao gm c vic lu tr mt danh sch c task trng thi sn sng. Mt s Kernel lu gi danh sch task trng thi sn sng mt cch ri rc cho tng u tin; mt s khc th c mt danh sch duy nht. V d: ( Hnh 11)

Gi s h thng s dng gii thut lch trnh thay th theo u tin ( priority- based preemptive scheduling algorithm) vi 255 mc u tin v quy nh mc u tin 0( lowest) l mc u tin cao nht. Trong v d ny, Task 1, 2, 3, 4 v 5 ang trng thi sn sng thc thi, v Kernel xp hang chng bng trong dang sch cc task sn sng( task ready list). Task 1 l task c u tin cao nht (70); task 2, 3, 4 l nhng Task c u tin tip theo (80), v Task 5 c u tin thp nht( 90). Cc bc sau gii thch vic Kernel dng danh sch ny nh th no: V Task 1 c u tin cao nht nn n l Task u tin sn sng chy. Kernel s chuyn Task 1 t danh sch Task sn sng sang trng thi ang thc thi. Sut trong qu trnh thc thi, Task 1 to ra mt Blocking call. Kt qu l Kernel chuyn Task 1 vo trng thi Blocked. Tip theo, Task 2 c u tin cao th 2 nn s c chuyn vo trng thi ang thc thi. Tip theo, Task 2 gi Blocking call. Kernel chuyn Task 2 vo trng thi Blocked.Qu trnh tng t din ra cho Task 3. Khi Task 3 thc thi, ti nguyn h thng c yu cu bi Task 2. Kernel s chuyn Task 2 vo trng thi sn sng v chn vo cui danh sch cc trng thi sn sng u tin l l 80. Task 3 vc tip tc l Task hin thi ang chy. Task 3 ti thi im ny s c chuyn n trng thi sn sng v chn sau Task 2 trong danh sch ( cng u tin l 80), ng trc Task 5.

Hnh 1.11 : v d v trng thi sn sng ca Task

1.2.3.2 Trng thi ang thc thi ( Running state):Task c u tin cao nht v ang chy. h thng n vi x l ( Single processor system), ch duy nht mt Task c th chy ti mt thi im. Trong trng hp ny, khi Task c chuyn vo trng thi ang thc thi, b x l ly d liu t cc thanh ghi ng vi vi trng thi ca Task. B x l c th thc thi thc thi nhng lnh trong Task v qun l Stack lin quan. Nh cp n trong phn 1.2.3.1, mt Task c th chuyn n trng thi sn sng trong khi ang chy. Khi mt Task chuyn t trng thi ang chy n trng thi Sn sng, n b chim quyn thc thi bi Task c u tin cao hn. Trong trng hp ny, Task b chim quyn thc thi s c t vo v tr chnh xc v mc u tin trong danh sch cc Task ang trng thi sn sng thc thi, v Task c u tin cao hn c chuyn t trng thi sn sng sang trng thi ang thc thi. Khng ging nh mt Task wor trng thi sn sng, Task trng thi ang thc thi s chuyn n trng thi Blcoked theo cch sau: Bng cch to ra mt li gi yu cu mt ti nguyn nhng khng c sn p ng. Bng cch to ra mt lwoif gi yu cu ch mt s kin xut hin. Bng cch to ra mt yu cu delay chnh n trong mt khong thi gian no .1.2.3.3 Trng thi Kha ( blocked State) Task yu cu ti nguyn h thng nhng cha c p ng, yu cu s phi i cho n khi s kin xut hin, hoc delay mt khong thi gian. Tnh nng ca trng thi blocked l rt quan trng trong h thng thi gian thc v nu khng c trng thi ny, Task c u tin thp hn s khng th thc thi c. Nu Task c u tin cao hn khng c thit k cho trng thi Blocked, CPU b treo c th xy ra. Mt Task c th chuyn n trng thi Blocked ch khi to mt blocking call, yu cu mt s iu kin kha . Mt Task trng thi Blocked cho n khi mt s iu kin blocking c tha mn. V d nh mt Semaphore xc nh c Task no ang i gii phng trng thi blocked, hoc l mt tin nhn ( message) trong cha Task ang i n mt Queue, hoc thi gian delay cho Task ht. Khi mt Task c m kha ( unclocked), Task c th chuyn t trng thi blocked sang trng thi sn sng chy ( ready state). Nu Task c m kha c u tin cao nht , Task ny s chuyn trc tip n trng thi ang thc thi v s chim quyn thc thi ca Task hin ti. Hin tng CPU starvation:Hin tng ny xy ra khi Task c u tin cao nht chim ton b thi gian thc thi v Task c u tin thp hn khng th chy c.

1.2.3.4 Cc trng thi khc: Mt s Kernel nh ngha nhng trng thi khc nh : tr hon ( suspended), Treo ( pended) v delay. Trong trng hp ny, pended v delay thc cht l trng thi trung gian ca trng thi blocked. Mt Task trng thi Pended ang ch mt ti nguyn no cn c gii phng, mt delay Task th ang ch thi gian delay kt thc. Trng thi suspended tn ti vi mc ch debugging h thng. Kernel phi lu trng thi hin ti ca tt c cc Tasks trong h thng. Khi nhng li gi c to ra bi cc tc ang thc thi, b lch trnh s xc nh Task no cn thay i v thc hin nhng s thay i ny. Trong mt s trng hp, Kernel thay i trng thi ca mt s Task nhng khng c vic chuyn trng thi ( context switching) xut hin v trng thi ca Task c u tien cao nht khng b nh hng. Trong nhng trng hp khc, nhng s thay i trng thi ny dn n mt context switching bi v Task c u tin cao nht s b blocked v khng cn c u tin cao nht na. Khi qu trnh x l xy ra, Task thc thi trc c chuyn n trng thi blocked hoc sn sng, v task c u tin cao nht mi s c thc thi.

1.2.4 Cc iu khin lin quan n Task:1.2.4.1 To mt Task: Task c th c to t 1 hoc 2 bc:Create : t task vo trng thi suspended stateStart : chuyn Task vo trng thi sn sngMt s Kernel h tr user configurable hook thc th vic to Task.Trng thi Suspended: Ging nh trng thi blocked , trong Task b suspended th khng trng thi ang thc thi cng nh l sn sng thc thi.User configurable hook l mt my ( mechanism) thc thi nhng hm do ngi lp trnh cung cp, ti thi im ca mt s kin nht c th no .

1.2.4.2 Xa mt Task: Nhiu Kernel cho php mt Task c th xa mt Task khc. Qu trnh xa mt Task: Dng Task , Gii phng b nh bng cch xa Task control Block v Stack. V d:Gi s mt Task no yu cu mt semaphore dnh quyn truy cp vo cu trc d liu. Trong khi Task ang thc thi trn cu trc d liu ny, Task b xa. Nu khng thi hnh mt cch thch hp, Vic xa Task ang thc thi c th dn n nhng kt qu sau: Ph v cu trc d liu bi nhng lnh ghi cha hon thnh. Khng gii phng c Semaphore, dn n cc Task khc khng th yu cu semaphore c Mt cu trc d liu khng th truy cp c, v semaphore khng c gii phng, kt qu l chng ta b mt b nh hoc ti nguyn h thng. Mt b nh xy ra khi b nh c s dng nhng khng c gii phng, kt qu l th thng s dn dn khng cn b nh chy chng trnh. Mt ti nguyn xy ra khi ti nguyn c s dng nhng khng bao gi c gii phng, kt qu l mt b nh v mi ti nguyn chim mt vng nh nht nh.1.2.4.3 Lch trnh cho mt Task Kernel s cung cp cc APIs cho vic iu khin trng thi ca Task. Ngi lp trnh c th iu khin trng thi ca Task nh: hon (suspend), tip tc( resume), bt u li (restart), ly u tin, ci t u tin, kha preemtion, m kha reemption. S dng lch trnh bng tay, ngi tp trnh c th suspend v resume Task t mt ng dng. iu ny quan trng trong vn debug h thng, hoc l suspend Task c u tin cao Task c u tin thp hn c th c thc thi. Ngi lp trnh c th delay mt Task, Ly thng tin v u tiieen cuat Task .

1.2.4.4 Ly thng tin ca mt Task: Kernel cung cp nhng th tc cho php ngi lp trnh c th ly thng tin ca Task trong ng dng : ID v TCB. Vic xc nh TCB ch l trng thi tc thi ca Task, v trng thi ca Task l ng.1.2.5 Cu trc cu mt Task:

Hnh 1.12 Hin thc cu trc ca mt Task Chy n kt thc Task ( Run to completion Task)Mt v d ca Run to completion Task l Task khi to cp ng dng ( application level). Task khi to c nhim v khi to ng dng v to ra cc dch v, Tasks, v mt s i tng ca Kernel. Vng v tn Task ( Enless-Loop Task)Mt cu trc Enless-Loop Task bao gm c phn code khi to nhng phn khi to ch cn mt ln, sau s l vn lp v tn.Mt thnh phn khng th thiu ca vng lp v tn l mt hay nhiu blocking call nm trong vng lp. Nhng blocking call ny cho php cc Task c u tin thp hn c th chy c.

1.3 VN V QUN L SEMAPHORE:1.3.1 Vn chia s ti nguyn ( Resourse sharing) v ng b ha ( Synchronization):

1.3.1.1 Chia s ti nguyn h thng:

Hnh 1.13 : Chia s ti nguyn h thng Chia s ti nguyn:Vic truy cp bi nhiu tasks phi c ng b duy tr s thng nht ca vic chia s ti nguyn. Qu trnh ny gi l ng b ha, c quan h mt thit n Chn knh ( mutual exclusions) v vng u tin ( critical section). Chn knh ( mutual exclusion)Ch mt Task duy nht ti mi thi im mi c th truy cp vng ti nguyn chia s. Vng u tin ( Critical sections):L vng code truy cp vng ti nguyn chia s. V d: Xt 2 Tasks ang c gng truy cp mt vng nh chia s. Mt Task nhn d liu lin tc t mt cm bin v ghi vo vng nh ny. Trong khi , Task kia c nhin v hin th d liu ny, n s c lin tc vng nh lu d liu gi d liu ra thit b hin th. Vn ny sinh l nu nh vic s dng vng nh ny khng mang tnh c quyn (exclusive) th nhiu task s ln lt truy cp n vng nh ny. V d khi Task cha hon thnh vic ghi d liu trc khi task kia c gng c d liu. iu ny dn n ni dung hin th s sai. Vng code m Task nhn d liu t cm bin v ghi vo vng nh l mt vng u tin (critical section). Tng t cho on code m trong Task hin th c d liu t vng nh ny cng l mt vng u tin, v 2 vng ny cng truy cp vo mt vng ti nguyn h thng.

1.3.1.2 ng b ha( Synchronization):

Hnh 1.14 : ng b ha Mt cch tng qut, mt Task phi ng b hot ng ca n vi Task khc vic thc thi a lung( multi- thread) c m bo. Hot ng ng b m bo rng th t thc thi cc Task c s dng. V d:Hnh 14: Mt on code C2 trong Task 2 ch c chy nu mt on code C1 no trong Task 1 c chy trc. Trong trng hp ny, chng ta dng mt semaphore nh phn n gin( binary semaphore), hin thc vic ng b ha.

1.3.2 nh ngha mt Semaphore:

Hnh 1.15. Semaphore

i tng ca Kernel c mt hay nhiu lung thc thi c th yu cu hoc gii phng cho mc ch ng b. Khi mt semaphore c to ra ln u tin, Kernel s phn chia chng n mt Block iu khin semaphore( semaphore control block (SCB), vi mt ID duy nht, mt gi tr v mt danh sch cc Tasks ang trng thi ch ( task waiting list) Mt semaphore ging nh mt cha kha cho php mt Task c th tin hnh mt s lnh iu khin hoc truy cp ti nguyn. Nu Task nhn c semphore th n s tin hnh nhng iu khin d nh trc hoc l truy cp n ti nguyn . Kernel s gim st s ln semaphore c nhn bng cch s dng mt bin m ( token count), Bin ny c th c khi to gi tr khi semaphore c to. Khi mt Task nhn c mt Semaphore, bin m s gim v khi gii phng semaphore th bin ny s tng ln. Nu nh bin m ny bng 0 th ngha l khng c task no nhn semaphore. Danh sch cc task trng thi ch kim tra nhng Task b blocked v ch semaphore. Danh sch ny c th l FIFO hoc l theo th t u tin. Mt Kernel h tr c th nhiu loi semaphore : nh phn( binary), m( counting), chn knh ( muxtual- exclusive) .

1.3.2.1 Binary semaphore

Hnh 1.16 : Binary semaphore C gi tr l 0 hoc 1. Gi tr 0: rng ( unavailable) Gi tr 1: c sn ( available) Binary semaphore c i x nh l ngun ton cc, ngha l Task no cng c th s dng c.1.3.2.2 Counting semaphoreHnh 1.17 : Counting semaphore S dng mt bin m cho php semphore c th c nhn v gii phng nhiu ln. Khi c to,mt counting semaphore , bin m cho bit s lng semaphore co th c s dng. Mt hoc nhiu Task c th nhn semaphore cho n khi khng cn mt m thng bo no (token). Khi tt c cc token c ly i , bin m s c gi tr l 0. V counting semaphore s chuyn t trng thi c sn( available) sang trng thi khng c sn ( unavailable).

Counting semaphore l ngun ton cc nn c th c s dng bi nhiu Tasks khc.

1.3.2.3 Mutex semaphore

Hnh 1.18: Mutex Semaphore

L mt semaphore nh phn c bit h tr quyn s hu ( ownership), truy cp quy, xa Task an ton, v mt hay nhiu giao thc trch vn ni ti ca b Mutex. Trng thi ca Mutex l kha ( locked) v m kha( unlocked). Mt Mutex c to ra th c trng thi ban u l unlocked, khi n c nhn bi cc Task. Sau khi c nhn, Mutex s b kha.

1.3.3 Cc iu khin lin quan n Semaphore: To mt Task: Binary: Trng thi ban u, danh sch cc Task trng thi ch. Counting: gi tr bin m ban u, danh sch cc task ang trng thi ch. Mutex: Danh sch th t cc Task trng thi ch, quy.. Xa mt Semaphore: Xa bi bt k mt Task no bng cch xa ID. Task ang ch chuyn sang m kha ( unblocked). Nhn semaphore b xa th s xy ra li. Khng c xa semaphore khi n ang c s dng. Nhn Semaphore:Task : Vng lp v tn: task b kha n khi c semaphore. Ch vi thi gian timeout: Task b kha i khi C semaphore Ht thi gian time out. Khng ch: Task khng b kha. Gii phng: C th c gii phng t Task hoc ISR. Mutex ch gii phng bi Task no ang s hu n. Gii phng khng thnh cng dn n mt quyn truy cp Mutex. Xa danh sch cc Task ch semaphore: Gi tn hiu n tt c cc Task ( broadcast) Gii phng ton b Task ang ch semaphore Ly thng tin: Ly thng tin Semaphore Ly thng tin v ID.1.3.4 Vn s dng semaphore:

1.3.4.1 Tn hiu ng b:

Hnh 1.19 : Semaphore c s dng lm tn hiu ng b Hai Task chia c th giao tip cho mc ch ng b ha m khng trao i d liu. V d, mt binary semaphore c th c s dng h tr vic truyn nhng lnh iu khin. Trong trng hp ny, binary semaphore khng c sn ban u ( gi tr l 0), tWaitTask c u tin cao hn nn thc thi trc. Task ny gi yu cu nhn semaphore nhng b kha v semaphore cha c sn( unavailable). Bc ny cho php Task c u tin thp hn tSignalTask c c hi thc thi, tSignal pht ra mt semaphore v m kha cho tWaitTask. Bi v u tin ca Task tWaitTask cao hn tSignalTask, cho nn ngay khi semaphore c to ra th tWaitTask s chim quyn thc thi ca Task tSignal v bt u thc thi.

1.3.4.2 Gim st vic ng b ha

Hnh 1.20: S dng counting semaphore gim st s ng b i khi t l s Task to ra tn hi thc thi nhiu hn s task nhn tn hiu. Vi counting semaphore, task to tn hiu c th tip tc thc thi v tng bin m ln trong khng gian chnh n. Gi tr m ban u l 0, Task c u tin thp hn tWaitTask c gng nhn mt semaphore nhng b kha n khi tSignalTask to ra mt semaphore. Sau , tWaitTask s i trng thi sn sng cho n khi Task c u tin cao hn tSignalTask th c hin li gi kha hoc delay chnh n. tSignalTask to ra semaphore v tWaitTask nhn semaphore cho n khi bin m semaphore l 0, thi im ny tWaitTask tip tc i tSignalTask pht ra mt semaphore.1.3.4.3 ng b ha trong chia s ti nguyn h thng

Hnh 1.21 : S dng semaphore ng b ha chia s ti nguyn. Vng ti nguyn chia s c th l mt vng nh, mt cu trc d liu hoc mt thit b I/O , cc thit b ny c chia s gia 1 hay nhiu Task vi nhng lung thc thi ng thi. Mt semaphore c th c s dng ni tip ha ( serialize) truy cp n ti nguyn dng chung ny. Trong trng hp ny, binary semaphore c khi to ban u trng thi sn sng v c dng bo v vng ti nguyn chia s ny. truy cp n ti nguyn cha s ny Task 1 v Task 2 cn phi nhn binary semaphore trc khi c hoc ghi t vng ti nguyn dng chung ny. Mt trong nhng nguy him ca thit k ny l bt k task no cng c th to ra binary semaphore mt cch ngu nhin. Nu nh 2 Task cng nhn c semaphore v c ghi n vng nh ti cng mt thi im, s dn n nhng ng x khng chnh xc ca h thng. chc chn iu ny khng xy ra, chng ta nn s dng mutex semaphore. Bi v mt Mutex h tr khi nim v quyn s hu, n m bo rng ch duy nht 1 task c th nhn c semaphore thnh cng.1.3.4.4 ng b ha trong chia s a ti nguyn h thng

Hnh 1.22: S dng Counting semaphore ng b a ti nguyn

Dng cho trng hp nhng ti nguyn tng ng nhau c s dng. Mt counting semaphore c bin m c t l s ti nguyn tng ng dng chung. Khi 2 Tasks u tin yu cu semaphore thnh cng th task th 3 phi i cho n khi mt trong 2 task giai phng semaphore b chim. Khi dng Binary semaphore c th dn n vn nu nh 1 task no gii phng semaphore ma thc s n khng yu cu, nu on code n gin th iu ny s khng l vn g nhng nu on code kh phc tp vi nhiu Task cng truy cp ti nguyn, mutex semaphore nn c s dng bo v thit k ca ng dng.

1.4 VN QUN L QUEUE:1.4.1 nh ngha Queue:

Hnh 1.23 : Queue

L mt my giao tip d liu gia cc Task. Mt message Queue l mt i tng tng t nh Buffer ( b nh m) thng qua Task hoc ISR gi v nhn d tin nhn (message) giao tip v ng b d liu. N gi tm thi tin nhn t bn gi ( sender) cho n khi bn nhn c nh trc ( intended receiver) sn sng c d liu. Khi mt message Queue c to ra ln u tin, n ck gn n mt khi qun l Queue( Queue control Block( QCB)), tn message Queue, ID duy nht, b nh m ( buffer), chiu di Queue, di ti a mi tin nhn, v mt hay nhiu danh sch cc task ang ch. Mt Message Queue c 2 danh sch cc task ang ch c lin quan. Mt danh sch cc task ch nhn d liu bao gm cc Task ang ch khi Queue rng( khng c d liu). Danh sch cc task ang ch gi gm nhng task ang ch trong khi Queue ang y ( full) d liu.1.4.2 Cc trng thi ca Queue:

Hnh 1.24: Trng thi Ca Queue Khi mt Message Queue c to ln u tin, Queue s trng thi rng Nu mt Task c gng nhn nhn messages t message queue trong khi queue ang rng , task s b kha v c lu li trong danh sch cc task ang ch. Nu nh mt task khc gi mt message n message queue, message ny s c chuyn trc tip n Task b kha . Task b kha s c xa khi danh sch cc task ang ch v chuyn sang trng thi sn sng thc thi hoc l ang thc thi. Nu nh mt task no gi mt message n cng mt message queue nhng khng c task no ch nhn trong danh sch cc task ch th message queue s tr nn khng cn rng na. Khi c thm nhng message n queue th queue s dn dn c lp y v dn n khng cn khng gian ri nhn message na. Lc ny nu nh c mt message no khc gi n na th s khng thnh cng tr khi c mt Task yu cu nhn d liu t Queue, v n s gii phng mt thnh phn ca Queue. Trong hin thc mt s Kernel, khi Task c gng gi d liu i m queue b y th hm gi i s tr v m li ( error code) cho Task . Mt s Kernel khc lu cho php Task b kha v chuyn n danh sch cc task ch gi, danh sch ny tch bit vi danh sch Task ch nhn.

1.4.3 Cc iu khin lin qua n Message Queue:1.4.3.1 To mt Queue: Khi to cc tham s: chiu di queue, kch thc ti a mi message, th t ch..1.4.3.2 Xa mt Queue: T ng m kha cc task ang trng thi ch1.4.3.3 Gi message:

Hnh 1.25: Gi message n Queue Khi gi message, Kernel s a in vo message queue theo th t t u n cui ( head to tail) trong FIFO Cc kiu gi message: Khng kha ( noneblocking) t task hoc ISRsBn gi s khng b kha nu nh Queue y m s tr v error code. L cch duy nht dng cho vic gi message t ISRs v ISRs khng th kha c. Kha vi thi gian timeout ( ch dnh cho Task) Ngc li so vi None blocking Kha vnh vin ( ch dng cho Task).

Hnh 1.26: ng x vi Task ch Messsage1.4.3.4 Nhn message: Qu trnh ny din ra tng t nh qu trinh gi nhng trnh t s ngc li. Kiu nhn message: None blockingBlockingBlocking vnh vin. Kiu c d liu t Queue:c vi ti cu trc d liuc nhng khng ti cu trc li d liu.1.4.3.5 c thng tin mt Queue: C th ly cc thng tin lin quan n Queue C th c c danh sch cc Task ang trng thi ch.1.4.4 S dng Message Queue:

D liu mt chiu, khng kha gia gi v nhn

Hnh 1.27 : Queue dng cho d liu 1 chiu

D liu mt chiu v c kha ( interblock)

Hnh 1.28 : dng Queue v semaphore cho d liu 1 chiu c kha. D liu 2 chiu:

Hnh 1.29: Queue cho d liu 2 chiu.

Page 1