Id-dar > Wirja > Il-kontenut

Sistema operattiva f'ħin reali Komunikazzjoni Intertask u qsim tar-riżorsi

Mar 08, 2019

Sistema operattiva multitasking bħal Unix hija fqira fil-kompiti f'ħin reali. L-iskedar jagħti l-ogħla prijorità lill-impjiegi bl-inqas domanda fuq il-kompjuter, u għalhekk m'hemm l-ebda mod biex jiġi żgurat li xogħol kritiku għall-ħin ikollu aċċess għal biżżejjed riżorsi. Is-sistemi tal-multitasking għandhom jimmaniġġjaw il-kondiviżjoni tar-riżorsi tad-dejta u tal-hardware fost kompiti multipli. Normalment ma jkunx sikur għal żewġ kompiti li jkollhom aċċess għall-istess dejta speċifika jew riżorsa tal-hardware fl-istess ħin. [6] Hemm tliet approċċi komuni biex tissolva din il-problema:


Maskar / diżattivazzjoni ta 'interruzzjonijiet temporanjament

Is-sistemi operattivi għal skopijiet ġenerali s-soltu ma jippermettux li l-programmi ta ’l-utenti jaħbu (iwaqqfu) jinterrompi, minħabba li l-programm ta’ l-utent jista ’jikkontrolla s-CPU sakemm ikun jixtieq. Xi CPUs moderni ma jippermettux li l-kodiċi tal-modalità tal-utent iwaqqaf l-interruzzjonijiet peress li tali kontroll huwa kkunsidrat bħala riżorsa tas-sistema operattiva ewlenija. Bosta sistemi integrati u RTOSs, madankollu, jippermettu li l-applikazzjoni nnifisha taħdem f'modalità kernel għal effiċjenza akbar tas-sejħa tas-sistema u wkoll biex tippermetti lill-applikazzjoni jkollha kontroll akbar ta 'l-ambjent operattiv mingħajr ma teħtieġ intervent OS.


F'sistemi ta 'proċessur wieħed, applikazzjoni li taħdem fil-mod tal-qalba u taħbi l-interruzzjonijiet hija l-inqas metodu ġenerali biex tipprevjeni aċċess simultanju għal riżors komuni. Filwaqt li l-interruzzjonijiet huma mgħottija u l-kompitu kurrenti ma jagħmilx imblukkar OS sejħa, il-kompitu attwali għandu użu esklussiv tas-CPU peress li l-ebda kompitu jew interruzzjoni oħra ma jistgħu jieħdu l-kontroll, u għalhekk is-sezzjoni kritika hija protetta. Meta l-kompitu joħroġ mis-sezzjoni kritika tiegħu, għandu jaħbi l-interruzzjonijiet; interruzzjonijiet pendenti, jekk ikun hemm, imbagħad jeżegwixxu. L-interruzzjonijiet tal-maskra temporanjament għandhom isiru biss meta l-itwal passaġġ mit-taqsima kritika jkun iqsar mill-latency massima mixtieqa ta 'interruzzjoni. Tipikament dan il-metodu ta 'protezzjoni jintuża biss meta s-sezzjoni kritika hija biss ftit istruzzjonijiet u ma jkollhiex linji. Dan il-metodu huwa ideali għall-protezzjoni ta 'reġistri tal-hardware bit-mapped meta l-bits huma kkontrollati minn kompiti differenti.


Mutexes

Meta r-riżorsa kondiviża trid tkun riżervata mingħajr ma jiġu mblukkati l-kompiti l-oħra kollha (bħalma huma l-istennija biex tinkiteb il-memorja Flash), huwa aħjar li tuża mekkaniżmi disponibbli wkoll fuq sistemi operattivi għal skopijiet ġenerali, bħal mutex u messaġġi interproċessi sorveljati mill-OS. Mekkaniżmi bħal dawn jinvolvu sejħiet tas-sistema, u ġeneralment jinvokaw il-kodiċi tad-dispatcher tal-OS mal-ħruġ, u għalhekk huma tipikament jieħdu mijiet ta 'struzzjonijiet CPU biex jeżegwixxu, filwaqt li l-maskra tal-interruzzjonijiet tista' tieħu ftit mill-istruzzjoni waħda fuq xi proċessuri.


Mutex (mhux rikursiv) huwa msakkar jew jinfetaħ. Meta kompitu jkun illokkja l-mutex, il-kompiti l-oħra kollha għandhom jistennew li l-mutex jinfetaħ mis-sid tiegħu - il-ħajt oriġinali. Kompitu jista 'jistipula timeout meta jistenna għal mutex. Hemm bosta problemi magħrufa sewwa b'disinni bbażati fuq il-mutex bħal ma huma l-inverżjoni tal-prijorità u l-imblukkar.


B'inverżjoni ta 'prijorità kompitu ta' prijorità għolja jistenna minħabba li kompitu ta 'prijorità baxxa għandu mutex, iżda l-kompitu ta' prijorità aktar baxxa ma jingħatax ħin tas-CPU biex itemm ix-xogħol tiegħu. Soluzzjoni tipika hija li l-kompitu li jkollu mutex fi, jew 'jirtu', il-prijorità tal-ogħla kompitu ta 'stennija. Iżda dan l-approċċ sempliċi jsir aktar kumpless meta jkun hemm livelli multipli ta 'stennija: il-kompitu A jistenna mutex imsakkar mill-kompitu B, li jistenna mutex maqful mill-kompitu C. L-immaniġġjar ta' livelli multipli ta 'wirt jikkawża kodiċi ieħor f'kuntest ta' prijorità għolja u għalhekk jista ’jikkawża ġuħ ta’ ħjut ta ’prijorità medja.


Fi żblokk, żewġ kompiti jew aktar jissakkru l-mutex mingħajr timeouts u mbagħad jistennew dejjem il-mutex tal-kompitu l-ieħor, u joħolqu dipendenza ċiklika. L-aktar xenarju ta 'mblukkar eqreb iseħħ meta żewġ kompiti alternattivament jillokkjaw żewġ mutex, iżda fl-ordni opposta. L-imblokk huwa evitat b'disinn bir-reqqa.


Jgħaddi messaġġ

L-approċċ l-ieħor għall-kondiviżjoni tar-riżorsi huwa għal kompiti li jibagħtu messaġġi fi skema organizzata li tgħaddi l-messaġġi. F'din il-paradigma, ir-riżorsa hija ġestita direttament minn kompitu wieħed biss. Meta kompitu ieħor irid jinterroga jew jimmanipula r-riżorsa, jibgħat messaġġ lill-kompitu ta 'tmexxija. Għalkemm l-imġiba tagħhom fil-ħin reali hija inqas iqarmeċ mis-sistemi semafori, is-sistemi sempliċi bbażati fuq il-messaġġi jevitaw il-biċċa l-kbira tal-perikli ta 'xkiel għall-protokoll, u ġeneralment huma jaġixxu aħjar mis-sistemi semafori. Madankollu, problemi bħal dawk tas-semafori huma possibbli. L-inverżjoni tal-prijorità tista 'sseħħ meta kompitu jkun qed jaħdem fuq messaġġ ta' prijorità baxxa u jinjora messaġġ ta 'prijorità ogħla (jew messaġġ li joriġina indirettament minn kompitu ta' prijorità għolja) fil-kju tal-messaġġ li jkun dieħel. L-imblukkar tal-protokoll jistgħu jseħħu meta żewġ kompiti jew aktar jistennew lil xulxin biex jibagħtu messaġġi ta 'rispons.