Operativni sistemi za rad u realnom vremenu Real

  • Slides: 62
Download presentation
„Operativni sistemi za rad u realnom vremenu“ (Real Time OS - RTOS)

„Operativni sistemi za rad u realnom vremenu“ (Real Time OS - RTOS)

Definicija RTOS-a Real Time Operating System (RTOS) je program koji upravlja izvršavanjem procesa sa

Definicija RTOS-a Real Time Operating System (RTOS) je program koji upravlja izvršavanjem procesa sa stanovišta vremena, upravlja sistemskim resursima i omogućava konzistentan interfejs za razvoj aplikacija Kod aplikacije razvijen u okviru RTOS-a može biti različite složenosti i strukture: od jednostavnih aplikacija koje upravljaju ulazno-izlaznim portovima do složenih aplikacija sa zahtevnom obradom signala i ogromnim zahtevima za sistemskim resursima

Definicija RTOS-a Uloga operativnog sistema je u takvim slučajevima ključna: oni moraju da budu

Definicija RTOS-a Uloga operativnog sistema je u takvim slučajevima ključna: oni moraju da budu skalabilni u cilju zadovoljavanja različitih zahteva postavljenih pred njih Svaki RTOS mora da sadrži kernel, jezgro operativnog sistema, koje obuhvata, u minimalnoj varijanti, barem algoritme za dodeljivanje vremena (planiranje, scheduling), upravljanje resursima i vršenje kontrolne logike

Definicija RTOS-a U nekim aplikacijama, RTOS se sastoji samo od kernela Sa druge strane

Definicija RTOS-a U nekim aplikacijama, RTOS se sastoji samo od kernela Sa druge strane RTOS može biti kombinacija više relativno složenih modula osim kernela, koji su zaduženi za fajl sistem, implementaciju mrežnog protokol steka i ostalih komponenti neophodnih za određenu aplikaciju

Definicija RTOS-a

Definicija RTOS-a

Struktura kernela Planer (scheduler) je zadužen da obezbedi skup algoritama koji određuju koji proces

Struktura kernela Planer (scheduler) je zadužen da obezbedi skup algoritama koji određuju koji proces je aktivan u kom vremenskom trenutku. Neki tipični primeri algoritama koji se koriste za planiranje raspodele procesorskog vremena su preemptive scheduling i round - robin scheduling Objekti su specijalne kernel strukture koje omogućavaju razvoj aplikacija za embedded sisteme u realnom vremenu. Tipični kernel objekti su semafori, procesi i redovi poruka (message queues)

Struktura kernela Servisi predstavljaju operacije koje kernel izvršava na objektima, operacije kao što su

Struktura kernela Servisi predstavljaju operacije koje kernel izvršava na objektima, operacije kao što su informacije o vremenu (system tick), manipulisanje prekidima, raspodela resursa, itd.

Struktura kernela

Struktura kernela

Planer je najosnovniji blok unutar svakog RTOS-a On obezbeđuje algoritme koji određuju koji proces

Planer je najosnovniji blok unutar svakog RTOS-a On obezbeđuje algoritme koji određuju koji proces se izvršava u kom vremenskom intervalu U cilju razumevanje rada planera neophodno je opisati: rasporedive entitete multitasking zamenu konteksta (context switching) dispečer algoritme za planiranje procesorskog vremena

Rasporedivi entiteti (schedulable entities) su kernel objekti koji su ravnopravni sa stanovišta planera u

Rasporedivi entiteti (schedulable entities) su kernel objekti koji su ravnopravni sa stanovišta planera u pogledu dodele vremenskih resursa, a sve u skladu sa predefinisanim algoritmom dodeljivanja istih Primeri ovih entiteta su zadaci (tasks) i procesi koji se uglavnom mogu pronaći kao sastavni deo većine kernela Zadatak je nezavisna nit (thread) koja se izvršava i koja se sastoji od nezavisne sekvence instrukcija

Rasporedivi entiteti Određeni kerneli predstavljaju različit entitet koji se zove proces Procesi su slični

Rasporedivi entiteti Određeni kerneli predstavljaju različit entitet koji se zove proces Procesi su slični zadacima sa stanovišta činjenice da ravnopravno i nezavisno konkurišu za dodelu procesorskog vremena Ipak, procesi se razlikuju od zadataka jer, generalno, omogućavaju bolje mehanizme zaštite memorije, po cenu degradacije performansi

Rasporedivi entiteti U nastavku predavanja, uprkos različitim karakteristikama procesa i zadataka, koristićemo termin proces

Rasporedivi entiteti U nastavku predavanja, uprkos različitim karakteristikama procesa i zadataka, koristićemo termin proces kao zajednički naziv i za zadatke i za procese Treba primetiti da semafori i redovi poruka nisu rasporedivi entiteti. Oni predstavljaju objekte zadužene za među-procesnu komunikaciju i sinhronizaciju. Postavlja se pitanje kako planer manipuliše više rasporedivih entiteta koji treba da se izvršavaju simultano? Odgovor je: multitasking.

Multitasking predstavlja sposobnost operativnog sistema da istovremeno manipuliše i kontroliše više aktivnosti pri čemu

Multitasking predstavlja sposobnost operativnog sistema da istovremeno manipuliše i kontroliše više aktivnosti pri čemu će svaka od njih biti izvršena u za to predviđenom vremenu Real-time kernel može sadržati više procesa koji se izvršavaju u paraleli U ovakvom scenariju multitasking omogućava izvršavanje više procesa koji se naizgled izvršavaju istovremeno

Multitasking Ipak, planer obezbeđuje da procesorsko vreme dobijaju naizmenično svi procesi koji učestvuju u

Multitasking Ipak, planer obezbeđuje da procesorsko vreme dobijaju naizmenično svi procesi koji učestvuju u multitasking izvršavanju, u skladu sa unapred određenim algoritmom Planer mora da obezbedi da odgovarajući proces počne sa izvršavanjem u adekvatnom trenutku Ovde je važno spomenuti da se procesi izvršavaju u skladu sa algoritmom za planiranje procesorskog vremena, dok se prekidne rutine izvršavaju nezavisno od toga

Multitasking Prekidne rutine (ISR) izvršavaju se u zavisnosti od hardverskih prekida i prioriteta u

Multitasking Prekidne rutine (ISR) izvršavaju se u zavisnosti od hardverskih prekida i prioriteta u kontekstu prekida, nezavisno od izvršavanja procesa Kako se povećava broj procesa koji se izvršavaju, povećavaju se i potrebe za performansama procesorskog jezgra (CPU core) Ovo je rezultat propagacije zamene konteksta prilikom promene procesa koji se izvršava u datom trenutku na datom procesorskom jezgru

Zamena konteksta Svaki proces koji se izvršava, ima svoj kontekst, koji predstavlja stanje CPU

Zamena konteksta Svaki proces koji se izvršava, ima svoj kontekst, koji predstavlja stanje CPU registara zahtevano svaki put kada je tom procesu dodeljen procesor i kada taj proces kreće sa izvršavanjem Zamena konteksta se dešava uvek kada planer menja proces koji će se izvršavati od strane procesora Potreba za zamenom konteksta je prikazana na sledećem slajdu

Zamena konteksta Prethodne instrukcije su podesile registre koji će se koristiti Proces će biti

Zamena konteksta Prethodne instrukcije su podesile registre koji će se koristiti Proces će biti suspendovan od strane ADD instrukcije. Kada proces nastavi sa radom, neposredno pre izvršavanja ADD instrukcija će biti prva instrukcija koja će se izvršiti. U operacije slučaju da ne sačuva registre Reg 1 i Reg 2, proces neće moći da zna da li je neki drugi proces u međuvremenu promenio ove registre

Zamena konteksta U slučaju da je potrebno izvršiti zamenu konteksta, kernel vrši niz operacija

Zamena konteksta U slučaju da je potrebno izvršiti zamenu konteksta, kernel vrši niz operacija koje će obezbediti da nakon zamene kontekta proces koji dobije procesorsko vreme ima na raspolaganju sve potrebne podatke Prilikom kreiranja svakog pojedinačnog procesa, kernel kreira i kasnije održava takozvani Process Control Block (ili PCB) PCB je sistemska struktura podataka koju kernel koristi da bi upravljao informacijama vezanim za svaki konkretan proces

Zamena konteksta Dok se proces izvršava, njegov kontekst se takođe dinamički osvežava, što je

Zamena konteksta Dok se proces izvršava, njegov kontekst se takođe dinamički osvežava, što je omogućeno dinamičkim osvežavanjem odgovarajućeg PCB-a Kada se proces ne izvršava, njegov kontekst je “zamrznut” u okviru PCB-a, kako bi se mogao restaurirati sledeći put kada proces opet bude aktiviran Tipičan scenario prilikom zamene konteksta je prikazan na sledećem slajdu

Zamena konteksta 1) Kernel čuva kontekst procesa 1 u okviru njegovog PCB-a 1) Kernel

Zamena konteksta 1) Kernel čuva kontekst procesa 1 u okviru njegovog PCB-a 1) Kernel učitava kontekst procesa 2 iz odgovarajuće PCB-a, koji postaje proces koji će sledeći da se izvršava 1) Kontekst procesa 1 je zamrznut dok se proces 2 izvršava, ali ukoliko planer odluči da ponovo aktivira proces 1, on će nastaviti tamo gde je stao prilikom prethodnog zaustavljanja od strane kernela, neposredno pre nego što se desila zamena konteksta

Zamena konteksta Vreme koje je potrebno da bi planer izvršio zamenu procesa, uglavnom ne

Zamena konteksta Vreme koje je potrebno da bi planer izvršio zamenu procesa, uglavnom ne predstavlja problem sa stanovišta izvršavanja svakog od procesa Ipak, u slučajevima kada se zamena konteksta vrši veoma često, pogotovo u aplikacijama koje su izuzetno vremenski zahtevne, zamene konteksta mogu rezultirati u ozbiljnijem narušavanju performansi sistema Dakle, aplikacija uvek treba da se dizajnira tako da se minimizuje broj zamena konteksta, ukoliko je tako nešto moguće

Zamena konteksta Svaki put kada aplikacija izvrši sistemski poziv, planer ima mogućnost da odluči

Zamena konteksta Svaki put kada aplikacija izvrši sistemski poziv, planer ima mogućnost da odluči da li je neophodno izvršiti zamenu konteksta Kada planer odluči da je neophodna zamena konteksta, on se oslanja na modul koji se naziva dispečer i koji je zadužen za izvršavanje same akcije zamene konteksta

Dispečer je modul koji je usko povezan sa planerom i on je zadužen za

Dispečer je modul koji je usko povezan sa planerom i on je zadužen za zamenu konteksta i kontrolu toka izvršavanja aplikacije U bilo kojem trenutku rada RTOS-a, tok izvršavanja aplikacije, takođe poznat i kao flow control, prolazi kroz jedno od tri stanja: aplikacija, ISR ili kernel U trenutku kada proces ili ISR vrši sistemski poziv, kontrola toka izvršavanja se prepušta kernelu kako bi se izvršila jedna od sistemskih rutina u skladu sa sistemskim pozivom

Dispečer U trenutku napuštanja kernela, dispečer ima ulogu da odluči kojem procesu (u okviru

Dispečer U trenutku napuštanja kernela, dispečer ima ulogu da odluči kojem procesu (u okviru aplikacije) će biti prepuštena kontrola nad procesorom Nije neophodno da se kontrola vrati procesu koji je pozvao sistemski poziv Algoritam za raspodelu procesorskog vremena ima ulogu da odluči koji će proces sledeći da se izvršava, dok je dispečer zadužen za samu zamenu konteksta i prepuštanje kontrole nad CPU-om

Dispečer U zavisnosti od toga kako se pozvao kernel, dispečer može preduzeti različite akcije

Dispečer U zavisnosti od toga kako se pozvao kernel, dispečer može preduzeti različite akcije Kada je kernel kod pokrenut na zahtev procesa koji je izvršio sistemski poziv, dispečer se koristi za napuštanje kernela svaki put kada se sistemski poziv završi U ovom scenariju dispečer se koristi na takozvanoj call -to-call bazi tako da može da koordinira stanjima procesa i tranzicijama stanja kao posledicama sistemskog poziva koji se upravo izvršio (na primer, jedan ili više procesa su možda postali spremni za izvršavanje)

Dispečer Sa druge strane, ukoliko je ISR izvršila sistemski poziv, izvršavanje dispečera se odlaže

Dispečer Sa druge strane, ukoliko je ISR izvršila sistemski poziv, izvršavanje dispečera se odlaže dok ISR u potpunosti ne završi svoje izvršavanje Ovo važi i u slučaju da se npr. oslobodio neki od resursa koji bi inače izazvao aktiviranje određenog procesa i zamenu konteksta Ipak, ovakva zamena konteksta se ne dešava jer ISR mora završiti svoje izvršavanje bez prekida od stane nekog od procesa Tek kada se ISR završi, kernel prepušta kontrolu dispečeru koji odlučuje kom procesu prepustiti kontrolu nad procesorom

Algoritmi za planiranje procesorskog vremena Kao što je pomenuto ranije, planer i dispečer odlučuju

Algoritmi za planiranje procesorskog vremena Kao što je pomenuto ranije, planer i dispečer odlučuju koji će se proces sledeći izvršavati kao rezultat algoritma koji donosi tu odluku (takođe poznato i kao scheduling policy) Većina savremenih kernela podržava dva standardna algoritma: prioritetno planiranje sa prekidima (preemptive scheduling) kooperativno planiranje (round-robin scheduling) U nekim slučajevima korisnici mogu kreirati svoje algoritme

Prioritetno planiranje sa prekidima Većina real-time operativnih sistema koristi ovaj algoritam podrazumevano Proces koji

Prioritetno planiranje sa prekidima Većina real-time operativnih sistema koristi ovaj algoritam podrazumevano Proces koji će se sledeći izvršavati je proces sa najvećim prioritetom u poređenju sa svim ostalim procesima koji su spremni za izvršavanje RTOS generalno podržava 256 nivoa prioriteta pri čemu je 0 najveći a 255 najniži Neki kerneli definišu obrnuto označavanje nivoa prioriteta (inverzno) pri čemu procesi sa prioritetom 255 imaju najviši a sa prioritetom 0 najniži prioritet, što svakako ne menja logiku i mehanizam ovog algoritma

Prioritetno planiranje sa prekidima Ovim algoritmom, svaki proces ima prioritet i onaj koji ima

Prioritetno planiranje sa prekidima Ovim algoritmom, svaki proces ima prioritet i onaj koji ima najviši prioritet će se izvršavati sledeći Ukoliko proces sa višim prioritetom postane spreman za izvršavanje, dok se izvršava proces sa nižim prioritetom, kernel momentalno čuva kontekst procesa koji se trenutno izvršava u njegovom PCB-u, vrši zamenu konteksta i prepušta kontrolu nad CPU-om procesu sa višim prioritetom

Prioritetno planiranje sa prekidima proces 1 je prekinut od strane procesa 2 sa višim

Prioritetno planiranje sa prekidima proces 1 je prekinut od strane procesa 2 sa višim prioritetom, a nakon toga je opet proces 2 prekinut od strane procesa sa prioritetom višim od njega Kada se proces 3 završi, proces 2 nastavlja sa svojim izvršavanjem, a na sličan način, čim se proces 2 završi, proces 1 nastavlja da se izvršava, sve dok ne završi ili ponovo ne bude prekinut od strane nekog procesa sa višim prioritetom

Prioritetno planiranje sa prekidima Iako se prioritet procesa dodeljuje prilikom njihovog kreiranja, prioritet procesa

Prioritetno planiranje sa prekidima Iako se prioritet procesa dodeljuje prilikom njihovog kreiranja, prioritet procesa može biti promenjen dinamički korišćenjem sistemskih poziva omogućenih od strane kernela Mogućnost dinamičke promene prioriteta svakog od procesa takođe omogućava embedded sistemu fleksibilnost sa stanovišta eksternih događaja i trenutaka kada se oni pojavljuju Kao rezultat, moguće je dizajnirati istinski real-time sistem

Prioritetno planiranje sa prekidima Ipak, treba imati na umu da se pogrešnim korišćenjem ovih

Prioritetno planiranje sa prekidima Ipak, treba imati na umu da se pogrešnim korišćenjem ovih mogućnosti dinamičke promene prioriteta procesa , mogu izazvati ozbiljni problemi kao što su inverzija prioriteta (o kojoj će biti više reči kasnije), mrtve petlje i greške koje vode ka neminovnoj nestabilnosti i eventualnom padu sistema u celini Problem ovog algoritma leži u činjenici da se procesi sa nižim prioritetom možda nikada neće izvršiti i ovaj problem je poznato kao problem izgladnjivanja (starvation problem). Problem se rešava pomoću modifikacije algoritma po zastarevanju (Aging) kojom se prioriteti procesa menjaju proticanjem vremena

Ko-operativno planiranje obezbeđuje jednako trajanje procesa i jednaku raspodelu CPU vremena U svojoj originalnoj

Ko-operativno planiranje obezbeđuje jednako trajanje procesa i jednaku raspodelu CPU vremena U svojoj originalnoj formi ovakvo planiranje ne može zadovoljiti real-time zahteve jer kod sistema u realnom vremenu, obavljanje procesa se vrši u skladu sa prioritetima istih (koji su često i promenljivi) Umesto toga, prioritetno raspoređivanje sa prekidima može biti korišćeno zajedno sa ko-operativnim pristupom u smislu da se ravnopravna raspodela CPU vremena vrši između procesa istog prioriteta, dok se oni višeg prioriteta izvršavaju u “prekidnom” maniru

Ko-operativno planiranje Raspodelom vremena, svaki proces se izvršava tokom intervala predefinisanog trajanja Tajmer prati

Ko-operativno planiranje Raspodelom vremena, svaki proces se izvršava tokom intervala predefinisanog trajanja Tajmer prati trajanje vremenskog slota za svaki od procesa, inkrementirajući vrednost nakon svakog takta kloka Onog trenutka kada vreme istekne za određeni proces, njegov tajmer se briše, i taj procesa se stavlja na kraj reda čekanja Takođe, naknadno dodati procesi se uvek dodaju na kraj reda, sa dodeljenim tajmerima inicijalizovanim na nulu

Ko-operativno planiranje Ukoliko je neki proces u round-robin maniru prekinut od strane procesa sa

Ko-operativno planiranje Ukoliko je neki proces u round-robin maniru prekinut od strane procesa sa višim prioritetom, njegov tajmer za merenje vremena izvršavanja se pamti i njegova vrednost se ponovo restaurira kada je prekinuti proces ponovo određen za izvršavanje Na sledećem slajdu se vidi kako je proces 1 prekinut od strane procesa 4 višeg prioriteta, ali proces 1 nastavlja tamo gde je stao kada za to dođe vreme (kada proces 4 završi izvršavanje)

Ko-operativno planiranje u kombinaciji sa prekidanjem po prioritetu

Ko-operativno planiranje u kombinaciji sa prekidanjem po prioritetu

FCFS planiranje First Come First Serve (FCFS) planiranje, kao što mu samo ime kaže,

FCFS planiranje First Come First Serve (FCFS) planiranje, kao što mu samo ime kaže, favorizuje procese u skladu sa tim kada postaju spremni za izvršavanje Na primeru tri procesa, sa trajanjima P 1 – 24 P 2 – 3 P 3 – 3 Ukoliko se najpre izvršava P 1, pa P 2 i na kraju P 3, prosečno vreme čekanja PVČ = (0+24+27)/3=17 Ukoliko se najpre izvršava P 2, pa P 3 i na kraju P 1, prosečno vreme čekanja je PVČ=(0+3+6)/3=9

FCFS planiranje Efekat koji je zapažen u ovom slučaju se naziva konvoj efekat (Convoy

FCFS planiranje Efekat koji je zapažen u ovom slučaju se naziva konvoj efekat (Convoy effect) i nastaje kada se kratak proces izvršava nakon što se duži procesi izvrše Očigledno ovakav, nemodifikovan, FCFS algoritam ne može da se koristi u embedded real-time sistemima

SJB planiranje SJB je skraćeno od Shortest Job First planiranje Bazira se na pristupu

SJB planiranje SJB je skraćeno od Shortest Job First planiranje Bazira se na pristupu gde se svakom procesu dodeli vreme neophodno da bi se on izvršio Ovo trajanje se koristi prilikom određivanja koji će se proces sledeći izvršavati, pri čemu će biti privilegovan proces sa najkraćim trajanjem

SJB planiranje Postoje dva pristupa u ovom algoritmu: 1) neprekidajući (non preemptive): proces kome

SJB planiranje Postoje dva pristupa u ovom algoritmu: 1) neprekidajući (non preemptive): proces kome je jednom dodeljeno procesorsko vreme ne može biti prekinut sve dok se kompletan proces ne završi 2) prekidajući: ukoliko se pojavi novi proces sa trajanjem kraćim od preostalog trajanja proces koji se izvršava, prekini proces koji se izvršava, u suprotnom proces nastavlja da se izvršava do samog završetka. Ova shema je poznata kao Shortest Remaining Time First (SRTF) i ovakav pristup je optimalan jer uvek daje najkraće srednje vreme čekanja za dati skup procesa

SJB planiranje Primer: Proces P 1 P 2 P 3 P 4 Ready 0.

SJB planiranje Primer: Proces P 1 P 2 P 3 P 4 Ready 0. 0 2. 0 4. 0 5. 0 Duration 7 4 1 4 SJB (neprekidajući) -> PVČ = [0 + (8 -2) + (7 -4) + (12 -5)]/4=4 P 1 P 3 0 7 P 2 P 4 8 12 16 SJB (prekidajući) -> PVČ = [9 + 1 + 0 + 2]/4=3 P 1 0 P 2 2 P 3 4 P 2 5 P 4 7 P 1 11 16

Planiranje u višestrukom redu Red procesa koji su spremni za izvršavanje (ready) se deli

Planiranje u višestrukom redu Red procesa koji su spremni za izvršavanje (ready) se deli na nekoliko nezavisnih redova, npr foreground, background, . . . Svaki red ima svoj algoritam planiranja, npr. foreground-robin, background FCFS, . . . Ostaje problem što opet treba razrašiti planiranje između redova i ovo se može uraditi kao: fiksan prioritet redova: usluži sve iz foreground reda, a zatim pređi na background (Problem: starvation) Time slice: svaki red dobija vremenski slot u kome radi po unapredefinisanom algoritmu, npr: 80% foreground RR, 20% background FCFS, . . .

Dinamičko planiranje u višestrukom redu Proces može da menja poziciju u različitim redovima: aging

Dinamičko planiranje u višestrukom redu Proces može da menja poziciju u različitim redovima: aging može biti implementiran na ovaj način Dinamičko planiranje u višestrukom redu je definisano pomoću sledećih parametara: broj redova algoritam planiranja za svaki od redova metod na osnovu koga se odlučuje kada da se proces prebaci u red “iznad” metod na osnovu koga se odlučuje kada da se proces prebaci u red “ispod” metod na osnovu koga se odlučuje u koji red se smešta proces koji treba da se opsluži (inicijalno)

Planiranje krajnjeg roka (Deadline scheduling) Ovakav pristup se bazira na činjenici da real-time aplikacije

Planiranje krajnjeg roka (Deadline scheduling) Ovakav pristup se bazira na činjenici da real-time aplikacije nisu fokusirane na brzinu, već na izvršenje određenih zadataka u predviđenom roku U ovom scenariju, planer dobija informacije o krajnjem roku za svaki od procesa Planer će u ovom slučaju obezbediti da će određeni proces krenuti sa izvršavanjem ukoliko je ugrožen krajnji rok njegovog izvršenja, tako što će biti prekinuti procesi koji inače imaju viši prioritet od njega

Algoritam za planiranje monotonom stopom Koristi fiksiran prioritet za svaki od procesa baziran na

Algoritam za planiranje monotonom stopom Koristi fiksiran prioritet za svaki od procesa baziran na njegovom periodu izvršavanja Najviši prioritet ima proces sa najkraćim periodom Prekida se svaki proces izvršavanjem procesa sa višim prioritetom Prednost je jednostavna implementacija, relativno malo “dodatne” implementacije (system overhead) Mana je činjenica da se zahteva statička prioritizacija pre nego što krene da se izvršava, što nije jednostavno ustanoviti

EDF (Earliest deadline first) planiranje Koristi dinamičko planiranje sa prioritetima Najveći prioritet je dodeljen

EDF (Earliest deadline first) planiranje Koristi dinamičko planiranje sa prioritetima Najveći prioritet je dodeljen procesu sa najbližim krajnjim rokom, pri čemu se koristi prekidanje izvršavanja ostalih Teoretski je superioran u odnosu na algoritam za planiranje sa monotonom stopom i garantuje raspoređivanje za opterećenje procesora od 100% i manje Mane su: složenija implementacija, više “dodatne” implementacije, ponašanje preopterećenog sistema je nepredvidivo, ne garantuje se da će procesi višeg prioriteta biti izvršeni pre krajnjeg roka

EDF (Earliest deadline first) planiranje Primer (T-perioda, C-trajanje izvršenja): T 1=50, C 1=25, T

EDF (Earliest deadline first) planiranje Primer (T-perioda, C-trajanje izvršenja): T 1=50, C 1=25, T 2=62. 5, C 2=10, T 3=125, C 3=25

LLFT (Least Laxity Time First) planiranje Koristi dinamičko dodeljivanje prioriteta Najviši prioritet ide najmanje

LLFT (Least Laxity Time First) planiranje Koristi dinamičko dodeljivanje prioriteta Najviši prioritet ide najmanje relaksiranom procesu, pri čemu se relaksiranost procesa L meri sa L = Td - Tre Gde je Td trenutak isteka krajnjeg roka, a Tre preostalo vreme potrebno da bi se proces završio Za razliku od prošlog algoritma, uzima u obzir ne samo krajnji rok, već i preostalo vreme potrebno da se proces završi

LLFT (Least Laxity Time First) planiranje Primer: T 1=50, C 1=25, T 2=62. 5,

LLFT (Least Laxity Time First) planiranje Primer: T 1=50, C 1=25, T 2=62. 5, C 2=10, T 3=125, C 3=25

MLLF (Modified Least Laxity First) planiranje LLF algoritam je nepraktičan za implementaciju jer u

MLLF (Modified Least Laxity First) planiranje LLF algoritam je nepraktičan za implementaciju jer u situacijama kada postoji “jednaka relaksiranost” dva ili više procesa vodi ka čestim zamenama konteksta i, globalno, znatnom opadanju performansi sistema MLLF algoritam rešava ovaj problem tako što smanjuje broj zamena konteksta Sve dok nema “jednake relaksiranosti” radi kao LLF U trenutku kada se izjednače relaksiranosti dva ili više procesa, proces koji se trenutno izvršava nastavlja da se izvršava sve dok nije ugrožen krajnji rok ostalih procesa

MLLF (Modified Least Laxity First) planiranje Na ovaj način MLLF odlaže zamenu konteksta sve

MLLF (Modified Least Laxity First) planiranje Na ovaj način MLLF odlaže zamenu konteksta sve dok to nije neophodno i potpuno je bezbedan čak i u situacijama kada nastane “izjednačena relaksiranost” procesa Ovaj algoritam dozvoljava inverziju relaksiranosti, pri kojoj proces sa najmanjom relaksiranošću ne mora trenutno biti odabran za izvršavanje Na sledećem slajdu je prikazano kako se ovaj algoritam ponaša u situacijama kada dođe do “izjednačavanja relaksiranosti” procesa

MLLF (Modified Least Laxity First) planiranje

MLLF (Modified Least Laxity First) planiranje

MUF (Maximum Urgency First) planiranje Definiše skup kritičnih procesa za koje se garantuje da

MUF (Maximum Urgency First) planiranje Definiše skup kritičnih procesa za koje se garantuje da će stići da se izvrše pre krajnjeg roka, čak i tokom prelaznog perioda u kojem je procesor “preopterećen” Ovaj algoritam je mešavina LL algoritma, u kombinaciji sa tradicionalnim prioritetnim planiranjem sa prekidima U okviru ovog algoritma se kombinuje prednost fiksnog i dinamičkog planiranja kako bi se obezbedila funkcionalnost dinamičkog sistema sa fleksibilnom raspodelom vremena

MUF (Maximum Urgency First) planiranje Kako algoritam radi: Svakom procesu je dodeljena tzv. Urgentnost

MUF (Maximum Urgency First) planiranje Kako algoritam radi: Svakom procesu je dodeljena tzv. Urgentnost Kombinacija dva fiksna prioriteta (prioritet kritičnosti i korisnički definisan prioritet) zajedno sa dinamičkim prioritetom koji je obrnuto proporcionalan relaksiranosti procesa Prioritet kritičnosti ima prednost u odnosu na dinamički prioritet, dok dinamički prioritet ima prednost u odnosu na korisnički definisan prioritet Nedostatak: planiranje se ponavlja uvek kada proces dostigne u red spremnih procesa (ready queue), što može prouzrokovati situaciju u kojoj neki od kritičnih procesa neće biti izvršen u predviđenom intervalu, određenom njegovim krajnjim rokom

MUF (Maximum Urgency First) planiranje Algoritam se izvršava u dve faze: Prva faza podrazumeva

MUF (Maximum Urgency First) planiranje Algoritam se izvršava u dve faze: Prva faza podrazumeva dodeljivanje statičkih prioriteta svakom od procesa (jednom dodeljeni neće se menjati) Druga faza uzima u obzir ponašanje sistema tokom izvršavanja, na način koji će biti objašnjen sa više detalja

MUF (Maximum Urgency First) planiranje Prva faza obuhvata: Sortiranje procesa od onih sa najkraćim

MUF (Maximum Urgency First) planiranje Prva faza obuhvata: Sortiranje procesa od onih sa najkraćim periodom ka onima ka najdužim periodom ponavljanja. Prvih N procesa se definišu kao kritičan skup (pri čemu njihovo opterećenje procesora neće biti veće od 100%). Za ove procese je garantovano da će biti izvršeni na vreme čak i ukoliko postoji prelazno “prekoopterećenje” procesora 2. Elementi iz kritičnog skupa se proglašavaju kao kritični, dok se svi ostali procesi smatraju ne-kritičnim 3. Svakom procesu u okviru sistema može biti dodeljen opciono jedinstven korisnički definisan prioritet 1.

MUF (Maximum Urgency First) planiranje U drugoj fazi MUF koristi sledeći algoritam da odredi

MUF (Maximum Urgency First) planiranje U drugoj fazi MUF koristi sledeći algoritam da odredi proces koji će se izvršavati od strane procesora (ovaj algoritam se izvršava uvek kada novi proces stigne u red spremnih procesa): Ukoliko postoji samo jedan kritičan proces, uzmi njega 2. Ukoliko postoji više od jednog kritičnog procesa, odaberi onaj sa najvećim dinamičkim prioritetom (najveći dinamički prioritet će imati najmanje relaksiran proces) 3. Ukoliko postoji više procesa sa istom relaksiranošću, odaberi onaj koji ima viši korisnički definisan prioritet 1.

MUF (Maximum Urgency First) planiranje Primer: Proces Preostalo vreme izvršavanja Krajnji rok Relaksiranost P

MUF (Maximum Urgency First) planiranje Primer: Proces Preostalo vreme izvršavanja Krajnji rok Relaksiranost P 1 4 6 2 P 2 1 4 3 Pod pretpostavkom da se oba procesa nalaze u skupu kritičnih, MUF će selektovati P 1 usled činjenice da je on manje relaksiran Obzirom na činjenicu da je vreme izvršavanja P 1 duže od relaksiranosti P 2, ovakva selekcija će dovesti do situacije u kojoj P 2 neće biti izvršen u predviđenom roku

MMUF (Modified. Maximum Urgency First) planiranje Napomenuli smo da je nedostatak MUF algoritma taj

MMUF (Modified. Maximum Urgency First) planiranje Napomenuli smo da je nedostatak MUF algoritma taj što se ponovno planiranje rasporeda izvršavanja procesa vrši SVAKI put kada novi proces stigne u red spremnih procesa (tj. procesa koji su spremni za izvršavanje) Kao rezultat ovoga, može se desiti da jedan od kritičnih procesa ne uspe da se izvrši u predviđenom vremenu (promaši krajnji rok) MMUF je algoritam sa mešovitim prioritetima i prekidanjem koji omogućava planiranje periodičnih realtime procesa

MMUF (Modified. Maximum Urgency First) planiranje U MMUF algoritmu: Koristi se jedinstven parametar značajnosti,

MMUF (Modified. Maximum Urgency First) planiranje U MMUF algoritmu: Koristi se jedinstven parametar značajnosti, umesto perioda izvršavanja procesa, prilikom kreiranja kritičnog skupa Parametar značajnosti je fiksan prioritet koji može biti postavljen kao korisnički definisan prioritet, ali i kao bilo koji drugi opcioni parametar koji izražava stepen kritičnosti procesa (očigledno je da proces sa najkraćim periodom izvršavanja ne mora nužno biti i najkritičniji) U okviru MMUF algoritma, EDF algoritam i MLLF algoritam mogu biti korišćeni kako bi se definisao dinamički prioritet za svaki od procesa

MMUF (Modified. Maximum Urgency First) planiranje MMUF algoritam se sastoji od dve faze izvršavanja:

MMUF (Modified. Maximum Urgency First) planiranje MMUF algoritam se sastoji od dve faze izvršavanja: U fazi 1 fiksni prioriteti su definisani (neće se menjati kasnije tokom izvršavanja procesa). Sortiraju se procesi počevši sa onim koji ima najveću značajnost, do onog sa najnižom. Prvih N procesa se smešta u skup kritičnih, tako da preopterećenje procesora ne premaši 100% 2. U fazi 2 se računaju dinamički prioriteti u svakom trenutku kada se planiranje ažurira i određuje se koji će se proces izvršavati sledeći 1.

MMUF (Modified. Maximum Urgency First) planiranje U fazi dva, određivanje sledećeg procesa za izvršavanje

MMUF (Modified. Maximum Urgency First) planiranje U fazi dva, određivanje sledećeg procesa za izvršavanje se vrši na sledeći način: a) 1. 2. Ako postoji barem jedan kritičan proces u redu spremnih procesa Odaberi kritičan proces korišćenjem EDF algoritma ukoliko ne postoje dva koji bi bili isti po ovom kriterijumu Ukoliko dva ili više kritičnih procesa imaju jednak najskoriji krajnji rok (earliest deadline) b) 1. 2. Ako se neki od njih trenutno izvršava, odaberi ga da nastavi U suprotnom, odaberi kritičan proces sa najvećom značajnošću Ukoliko nema kritičnih procesa u redu spremnih procesa Odaberi proces korišćenjem EDF algoritma ukoliko ne postoje dva koji bi bili isti po ovom kriterijumu Ukoliko dva ili više procesa imaju jednak najskoriji krajnji rok Ako se neki od njih trenutno izvršava, odaberi ga da nastavi U suprotnom, odaberi proces sa najvećom značajnošću