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