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

Embed Size (px)

DESCRIPTION

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

Citation preview

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