SlideShare a Scribd company logo
1 of 26
KONCEPTI RTOS-a
Tehničko veleučilište u Zagrebu
Elektrotehnički odjel
Stipe Predanić
24.11.2016
ELEKTRONIČKA RAČUNALA I
RAČUNALNA OPREMA
14.05.17 Copyright © Stipe Predanić 2015 2
Operacijski sustav
● Operacijski sustav je skup osnovnih sustavnih programa
koji upravljaju sklopovljem računala radi ostvarivanja
osnovnih funkcija računala: ulaz, memoriranje, obrada i
izlaz podataka
● Upravljanje sklopovima
– jednostavno ako računalo obavlja minimalan set funkcija
(ugradbeni (embedded) uređaji poput onih s lab. Vježbi)
– Kompleksno ako se radi o više istovremenih funkcija
Operacijski sustav
● Minimalna funkcionalnost OS-a
– Raspoređivanje zadataka (eng. Task scheduling)
● koji zadatak će biti idući poslan na obradu
– Slanje (prosljeđivanje) zadataka na obradu (eng. Task dispatching)
● priprema memorije i ostalih elemenata procesora kako bi procesor u
budućnosti obradio upravo željeni zadatak
– Komunikacija između zadataka (eng. Intertask communication)
● zadaci moraju moći međusobno razgovarati kako bi prosljeđivali
podatke između procesa.
● Kernel (nucleus, jezgra) – minimalan OS koji obavlja (barem)
gornje 3 zadaće
● Često se za kernel čuje kad se govori o Linuxu – osnovni kernel
je dostupan za različite platforme, a dodatni softver
(nadogradnja na kernel) čini "distribuciju"
Operacijski sustav
Real time Operating System (RTOS)
● Sustav za rad u realnom vremenu (eng. Real-time
operating system – RTOS) je više zadaćni operacijski
sustav koji izvršava aplikacije u realnom vremenu –
operacije bez vidljive zadrške
● CPU ne može raditi više stvari istovremeno – samo jedna
naredba se izvršava u nekom trenutku
– kako ostvariti istovremeni rad više zadaća u isto vrijeme?
● Rješenje: koristiti specijalizirane algoritme za raspoređivanje
zadataka (task scheduling)
● Napomena: u literaturi su uobičajeni nazivi RTS (eng. Real time systems) i
RTOS, ali je moguće pronaći i domaću kraticu SRSV (Sustavi za Rad u
Stvarnom Vremenu)
Parametri za različite ideje primjene kernela
● Algoritam za raspoređivanje može reagirati
– vremenski (eng. time-sharing)
– po događaju (eng. event-driven)
● Time sharing sustav koristi vremenske prekide za pozivanje
algoritma koji odlučuje koji će se idući zadatak (ili dio zadatka) izvršiti
● Event driven sustav poziva algoritam za raspoređivanje na svaki
prekid (vanjski ili unutarnji), a koji je aktiviran zbog nekog događaja
(npr. aktivacija senzora)
Podjela sustava za rad u stvarnom vremenu
● Prema posljedicama nepoštivanja ograničenja RTS sustavi se dijele na:
– stroge (engl. hard RTS)
● jedan pogrešno ili zakašnjelo obrađeni ulazni događaj dovodi do
katastrofalnog događaja u sustavu
– npr. nuklearna elektrana
– ublažene (engl. soft RTS)
● pogrešno ili zakašnjelo obrađeni događaji ne dovodi do katastrofalnog
završetka
– npr. grijanje u prostoru gdje se dogodi i pregrijavanje ili preveliko hlađenje
– čvrste (engl. firm RTS)
● poneki pogrešno ili zakašnjelo obrađeni događaj nije kritičan, ali više takvih
dovodi do katastrofalnog završetka
– npr. sustav detekcije kolizije s drugim objektom može propustiti jedan događaj
(idući će ispraviti problem), ali ako ih propusti nekoliko zaredom doći će do kolizije
● Vremenski rokovi (eng. Deadlines)
– minimalno vrijeme unutar kojeg događaj mora biti obrađen
Parametri za različite ideje primjene kernela
● Periodičnost događaja
– sporadično
● pojavljuju se nenadano
– aperiodički
● nepravilni gledajući točna vremena, ali statistički postoji jednoliki
razmak od kojeg postoji manji otklon
– periodički
● pojavljuju se u istim vremenskim razmacima
● Događaji međusobno mogu biti
– sinkroni
● dva događaja za koja se zna točna vremenska razlika u početku
aktivacije – usklađeni su
– ne moraju biti periodički, samo usklađeni vremenski
– asinkroni
● dva događaja nemaju usklađeno vremena aktivacije
Strategije za izradu kernela
● Petlja s prozivanjem (Polled Loop Systems)
● Kružno pokretanje (Cyclic Executive)
● Kooperativna višezadaćnost (Cooperative Multitasking)
● Sustav s prekidima (Interrupt-Driven Systems)
● Prednji/pozadinski sustav (Foreground/Background
Systems)
● Operacijski sustav za rad u stvarnom vremenu (RTOS)
Petlja s prozivanjem (Polled Loop Systems)
● Petlja s prozivanjem
– u petlji se redovito “prozivaju događaji” (poll) provjeravanjem
zastavice (flag) ili ulaza koji označava potrebnu aktivaciju
– koristi se kod jednostavnih sustava ili kao pozadinski sustav kod
sustava s prekidima
– ako je više događaja, svi bi se trebali provjeravati unutar iste petlje
● Primjer:
– primanje podataka nekim od komunikacijskih protokola. Po
završetku primanja podataka varijabla new_packet će biti
postavljena u vrijednosti 1.
for (;;) {  // beskonacna petlja
if ( new_packet == 1) {  // provjeri zastavicu
process_packet();        // obradi doga ajđ
new_packet = 0;          // resetiraj zastavicu
}
}
Sinkronizirana petlja s prozivanjem
● Sinkronizirana petlja s prozivanjem
– u petlji se redovito “prozivaju događaji” (poll) provjeravanjem
zastavice (flag) ili ulaza koji označava potrebnu aktivaciju, a
sam događaj se obrađuje vremenski usklađeno
– koristi se kod sustava kod kojih je potrebno vrijeme da se
situacija "slegne" (npr. bouncing kod tipkala)
● Primjer:
– Aktivacija zbog pritisnutog tipkala. Bouncing traje do 20ms.
for (;;) {  // beskonacna petlja
if ( button == 1) {  // provjeri zastavicu
   delay_ms(20);      // pauza od 20 ms
process_packet();   // obradi doga ajđ
button = 0;         // resetiraj zastavicu
}
}
Petlja s prozivanjem i zastavice
● Petlja s prozivanjem i zastavice
– Kako se zastavice postave na pravu vrijednost?
● Prozivanje (poll) vrijednosti ulaza – problematično ako se radi
o aktivnosti koja traje vremenski kratko a vrijeme između
prozivanja je predugo
● Korištenjem prekida – učestaliji vremenski prekid ili vanjski
prekid daju bolju kontrolu
for(;;) { /* petlja s prozivanjem */
if(flag) { /* provjeri zastavicu */
counter = 0;
while(counter<3);
process_event();
flag=0; /* resetiraj zastavicu */
}
}
counter=counter+1;
Prekidna rutina (funkcija)
Kružno pokretanje (Cyclic Executive)
● Kružno pokretanje
– daje privid istovremenog pokretanja zadaća time što se
neprestano pokreću kratki procesi u beskonačnoj petlji
– ne koristi prekide (interrupt)
– ako je vremenski rok (deadline) kritičan, tada svaki pojedini
zadatak mora biti vremenski određen (broj instrukcija mora
biti poznat, nisu dozvoljene petlje s neodređenom duljinom
izvršavanja).
for(;;) {
task_1();
task_2();
...
task_n();
}
for(;;) {
task_1();
task_2();
task_1();
task_3();
}
Kooperativni multitasking (Cooperative Multitasking)
● Kooperativni multitasking
– zadaci su podjeljeni u nekoliko faza, i obrada zadatka je
napisana na način da se po izvršavanju pojedine faze
kontrola vraća sustavu koji raspoređuje zadatke. Sustav za
raspoređivanje zadataka odlučuje koji zadatak se dalje
izvršava (moguće je pozivanje istog zadataka nekoliko puta
kako bi prošao kroz više faza)
void process_a(void)
{
for(;;){
switch(state_a){
case 1: phase_a1();
break;
case 2: phase_a2();
break;
case 3: phase_a3();
break;
case 4: phase_a4();
break;
case 5: phase_a5();
break;
}
}
}
void process_b(void)
{
for(;;){
switch(state_b){
case 1: phase_b1();
break;
case 2: phase_b2();
break;
case 3: phase_b3();
break;
case 4: phase_b4();
break;
case 5: phase_b5();
break;
}
}
}
Sustav s prekidima (Interrupt-Driven Systems)
● Sustav s prekidima
– Glavni program ne radi ništa
– Raspoređivanje zadataka je usklađeno koristeći sklopovske
ili programske prekide te se raspoređivanje izvodi kroz
standardne prekidne rutine (funkcije)
void main(void)
{
for(;;);
}
void _isr_1(void)
{
/* obrada zadatka 1 */ ...
}
void _isr_n(void)
{
/* zadatak n */
}
Sklopovski prekid: Vanjski signal na nekoj od nožica pokreće prekidnu
rutinu.
Programski prekid: Aktiviranje prekidne rutine kroz unutarnji prekid
(npr. Vremenski prekid) ili postavljanjem bita u registru kako bi se
simulirao sklopovski prekid
Prekidi i zadaci
● Prekidi se mogu dogoditi u bilo koje vrijeme (sporadični,
asinkroni) i sustavi ne bi smjeli biti vezani vremenski
(sinkronost)
● Tijekom obrade jednog zadatka može se zahtjevati
blokiranje obrade drugih zadataka
– Zadaci mogu biti obrađeni i u klasičnim funkcijama, ne samo
u prekidnoj rutini
– Obrada zadataka bi trebala biti što kraća (naročito ako su
blokirani drugi prekidi odnosno zadaci)
– Ako postoji prioritet (važnost zadatka), može se dopustiti
prekidanje jednog procesa, s drugim
● Preemptive-priority systems
Prekidi i spašavanje konteksta
● Svaki zadatak ima svoje podatke
– Ako dolazi do prekida zbog zadataka višeg prioriteta,
potrebno je spremiti trenutne podatke – spašavanje
konteksta
– Po odrađivanju zadaće kontekst se vraća.
void main(void)
{
for(;;);
}
void _isr_1(void)
{
save(context);
task_1();
restore(context);
}
void _isr_n(void)
{
save(context);
task_n();
restore(context);
}
...
Prednji/pozadinski sustav (Foreground/Background System)
● Prednji i pozadinski sustav je hibridni sustav koji koristi
prekide za važne zadatke, ali istovremeno u glavnoj petlji
obavlja druge, manje važne zadatke (kao što to radi sustav
s prozivanjem petlje)
– Najkorištenija arhitektura jer pruža kontinuirani efektivni rad
pozadinskog procesa, s real-time obradom važnijih prednjih
zadataka (real-time zbog korištenja prekidnih rutina)
Inicijalizacija:
1. Isključi prekide
2. Postavi prekidne vektore
3. Obavi test sustava
4. Obavi inicijalizaciju drugih stvari u
sustavu
5. Uključi prekide
Pozadinski zadatak
● Pozadinski zadaci ne smiju biti ovisni o vremenu
– Izvode se samo ako nema prekida (odnosno ima slobodnog
vremena za izvođenje pozadinskih aktivnosti)
– Česta upotreba je provjera radi li sustav u redu
● Nije vremenski kritično, ali je dobro znati trenutno stanje
sustava
● Općenito:
– Vrijeme izvođenja pozadinskog zadatka
t = e / (1 – p)
● gdje je e vrijeme koje bi trebalo zadatku da se obavi kad ne bi
bio pozadinski
● a p postotak vremena u kojem procesor obavlja sve prednje
zadatke
Primjer pozadinskog zadatka: Watchdog
void task_1(void)
{
while(1){
wdt_1=0;
...
wait();
}
}
void task_n(void)
{
while(1){
wdt_n=0;
...
wait();
}
}
void main(void)
{
for(;;){
wdt_1++; ... wdt_n++;
if(wdt_1>10)
reset_system();
...
else if(wdt_n>500)
reset_system();
}
}
Prednji zadaci: pozivanje
zadataka se vrši iz
vremenske prekidne rutine.
Pri svakom pozivanju zadatka se
resetira brojač. Brojač koji nije
resetiran unutar određenog
vremenskog razdoblja označava
grešku u sustavu, te se sustav
resetira.
Operacijski sustav za rad u stvarnom vremenu (RTOS)
● Prednji/pozadinski sustav je dobar za specijaliziranu sklopovski
izvedbu, no potpuni operacijski sustav ima i dodatne mogućnosti:
podrška za mrežne komunikacijske protokole, dodatni sklopovi su
podržani kroz sustav pokretača (drivera), podržani su sustavi za lako
uočavanje i ispravljanje grešaka (debugging)
● Takvi sustavi imaju različite kompleksne algoritme za usklađivanje
zadataka unutar okvira opisanih u prijašnjim primjerima
– Npr. Kako ostvariti preemptive prioritete ili važnost pojedinih zadataka u
kooperativnom multitaskingu
● Popularni RTOS sustavi su:
– QNX
– VxWorks
– Real-Time Unix
– Real-Time Linux
– ....
RTOS
Real-Time kernel daje podršku za
A. Rad s prekidima
B. Rad s raspoređivanjem zadataka (kooperativni multitasking +
preemptive priority)
C. Komunikacija i sinkronizacija između zadataka
D. Rad sa sustavom koji mjeri vrijeme
E. Upravljanje memorijom
F. Podrška za ulazno izlazne jedinice (korištenje pokretačkih
(driver) programa)
G. Brzo prikupljanje podataka s U/I jedinica
H. Korisnička kontrola sistemskih resursa
I. Rad s greškama i iznimkama
 Real-time OS mora podržavati stvaranje, brisanje i
raspoređivanja više zadataka istovremeno
 Real-time OS mora moći obraditi svaki događaj na strogo
determinirani način (poznat način i vrijeme obrade)
 Real-time OS mora podržavati pouzdanu i brzu
komunikaciju između procesa kroz poznate procese,
poput prosljeđivanja poruka, djeljene memorije i
semafora.
 Real-time OS mora moći obraditi vrlo velike količine
podataka u kratkom vremenu
RTOS sustavi raspoređivanja zadataka
● Zadatak-kontrola blok način rada
– Eng. Task-Control Block Mode
– Svaki stvoreni zadatak je u jednom od 4 stanja:
1)Izvodi se (Executing)
● samo jedan zadatak u bilo kojem trenutku može biti u ovom stanju
2)Pripravan (Ready)
● Zadatak je spreman za izvođenje, ali nije trenutno aktivan
● Ovdje je ako je pripremljen (preemptive) ili ako je njegovo vrijeme
za rad isteklo
3)Suspendiran ili blokiran (Suspended / Blocked)
● Trenutno je neaktivan i čeka da ga netko pozove ili čeka na neki
resurs koji je trenutno zauzet
4) Spava ( Dormant / Sleep)
● Zadatak nije uvijek dostupan OS-u (npr. možda je spreman za
brisanje)
● Task-Control Block Mode
Dijagram stanja zadataka
Za one koji žele znati više
● http://www.zemris.fer.hr/~leonardo/
– Real-Time Systems (SzRuSV),
– Operating Systems for Embedded Computers (OszUR)
● http://www.mouloudrahmani.com/ElectricalEngineering/Embedd
● http://web.mit.edu/16.070/www/year2001/RTOS27.pdf
● http://web.mit.edu/16.070/www/year2001/RTOS28.pdf

More Related Content

More from Stipe Predanic

[ERRO] Predavanje: Napajanje uređaja 8.12.2016
[ERRO] Predavanje: Napajanje uređaja 8.12.2016 [ERRO] Predavanje: Napajanje uređaja 8.12.2016
[ERRO] Predavanje: Napajanje uređaja 8.12.2016 Stipe Predanic
 
[ERRO] Predavanje: Prikaz podataka 1.12.2016
[ERRO] Predavanje: Prikaz podataka 1.12.2016 [ERRO] Predavanje: Prikaz podataka 1.12.2016
[ERRO] Predavanje: Prikaz podataka 1.12.2016 Stipe Predanic
 
[ERRO] Predavanje: Porodice mikroupravljača
[ERRO] Predavanje: Porodice mikroupravljača[ERRO] Predavanje: Porodice mikroupravljača
[ERRO] Predavanje: Porodice mikroupravljačaStipe Predanic
 
[ERRO] Predavanje: 8051
[ERRO] Predavanje: 8051 [ERRO] Predavanje: 8051
[ERRO] Predavanje: 8051 Stipe Predanic
 
[ERRO] Predavanje: ulazi/izlazi na mikroupravljač (27.10.2016)
[ERRO] Predavanje: ulazi/izlazi na mikroupravljač (27.10.2016) [ERRO] Predavanje: ulazi/izlazi na mikroupravljač (27.10.2016)
[ERRO] Predavanje: ulazi/izlazi na mikroupravljač (27.10.2016) Stipe Predanic
 
[ERRO] Predavanje: MARIE model procesora
[ERRO] Predavanje: MARIE model procesora [ERRO] Predavanje: MARIE model procesora
[ERRO] Predavanje: MARIE model procesora Stipe Predanic
 
[ERRO] Predavanje: Ponavljanje digitalnih sklopova
[ERRO] Predavanje: Ponavljanje digitalnih sklopova [ERRO] Predavanje: Ponavljanje digitalnih sklopova
[ERRO] Predavanje: Ponavljanje digitalnih sklopova Stipe Predanic
 
[ERRO] Uvodno predavanje (pravila polaganja ispita)
[ERRO] Uvodno predavanje (pravila polaganja ispita) [ERRO] Uvodno predavanje (pravila polaganja ispita)
[ERRO] Uvodno predavanje (pravila polaganja ispita) Stipe Predanic
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 12.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 12. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 12.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 12. Stipe Predanic
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11. Stipe Predanic
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 10.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 10. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 10.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 10. Stipe Predanic
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9. Stipe Predanic
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 8.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 8. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 8.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 8. Stipe Predanic
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 7.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 7. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 7.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 7. Stipe Predanic
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5. Stipe Predanic
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 4.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 4. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 4.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 4. Stipe Predanic
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 3.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 3. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 3.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 3. Stipe Predanic
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 2.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 2. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 2.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 2. Stipe Predanic
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 1.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 1. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 1.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 1. Stipe Predanic
 
Achieve the norm with Idiorm
Achieve the norm with IdiormAchieve the norm with Idiorm
Achieve the norm with IdiormStipe Predanic
 

More from Stipe Predanic (20)

[ERRO] Predavanje: Napajanje uređaja 8.12.2016
[ERRO] Predavanje: Napajanje uređaja 8.12.2016 [ERRO] Predavanje: Napajanje uređaja 8.12.2016
[ERRO] Predavanje: Napajanje uređaja 8.12.2016
 
[ERRO] Predavanje: Prikaz podataka 1.12.2016
[ERRO] Predavanje: Prikaz podataka 1.12.2016 [ERRO] Predavanje: Prikaz podataka 1.12.2016
[ERRO] Predavanje: Prikaz podataka 1.12.2016
 
[ERRO] Predavanje: Porodice mikroupravljača
[ERRO] Predavanje: Porodice mikroupravljača[ERRO] Predavanje: Porodice mikroupravljača
[ERRO] Predavanje: Porodice mikroupravljača
 
[ERRO] Predavanje: 8051
[ERRO] Predavanje: 8051 [ERRO] Predavanje: 8051
[ERRO] Predavanje: 8051
 
[ERRO] Predavanje: ulazi/izlazi na mikroupravljač (27.10.2016)
[ERRO] Predavanje: ulazi/izlazi na mikroupravljač (27.10.2016) [ERRO] Predavanje: ulazi/izlazi na mikroupravljač (27.10.2016)
[ERRO] Predavanje: ulazi/izlazi na mikroupravljač (27.10.2016)
 
[ERRO] Predavanje: MARIE model procesora
[ERRO] Predavanje: MARIE model procesora [ERRO] Predavanje: MARIE model procesora
[ERRO] Predavanje: MARIE model procesora
 
[ERRO] Predavanje: Ponavljanje digitalnih sklopova
[ERRO] Predavanje: Ponavljanje digitalnih sklopova [ERRO] Predavanje: Ponavljanje digitalnih sklopova
[ERRO] Predavanje: Ponavljanje digitalnih sklopova
 
[ERRO] Uvodno predavanje (pravila polaganja ispita)
[ERRO] Uvodno predavanje (pravila polaganja ispita) [ERRO] Uvodno predavanje (pravila polaganja ispita)
[ERRO] Uvodno predavanje (pravila polaganja ispita)
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 12.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 12. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 12.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 12.
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 10.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 10. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 10.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 10.
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 8.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 8. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 8.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 8.
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 7.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 7. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 7.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 7.
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 4.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 4. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 4.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 4.
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 3.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 3. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 3.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 3.
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 2.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 2. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 2.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 2.
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 1.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 1. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 1.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 1.
 
Achieve the norm with Idiorm
Achieve the norm with IdiormAchieve the norm with Idiorm
Achieve the norm with Idiorm
 

[ERRO] Predavanje: RTOS

  • 1. KONCEPTI RTOS-a Tehničko veleučilište u Zagrebu Elektrotehnički odjel Stipe Predanić 24.11.2016 ELEKTRONIČKA RAČUNALA I RAČUNALNA OPREMA
  • 2. 14.05.17 Copyright © Stipe Predanić 2015 2 Operacijski sustav ● Operacijski sustav je skup osnovnih sustavnih programa koji upravljaju sklopovljem računala radi ostvarivanja osnovnih funkcija računala: ulaz, memoriranje, obrada i izlaz podataka ● Upravljanje sklopovima – jednostavno ako računalo obavlja minimalan set funkcija (ugradbeni (embedded) uređaji poput onih s lab. Vježbi) – Kompleksno ako se radi o više istovremenih funkcija
  • 3. Operacijski sustav ● Minimalna funkcionalnost OS-a – Raspoređivanje zadataka (eng. Task scheduling) ● koji zadatak će biti idući poslan na obradu – Slanje (prosljeđivanje) zadataka na obradu (eng. Task dispatching) ● priprema memorije i ostalih elemenata procesora kako bi procesor u budućnosti obradio upravo željeni zadatak – Komunikacija između zadataka (eng. Intertask communication) ● zadaci moraju moći međusobno razgovarati kako bi prosljeđivali podatke između procesa. ● Kernel (nucleus, jezgra) – minimalan OS koji obavlja (barem) gornje 3 zadaće ● Često se za kernel čuje kad se govori o Linuxu – osnovni kernel je dostupan za različite platforme, a dodatni softver (nadogradnja na kernel) čini "distribuciju"
  • 5. Real time Operating System (RTOS) ● Sustav za rad u realnom vremenu (eng. Real-time operating system – RTOS) je više zadaćni operacijski sustav koji izvršava aplikacije u realnom vremenu – operacije bez vidljive zadrške ● CPU ne može raditi više stvari istovremeno – samo jedna naredba se izvršava u nekom trenutku – kako ostvariti istovremeni rad više zadaća u isto vrijeme? ● Rješenje: koristiti specijalizirane algoritme za raspoređivanje zadataka (task scheduling) ● Napomena: u literaturi su uobičajeni nazivi RTS (eng. Real time systems) i RTOS, ali je moguće pronaći i domaću kraticu SRSV (Sustavi za Rad u Stvarnom Vremenu)
  • 6. Parametri za različite ideje primjene kernela ● Algoritam za raspoređivanje može reagirati – vremenski (eng. time-sharing) – po događaju (eng. event-driven) ● Time sharing sustav koristi vremenske prekide za pozivanje algoritma koji odlučuje koji će se idući zadatak (ili dio zadatka) izvršiti ● Event driven sustav poziva algoritam za raspoređivanje na svaki prekid (vanjski ili unutarnji), a koji je aktiviran zbog nekog događaja (npr. aktivacija senzora)
  • 7. Podjela sustava za rad u stvarnom vremenu ● Prema posljedicama nepoštivanja ograničenja RTS sustavi se dijele na: – stroge (engl. hard RTS) ● jedan pogrešno ili zakašnjelo obrađeni ulazni događaj dovodi do katastrofalnog događaja u sustavu – npr. nuklearna elektrana – ublažene (engl. soft RTS) ● pogrešno ili zakašnjelo obrađeni događaji ne dovodi do katastrofalnog završetka – npr. grijanje u prostoru gdje se dogodi i pregrijavanje ili preveliko hlađenje – čvrste (engl. firm RTS) ● poneki pogrešno ili zakašnjelo obrađeni događaj nije kritičan, ali više takvih dovodi do katastrofalnog završetka – npr. sustav detekcije kolizije s drugim objektom može propustiti jedan događaj (idući će ispraviti problem), ali ako ih propusti nekoliko zaredom doći će do kolizije ● Vremenski rokovi (eng. Deadlines) – minimalno vrijeme unutar kojeg događaj mora biti obrađen
  • 8. Parametri za različite ideje primjene kernela ● Periodičnost događaja – sporadično ● pojavljuju se nenadano – aperiodički ● nepravilni gledajući točna vremena, ali statistički postoji jednoliki razmak od kojeg postoji manji otklon – periodički ● pojavljuju se u istim vremenskim razmacima ● Događaji međusobno mogu biti – sinkroni ● dva događaja za koja se zna točna vremenska razlika u početku aktivacije – usklađeni su – ne moraju biti periodički, samo usklađeni vremenski – asinkroni ● dva događaja nemaju usklađeno vremena aktivacije
  • 9. Strategije za izradu kernela ● Petlja s prozivanjem (Polled Loop Systems) ● Kružno pokretanje (Cyclic Executive) ● Kooperativna višezadaćnost (Cooperative Multitasking) ● Sustav s prekidima (Interrupt-Driven Systems) ● Prednji/pozadinski sustav (Foreground/Background Systems) ● Operacijski sustav za rad u stvarnom vremenu (RTOS)
  • 10. Petlja s prozivanjem (Polled Loop Systems) ● Petlja s prozivanjem – u petlji se redovito “prozivaju događaji” (poll) provjeravanjem zastavice (flag) ili ulaza koji označava potrebnu aktivaciju – koristi se kod jednostavnih sustava ili kao pozadinski sustav kod sustava s prekidima – ako je više događaja, svi bi se trebali provjeravati unutar iste petlje ● Primjer: – primanje podataka nekim od komunikacijskih protokola. Po završetku primanja podataka varijabla new_packet će biti postavljena u vrijednosti 1. for (;;) {  // beskonacna petlja if ( new_packet == 1) {  // provjeri zastavicu process_packet();        // obradi doga ajđ new_packet = 0;          // resetiraj zastavicu } }
  • 11. Sinkronizirana petlja s prozivanjem ● Sinkronizirana petlja s prozivanjem – u petlji se redovito “prozivaju događaji” (poll) provjeravanjem zastavice (flag) ili ulaza koji označava potrebnu aktivaciju, a sam događaj se obrađuje vremenski usklađeno – koristi se kod sustava kod kojih je potrebno vrijeme da se situacija "slegne" (npr. bouncing kod tipkala) ● Primjer: – Aktivacija zbog pritisnutog tipkala. Bouncing traje do 20ms. for (;;) {  // beskonacna petlja if ( button == 1) {  // provjeri zastavicu    delay_ms(20);      // pauza od 20 ms process_packet();   // obradi doga ajđ button = 0;         // resetiraj zastavicu } }
  • 12. Petlja s prozivanjem i zastavice ● Petlja s prozivanjem i zastavice – Kako se zastavice postave na pravu vrijednost? ● Prozivanje (poll) vrijednosti ulaza – problematično ako se radi o aktivnosti koja traje vremenski kratko a vrijeme između prozivanja je predugo ● Korištenjem prekida – učestaliji vremenski prekid ili vanjski prekid daju bolju kontrolu for(;;) { /* petlja s prozivanjem */ if(flag) { /* provjeri zastavicu */ counter = 0; while(counter<3); process_event(); flag=0; /* resetiraj zastavicu */ } } counter=counter+1; Prekidna rutina (funkcija)
  • 13. Kružno pokretanje (Cyclic Executive) ● Kružno pokretanje – daje privid istovremenog pokretanja zadaća time što se neprestano pokreću kratki procesi u beskonačnoj petlji – ne koristi prekide (interrupt) – ako je vremenski rok (deadline) kritičan, tada svaki pojedini zadatak mora biti vremenski određen (broj instrukcija mora biti poznat, nisu dozvoljene petlje s neodređenom duljinom izvršavanja). for(;;) { task_1(); task_2(); ... task_n(); } for(;;) { task_1(); task_2(); task_1(); task_3(); }
  • 14. Kooperativni multitasking (Cooperative Multitasking) ● Kooperativni multitasking – zadaci su podjeljeni u nekoliko faza, i obrada zadatka je napisana na način da se po izvršavanju pojedine faze kontrola vraća sustavu koji raspoređuje zadatke. Sustav za raspoređivanje zadataka odlučuje koji zadatak se dalje izvršava (moguće je pozivanje istog zadataka nekoliko puta kako bi prošao kroz više faza) void process_a(void) { for(;;){ switch(state_a){ case 1: phase_a1(); break; case 2: phase_a2(); break; case 3: phase_a3(); break; case 4: phase_a4(); break; case 5: phase_a5(); break; } } } void process_b(void) { for(;;){ switch(state_b){ case 1: phase_b1(); break; case 2: phase_b2(); break; case 3: phase_b3(); break; case 4: phase_b4(); break; case 5: phase_b5(); break; } } }
  • 15. Sustav s prekidima (Interrupt-Driven Systems) ● Sustav s prekidima – Glavni program ne radi ništa – Raspoređivanje zadataka je usklađeno koristeći sklopovske ili programske prekide te se raspoređivanje izvodi kroz standardne prekidne rutine (funkcije) void main(void) { for(;;); } void _isr_1(void) { /* obrada zadatka 1 */ ... } void _isr_n(void) { /* zadatak n */ } Sklopovski prekid: Vanjski signal na nekoj od nožica pokreće prekidnu rutinu. Programski prekid: Aktiviranje prekidne rutine kroz unutarnji prekid (npr. Vremenski prekid) ili postavljanjem bita u registru kako bi se simulirao sklopovski prekid
  • 16. Prekidi i zadaci ● Prekidi se mogu dogoditi u bilo koje vrijeme (sporadični, asinkroni) i sustavi ne bi smjeli biti vezani vremenski (sinkronost) ● Tijekom obrade jednog zadatka može se zahtjevati blokiranje obrade drugih zadataka – Zadaci mogu biti obrađeni i u klasičnim funkcijama, ne samo u prekidnoj rutini – Obrada zadataka bi trebala biti što kraća (naročito ako su blokirani drugi prekidi odnosno zadaci) – Ako postoji prioritet (važnost zadatka), može se dopustiti prekidanje jednog procesa, s drugim ● Preemptive-priority systems
  • 17. Prekidi i spašavanje konteksta ● Svaki zadatak ima svoje podatke – Ako dolazi do prekida zbog zadataka višeg prioriteta, potrebno je spremiti trenutne podatke – spašavanje konteksta – Po odrađivanju zadaće kontekst se vraća. void main(void) { for(;;); } void _isr_1(void) { save(context); task_1(); restore(context); } void _isr_n(void) { save(context); task_n(); restore(context); } ...
  • 18. Prednji/pozadinski sustav (Foreground/Background System) ● Prednji i pozadinski sustav je hibridni sustav koji koristi prekide za važne zadatke, ali istovremeno u glavnoj petlji obavlja druge, manje važne zadatke (kao što to radi sustav s prozivanjem petlje) – Najkorištenija arhitektura jer pruža kontinuirani efektivni rad pozadinskog procesa, s real-time obradom važnijih prednjih zadataka (real-time zbog korištenja prekidnih rutina) Inicijalizacija: 1. Isključi prekide 2. Postavi prekidne vektore 3. Obavi test sustava 4. Obavi inicijalizaciju drugih stvari u sustavu 5. Uključi prekide
  • 19. Pozadinski zadatak ● Pozadinski zadaci ne smiju biti ovisni o vremenu – Izvode se samo ako nema prekida (odnosno ima slobodnog vremena za izvođenje pozadinskih aktivnosti) – Česta upotreba je provjera radi li sustav u redu ● Nije vremenski kritično, ali je dobro znati trenutno stanje sustava ● Općenito: – Vrijeme izvođenja pozadinskog zadatka t = e / (1 – p) ● gdje je e vrijeme koje bi trebalo zadatku da se obavi kad ne bi bio pozadinski ● a p postotak vremena u kojem procesor obavlja sve prednje zadatke
  • 20. Primjer pozadinskog zadatka: Watchdog void task_1(void) { while(1){ wdt_1=0; ... wait(); } } void task_n(void) { while(1){ wdt_n=0; ... wait(); } } void main(void) { for(;;){ wdt_1++; ... wdt_n++; if(wdt_1>10) reset_system(); ... else if(wdt_n>500) reset_system(); } } Prednji zadaci: pozivanje zadataka se vrši iz vremenske prekidne rutine. Pri svakom pozivanju zadatka se resetira brojač. Brojač koji nije resetiran unutar određenog vremenskog razdoblja označava grešku u sustavu, te se sustav resetira.
  • 21. Operacijski sustav za rad u stvarnom vremenu (RTOS) ● Prednji/pozadinski sustav je dobar za specijaliziranu sklopovski izvedbu, no potpuni operacijski sustav ima i dodatne mogućnosti: podrška za mrežne komunikacijske protokole, dodatni sklopovi su podržani kroz sustav pokretača (drivera), podržani su sustavi za lako uočavanje i ispravljanje grešaka (debugging) ● Takvi sustavi imaju različite kompleksne algoritme za usklađivanje zadataka unutar okvira opisanih u prijašnjim primjerima – Npr. Kako ostvariti preemptive prioritete ili važnost pojedinih zadataka u kooperativnom multitaskingu ● Popularni RTOS sustavi su: – QNX – VxWorks – Real-Time Unix – Real-Time Linux – ....
  • 22. RTOS Real-Time kernel daje podršku za A. Rad s prekidima B. Rad s raspoređivanjem zadataka (kooperativni multitasking + preemptive priority) C. Komunikacija i sinkronizacija između zadataka D. Rad sa sustavom koji mjeri vrijeme E. Upravljanje memorijom F. Podrška za ulazno izlazne jedinice (korištenje pokretačkih (driver) programa) G. Brzo prikupljanje podataka s U/I jedinica H. Korisnička kontrola sistemskih resursa I. Rad s greškama i iznimkama  Real-time OS mora podržavati stvaranje, brisanje i raspoređivanja više zadataka istovremeno  Real-time OS mora moći obraditi svaki događaj na strogo determinirani način (poznat način i vrijeme obrade)  Real-time OS mora podržavati pouzdanu i brzu komunikaciju između procesa kroz poznate procese, poput prosljeđivanja poruka, djeljene memorije i semafora.  Real-time OS mora moći obraditi vrlo velike količine podataka u kratkom vremenu
  • 23. RTOS sustavi raspoređivanja zadataka ● Zadatak-kontrola blok način rada – Eng. Task-Control Block Mode – Svaki stvoreni zadatak je u jednom od 4 stanja: 1)Izvodi se (Executing) ● samo jedan zadatak u bilo kojem trenutku može biti u ovom stanju 2)Pripravan (Ready) ● Zadatak je spreman za izvođenje, ali nije trenutno aktivan ● Ovdje je ako je pripremljen (preemptive) ili ako je njegovo vrijeme za rad isteklo 3)Suspendiran ili blokiran (Suspended / Blocked) ● Trenutno je neaktivan i čeka da ga netko pozove ili čeka na neki resurs koji je trenutno zauzet 4) Spava ( Dormant / Sleep) ● Zadatak nije uvijek dostupan OS-u (npr. možda je spreman za brisanje)
  • 26. Za one koji žele znati više ● http://www.zemris.fer.hr/~leonardo/ – Real-Time Systems (SzRuSV), – Operating Systems for Embedded Computers (OszUR) ● http://www.mouloudrahmani.com/ElectricalEngineering/Embedd ● http://web.mit.edu/16.070/www/year2001/RTOS27.pdf ● http://web.mit.edu/16.070/www/year2001/RTOS28.pdf