際際滷

際際滷Share a Scribd company logo
KONCEPTI RTOS-a
Tehniko veleuili邸te u Zagrebu
Elektrotehniki odjel
Stipe Predani
24.11.2016
ELEKTRONIKA RAUNALA I
RAUNALNA OPREMA
14.05.17 Copyright 息 Stipe Predani 2015 2
Operacijski sustav
 Operacijski sustav je skup osnovnih sustavnih programa
koji upravljaju sklopovljem raunala radi ostvarivanja
osnovnih funkcija raunala: ulaz, memoriranje, obrada i
izlaz podataka
 Upravljanje sklopovima
 jednostavno ako raunalo obavlja minimalan set funkcija
(ugradbeni (embedded) ureaji poput onih s lab. Vje転bi)
 Kompleksno ako se radi o vi邸e istovremenih funkcija
Operacijski sustav
 Minimalna funkcionalnost OS-a
 Rasporeivanje zadataka (eng. Task scheduling)
 koji zadatak e biti idui poslan na obradu
 Slanje (prosljeivanje) zadataka na obradu (eng. Task dispatching)
 priprema memorije i ostalih elemenata procesora kako bi procesor u
budunosti obradio upravo 転eljeni zadatak
 Komunikacija izmeu zadataka (eng. Intertask communication)
 zadaci moraju moi meusobno razgovarati kako bi prosljeivali
podatke izmeu procesa.
 Kernel (nucleus, jezgra)  minimalan OS koji obavlja (barem)
gornje 3 zadae
 esto se za kernel uje kad se govori o Linuxu  osnovni kernel
je dostupan za razliite 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 zadani 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 zadaa u isto vrijeme?
 Rje邸enje: koristiti specijalizirane algoritme za rasporeivanje
zadataka (task scheduling)
 Napomena: u literaturi su uobiajeni nazivi RTS (eng. Real time systems) i
RTOS, ali je mogue pronai i domau kraticu SRSV (Sustavi za Rad u
Stvarnom Vremenu)
Parametri za razliite ideje primjene kernela
 Algoritam za rasporeivanje mo転e reagirati
 vremenski (eng. time-sharing)
 po dogaaju (eng. event-driven)
 Time sharing sustav koristi vremenske prekide za pozivanje
algoritma koji odluuje koji e se idui zadatak (ili dio zadatka) izvr邸iti
 Event driven sustav poziva algoritam za rasporeivanje na svaki
prekid (vanjski ili unutarnji), a koji je aktiviran zbog nekog dogaaja
(npr. aktivacija senzora)
Podjela sustava za rad u stvarnom vremenu
 Prema posljedicama nepo邸tivanja ogranienja RTS sustavi se dijele na:
 stroge (engl. hard RTS)
 jedan pogre邸no ili zaka邸njelo obraeni ulazni dogaaj dovodi do
katastrofalnog dogaaja u sustavu
 npr. nuklearna elektrana
 ubla転ene (engl. soft RTS)
 pogre邸no ili zaka邸njelo obraeni dogaaji ne dovodi do katastrofalnog
zavr邸etka
 npr. grijanje u prostoru gdje se dogodi i pregrijavanje ili preveliko hlaenje
 vrste (engl. firm RTS)
 poneki pogre邸no ili zaka邸njelo obraeni dogaaj nije kritian, ali vi邸e takvih
dovodi do katastrofalnog zavr邸etka
 npr. sustav detekcije kolizije s drugim objektom mo転e propustiti jedan dogaaj
(idui e ispraviti problem), ali ako ih propusti nekoliko zaredom doi e do kolizije
 Vremenski rokovi (eng. Deadlines)
 minimalno vrijeme unutar kojeg dogaaj mora biti obraen
Parametri za razliite ideje primjene kernela
 Periodinost dogaaja
 sporadino
 pojavljuju se nenadano
 aperiodiki
 nepravilni gledajui tona vremena, ali statistiki postoji jednoliki
razmak od kojeg postoji manji otklon
 periodiki
 pojavljuju se u istim vremenskim razmacima
 Dogaaji meusobno mogu biti
 sinkroni
 dva dogaaja za koja se zna tona vremenska razlika u poetku
aktivacije  usklaeni su
 ne moraju biti periodiki, samo usklaeni vremenski
 asinkroni
 dva dogaaja nemaju usklaeno vremena aktivacije
Strategije za izradu kernela
 Petlja s prozivanjem (Polled Loop Systems)
 Kru転no pokretanje (Cyclic Executive)
 Kooperativna vi邸ezadanost (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 dogaaji (poll) provjeravanjem
zastavice (flag) ili ulaza koji oznaava potrebnu aktivaciju
 koristi se kod jednostavnih sustava ili kao pozadinski sustav kod
sustava s prekidima
 ako je vi邸e dogaaja, 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(;;){//beskonacnapetlja
if(new_packet==1){//provjerizastavicu
process_packet();//obradidoga aj
new_packet=0;//resetirajzastavicu
}
}
Sinkronizirana petlja s prozivanjem
 Sinkronizirana petlja s prozivanjem
 u petlji se redovito prozivaju dogaaji (poll) provjeravanjem
zastavice (flag) ili ulaza koji oznaava potrebnu aktivaciju, a
sam dogaaj se obrauje vremenski usklaeno
 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(;;){//beskonacnapetlja
if(button==1){//provjerizastavicu
delay_ms(20);//pauzaod20ms
process_packet();//obradidoga aj
button=0;//resetirajzastavicu
}
}
Petlja s prozivanjem i zastavice
 Petlja s prozivanjem i zastavice
 Kako se zastavice postave na pravu vrijednost?
 Prozivanje (poll) vrijednosti ulaza  problematino ako se radi
o aktivnosti koja traje vremenski kratko a vrijeme izmeu
prozivanja je predugo
 Kori邸tenjem prekida  uestaliji 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 zadaa time 邸to se
neprestano pokreu kratki procesi u beskonanoj petlji
 ne koristi prekide (interrupt)
 ako je vremenski rok (deadline) kritian, tada svaki pojedini
zadatak mora biti vremenski odreen (broj instrukcija mora
biti poznat, nisu dozvoljene petlje s neodreenom 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 nain da se po izvr邸avanju pojedine faze
kontrola vraa sustavu koji rasporeuje zadatke. Sustav za
rasporeivanje zadataka odluuje koji zadatak se dalje
izvr邸ava (mogue 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
 Rasporeivanje zadataka je usklaeno koristei sklopovske
ili programske prekide te se rasporeivanje 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 pokree 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 (sporadini,
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 obraeni i u klasinim funkcijama, ne samo
u prekidnoj rutini
 Obrada zadataka bi trebala biti 邸to kraa (naroito 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 odraivanju zadae kontekst se vraa.
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. Iskljui prekide
2. Postavi prekidne vektore
3. Obavi test sustava
4. Obavi inicijalizaciju drugih stvari u
sustavu
5. Ukljui prekide
Pozadinski zadatak
 Pozadinski zadaci ne smiju biti ovisni o vremenu
 Izvode se samo ako nema prekida (odnosno ima slobodnog
vremena za izvoenje pozadinskih aktivnosti)
 esta upotreba je provjera radi li sustav u redu
 Nije vremenski kritino, ali je dobro znati trenutno stanje
sustava
 Openito:
 Vrijeme izvoenja 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 odreenog
vremenskog razdoblja oznaava
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 mogunosti:
podr邸ka za mre転ne komunikacijske protokole, dodatni sklopovi su
podr転ani kroz sustav pokretaa (drivera), podr転ani su sustavi za lako
uoavanje i ispravljanje gre邸aka (debugging)
 Takvi sustavi imaju razliite kompleksne algoritme za usklaivanje
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 rasporeivanjem zadataka (kooperativni multitasking +
preemptive priority)
C. Komunikacija i sinkronizacija izmeu zadataka
D. Rad sa sustavom koji mjeri vrijeme
E. Upravljanje memorijom
F. Podr邸ka za ulazno izlazne jedinice (kori邸tenje pokretakih
(driver) programa)
G. Brzo prikupljanje podataka s U/I jedinica
H. Korisnika kontrola sistemskih resursa
I. Rad s gre邸kama i iznimkama
 Real-time OS mora podr転avati stvaranje, brisanje i
rasporeivanja vi邸e zadataka istovremeno
 Real-time OS mora moi obraditi svaki dogaaj na strogo
determinirani nain (poznat nain i vrijeme obrade)
 Real-time OS mora podr転avati pouzdanu i brzu
komunikaciju izmeu procesa kroz poznate procese,
poput prosljeivanja poruka, djeljene memorije i
semafora.
 Real-time OS mora moi obraditi vrlo velike koliine
podataka u kratkom vremenu
RTOS sustavi rasporeivanja zadataka
 Zadatak-kontrola blok nain 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 izvoenje, 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

[ERRO] Predavanje: RTOS

  • 1. KONCEPTI RTOS-a Tehniko veleuili邸te u Zagrebu Elektrotehniki odjel Stipe Predani 24.11.2016 ELEKTRONIKA RAUNALA I RAUNALNA OPREMA
  • 2. 14.05.17 Copyright 息 Stipe Predani 2015 2 Operacijski sustav Operacijski sustav je skup osnovnih sustavnih programa koji upravljaju sklopovljem raunala radi ostvarivanja osnovnih funkcija raunala: ulaz, memoriranje, obrada i izlaz podataka Upravljanje sklopovima jednostavno ako raunalo obavlja minimalan set funkcija (ugradbeni (embedded) ureaji poput onih s lab. Vje転bi) Kompleksno ako se radi o vi邸e istovremenih funkcija
  • 3. Operacijski sustav Minimalna funkcionalnost OS-a Rasporeivanje zadataka (eng. Task scheduling) koji zadatak e biti idui poslan na obradu Slanje (prosljeivanje) zadataka na obradu (eng. Task dispatching) priprema memorije i ostalih elemenata procesora kako bi procesor u budunosti obradio upravo 転eljeni zadatak Komunikacija izmeu zadataka (eng. Intertask communication) zadaci moraju moi meusobno razgovarati kako bi prosljeivali podatke izmeu procesa. Kernel (nucleus, jezgra) minimalan OS koji obavlja (barem) gornje 3 zadae esto se za kernel uje kad se govori o Linuxu osnovni kernel je dostupan za razliite 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 zadani 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 zadaa u isto vrijeme? Rje邸enje: koristiti specijalizirane algoritme za rasporeivanje zadataka (task scheduling) Napomena: u literaturi su uobiajeni nazivi RTS (eng. Real time systems) i RTOS, ali je mogue pronai i domau kraticu SRSV (Sustavi za Rad u Stvarnom Vremenu)
  • 6. Parametri za razliite ideje primjene kernela Algoritam za rasporeivanje mo転e reagirati vremenski (eng. time-sharing) po dogaaju (eng. event-driven) Time sharing sustav koristi vremenske prekide za pozivanje algoritma koji odluuje koji e se idui zadatak (ili dio zadatka) izvr邸iti Event driven sustav poziva algoritam za rasporeivanje na svaki prekid (vanjski ili unutarnji), a koji je aktiviran zbog nekog dogaaja (npr. aktivacija senzora)
  • 7. Podjela sustava za rad u stvarnom vremenu Prema posljedicama nepo邸tivanja ogranienja RTS sustavi se dijele na: stroge (engl. hard RTS) jedan pogre邸no ili zaka邸njelo obraeni ulazni dogaaj dovodi do katastrofalnog dogaaja u sustavu npr. nuklearna elektrana ubla転ene (engl. soft RTS) pogre邸no ili zaka邸njelo obraeni dogaaji ne dovodi do katastrofalnog zavr邸etka npr. grijanje u prostoru gdje se dogodi i pregrijavanje ili preveliko hlaenje vrste (engl. firm RTS) poneki pogre邸no ili zaka邸njelo obraeni dogaaj nije kritian, ali vi邸e takvih dovodi do katastrofalnog zavr邸etka npr. sustav detekcije kolizije s drugim objektom mo転e propustiti jedan dogaaj (idui e ispraviti problem), ali ako ih propusti nekoliko zaredom doi e do kolizije Vremenski rokovi (eng. Deadlines) minimalno vrijeme unutar kojeg dogaaj mora biti obraen
  • 8. Parametri za razliite ideje primjene kernela Periodinost dogaaja sporadino pojavljuju se nenadano aperiodiki nepravilni gledajui tona vremena, ali statistiki postoji jednoliki razmak od kojeg postoji manji otklon periodiki pojavljuju se u istim vremenskim razmacima Dogaaji meusobno mogu biti sinkroni dva dogaaja za koja se zna tona vremenska razlika u poetku aktivacije usklaeni su ne moraju biti periodiki, samo usklaeni vremenski asinkroni dva dogaaja nemaju usklaeno vremena aktivacije
  • 9. Strategije za izradu kernela Petlja s prozivanjem (Polled Loop Systems) Kru転no pokretanje (Cyclic Executive) Kooperativna vi邸ezadanost (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 dogaaji (poll) provjeravanjem zastavice (flag) ili ulaza koji oznaava potrebnu aktivaciju koristi se kod jednostavnih sustava ili kao pozadinski sustav kod sustava s prekidima ako je vi邸e dogaaja, 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(;;){//beskonacnapetlja if(new_packet==1){//provjerizastavicu process_packet();//obradidoga aj new_packet=0;//resetirajzastavicu } }
  • 11. Sinkronizirana petlja s prozivanjem Sinkronizirana petlja s prozivanjem u petlji se redovito prozivaju dogaaji (poll) provjeravanjem zastavice (flag) ili ulaza koji oznaava potrebnu aktivaciju, a sam dogaaj se obrauje vremenski usklaeno 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(;;){//beskonacnapetlja if(button==1){//provjerizastavicu delay_ms(20);//pauzaod20ms process_packet();//obradidoga aj button=0;//resetirajzastavicu } }
  • 12. Petlja s prozivanjem i zastavice Petlja s prozivanjem i zastavice Kako se zastavice postave na pravu vrijednost? Prozivanje (poll) vrijednosti ulaza problematino ako se radi o aktivnosti koja traje vremenski kratko a vrijeme izmeu prozivanja je predugo Kori邸tenjem prekida uestaliji 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 zadaa time 邸to se neprestano pokreu kratki procesi u beskonanoj petlji ne koristi prekide (interrupt) ako je vremenski rok (deadline) kritian, tada svaki pojedini zadatak mora biti vremenski odreen (broj instrukcija mora biti poznat, nisu dozvoljene petlje s neodreenom 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 nain da se po izvr邸avanju pojedine faze kontrola vraa sustavu koji rasporeuje zadatke. Sustav za rasporeivanje zadataka odluuje koji zadatak se dalje izvr邸ava (mogue 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 Rasporeivanje zadataka je usklaeno koristei sklopovske ili programske prekide te se rasporeivanje 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 pokree 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 (sporadini, 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 obraeni i u klasinim funkcijama, ne samo u prekidnoj rutini Obrada zadataka bi trebala biti 邸to kraa (naroito 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 odraivanju zadae kontekst se vraa. 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. Iskljui prekide 2. Postavi prekidne vektore 3. Obavi test sustava 4. Obavi inicijalizaciju drugih stvari u sustavu 5. Ukljui prekide
  • 19. Pozadinski zadatak Pozadinski zadaci ne smiju biti ovisni o vremenu Izvode se samo ako nema prekida (odnosno ima slobodnog vremena za izvoenje pozadinskih aktivnosti) esta upotreba je provjera radi li sustav u redu Nije vremenski kritino, ali je dobro znati trenutno stanje sustava Openito: Vrijeme izvoenja 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 odreenog vremenskog razdoblja oznaava 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 mogunosti: podr邸ka za mre転ne komunikacijske protokole, dodatni sklopovi su podr転ani kroz sustav pokretaa (drivera), podr転ani su sustavi za lako uoavanje i ispravljanje gre邸aka (debugging) Takvi sustavi imaju razliite kompleksne algoritme za usklaivanje 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 rasporeivanjem zadataka (kooperativni multitasking + preemptive priority) C. Komunikacija i sinkronizacija izmeu zadataka D. Rad sa sustavom koji mjeri vrijeme E. Upravljanje memorijom F. Podr邸ka za ulazno izlazne jedinice (kori邸tenje pokretakih (driver) programa) G. Brzo prikupljanje podataka s U/I jedinica H. Korisnika kontrola sistemskih resursa I. Rad s gre邸kama i iznimkama Real-time OS mora podr転avati stvaranje, brisanje i rasporeivanja vi邸e zadataka istovremeno Real-time OS mora moi obraditi svaki dogaaj na strogo determinirani nain (poznat nain i vrijeme obrade) Real-time OS mora podr転avati pouzdanu i brzu komunikaciju izmeu procesa kroz poznate procese, poput prosljeivanja poruka, djeljene memorije i semafora. Real-time OS mora moi obraditi vrlo velike koliine podataka u kratkom vremenu
  • 23. RTOS sustavi rasporeivanja zadataka Zadatak-kontrola blok nain 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 izvoenje, 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