info@panadisplay.com
Operativni sustav u stvarnom vremenu Komunikacija u interakciji i dijeljenje resursa

Operativni sustav u stvarnom vremenu Komunikacija u interakciji i dijeljenje resursa

Mar 08, 2019

Multitasking operativni sustav kao što je Unix je loš u zadacima u stvarnom vremenu. Planer daje najviši prioritet zadacima s najnižom potražnjom na računalu, tako da ne postoji način da se osigura da posao koji je kritičan za vrijeme ima pristup dovoljno resursa. Sustavi za više zadataka moraju upravljati dijeljenjem podataka i hardverskih resursa između više zadataka. Obično je nesigurno za dva zadatka istovremeno pristupiti istim specifičnim podacima ili hardverskom resursu. Postoje tri uobičajena pristupa rješavanju ovog problema:


Privremeno maskiranje / onemogućavanje prekida

Operativni sustavi opće namjene obično ne dopuštaju korisničkim programima da maskiraju (onemogućuju) prekide, jer korisnički program može kontrolirati CPU onoliko dugo koliko želi. Neki suvremeni CPU-ovi ne dozvoljavaju kodu korisničkog načina za onemogućavanje prekida jer se takva kontrola smatra ključnim resursom operativnog sustava. Mnogi ugrađeni sustavi i RTOS-ovi, međutim, dopuštaju samoj aplikaciji da radi u kernel modu za veću učinkovitost poziva sustava te da dopusti aplikaciji da ima veću kontrolu nad radnim okruženjem bez potrebe za intervencijom OS-a.


Na sustavima s jednim procesorom, aplikacija koja se izvodi u načinu rada jezgre i prekidima maskiranja je metoda s najnižim troškovima kako bi se spriječio simultani pristup dijeljenom resursu. Dok su prekidi maskirani i trenutni zadatak ne čini blokiranje OS poziva, trenutni zadatak ima isključivo korištenje CPU-a jer niti jedan drugi zadatak ili prekid ne može preuzeti kontrolu, pa je kritična sekcija zaštićena. Kada zadatak izađe iz kritičnog dijela, on mora demaskirati prekide; Prekidi na čekanju, ako ih ima, tada će se izvršiti. Privremeno maskiranje prekida treba obavljati samo ako je najdulji put kroz kritični dio kraći od željene maksimalne latencije prekida. Obično se ova metoda zaštite koristi samo kada je kritična sekcija samo nekoliko uputa i ne sadrži petlje. Ova metoda je idealna za zaštitu hardverskih bit-mapiranih registara kada se bitovi kontroliraju različitim zadacima.


Mutexes

Kada se zajednički resurs mora rezervirati bez blokiranja svih drugih zadataka (kao što je čekanje na pisanje Flash memorije), bolje je koristiti mehanizme koji su također dostupni na operacijskim sustavima opće namjene, kao što su mutex i interprocess poruke s nadzorom OS. Takvi mehanizmi uključuju sistemske pozive i obično pozivaju OS-ov dispečerski kôd na izlazu, tako da obično zahtijevaju stotine CPU-ovih uputa za izvršavanje, dok maskiranje prekida može potrajati samo nekoliko instrukcija na nekim procesorima.


(Ne rekurzivni) mutex je ili zaključan ili otključan. Kada je zadatak zaključao mutex, svi drugi zadaci moraju čekati da se njegov mutex otključa - njegov izvornik. Zadatak može postaviti timeout na čekanje za mutex. Postoji nekoliko dobro poznatih problema s nacrtima koji se temelje na mutexu, kao što su inverzija prioriteta i zastoji.


U inverziji prioriteta zadatak visokog prioriteta čeka jer zadatak niskog prioriteta ima mutex, ali zadatku nižeg prioriteta ne daje CPU vrijeme da dovrši svoj rad. Tipično rješenje je imati zadatak koji posjeduje mutex na ili "naslijediti" prioritet zadatka koji najviše čeka. Ali ovaj jednostavan pristup postaje složeniji kada postoji više razina čekanja: zadatak A čeka mutex zaključan zadatkom B, koji čeka mutex zaključan zadatkom C. Rukovanje s više razina nasljeđivanja uzrokuje pokretanje drugog koda u kontekstu visokog prioriteta i stoga može uzrokovati izgladnjivanje niti srednjeg prioriteta.


U zastoju, dva ili više zadataka zaključavaju mutex bez vremenskih ograničenja, a zatim zauvijek čekaju mutex drugog zadatka, stvarajući cikličku ovisnost. Najjednostavniji scenarij zastoja javlja se kada dva zadatka naizmjenično zaključavaju dva mutexa, ali u suprotnom redoslijedu. Zastoj je spriječen pažljivim dizajnom.


Prijenos poruke

Drugi pristup dijeljenju resursa je da zadaci šalju poruke u shemi organiziranog slanja poruka. U ovoj se paradigmi resursom upravlja samo jednim zadatkom. Kada drugi zadatak želi ispitati ili manipulirati resursom, on šalje poruku zadatku upravljanja. Iako je njihovo ponašanje u stvarnom vremenu manje oštro nego sustavi semafora, jednostavni sustavi temeljeni na porukama izbjegavaju većinu opasnosti od zastoja protokola i općenito se bolje ponašaju nego sustavi semafora. Međutim, problemi poput onih iz semafora su mogući. Inverzija prioriteta može se pojaviti kada zadatak radi na poruci niskog prioriteta i zanemaruje poruku višeg prioriteta (ili poruku koja potječe neizravno od zadatka visokog prioriteta) u svom dolaznom redu poruka. Blokada protokola može se pojaviti kada dva ili više zadataka čekaju jedni druge na slanje odgovora.