Upload
mladen-sremcevic
View
222
Download
0
Embed Size (px)
Citation preview
8/6/2019 OperativniSistemi_v2.2008_skripta
1/90
Sadraj
I
VISOKA TEHNIKA KOLA
SKRIPTA IZ PREDMETA:
OPERATIVNI SISTEMI RAUNARA
ODABRANA POGLAVLJAIZ OPERATIVNIH SISTEMA
SADRAJ
1. UVOD
2. UPRAVLJANJE PROCESIMA
3. UPRAVLJANJE PROCESOROM
4.UPRAVLJANJE MEMORIJOM
5.UPRAVLJANJE DATOTEKAMA
Kragujevac, Maj 2008.
Mr Sran Atanasijevi, dipl.ing.inf.
8/6/2019 OperativniSistemi_v2.2008_skripta
2/90
Sadraj
8/6/2019 OperativniSistemi_v2.2008_skripta
3/90
Operativni sistemi: Uvod
1
1 UVODPod operativnim sistemom podrazumeva se organizovan skup sistemskih programa koji deluju kao
posrednik izmedju hardvera i korisnika, pruajui korisniku usluge koje olakavaju projektovanje,
implementaciju i odravanje programa, a istovremeno upravljaju dodeljivanjem (alokacijom) resursa
sistema u cilju njegovog efikasnog rada, ili krae reeno:
Operativni sistem je organizovan skup sistemskih programa koji upravlja radom razliitih
komponenti raunarskog sistema sa ciljem da omogui efikasan rad korisnika i efikasno korienje
resursa samog sistema.
Vrlo je teko dati definiciju operativnog sistema na osnovu onoga to on jeste. I u strunoj
literaturi koja se bavi ovom problematikom, mnogo ee se daje definicija na osnovu onoga to on
radi. Operativni sistem je program namenjen da zajedno sa hardverom raunara obezbedi upotrebljiv
raunarski sistem. Pod tim se podrazumeva da operativni sistem treba da obezbedi korisniku udobno
radno okruenje i korienje resursa raunara na najbolji mogui nain. Pored ovih, on vri i kontrolnu
funkciju - kontrolie da li se raunar koristi na odgovarajui nain i spreava eventualne greke.
Operativni sistem esto vodi i evidenciju korienja resursa, dogaaja na sistemu, otkaza sistema i sl.
Mesto operativnog sistema u okviru raunarskog sistema se moe prikazati emom na slici 1.
HARDVER
OPERATIVNI SISTEM
APLIKATIVNI SOFTVER
KORISNICI
Slika 1. Struktura raunarskog sistema.
Najee se operativni sistem i definie prema mestu koje zauzima u njoj:
Operativni sistem je skup programa koji predstavljaju interfejs izmeu korisnika i hardvera raunarskog
sistema.
Druga definicija koja se takoe esto koristi je vezana je za resurse kojima operativni sistem upravlja:
Operativni sistem je skup programa za upravljanje: procesorom (jednim ili vie), operativnom memorijom, I/O
ureajima i fajlovima .
8/6/2019 OperativniSistemi_v2.2008_skripta
4/90
Operativni sistemi: Uvod
2
1.1 Klasifikacija operativnih sistemaJedna od najeih podela operativnih sistema, vri se na osnovu broja korisnika i programa koji u jednom
trenutku koriste raunarski sistem.
Po ovom kriterijumu operativni sistemi se dele na:
monokorisnike/monoprogramske operativne sisteme kod kojih postoji samo jedan korisnik i jedan program
koji se izvrava u bilo kom trenutku vremena. Personalni raunari rade sa ovakvim operativnim sistemima -
CP/M, DOS...
multikorisnike/monoprogramske operativne sisteme kod kojih vie korisnika koriste jedan isti program.
Ovakav operativni sistem sreemo kod namenskih ureaja - rezervisanje avionskih karata, obrada potanskih
usluga...
multikorisnike/multiprogramske operativne sisteme koji predstavljaju najoptiji sluaj. U ovom sluaju
razliiti korisnici izvravaju razliite programe. Izvravanje programa je kvaziparalelno ili kako se to ee
kae konkurentno. Program se izvrava za vreme dok drugi program eka na neki dogaaj (na periferiju kojaje znatno sporija od procesora, ili neki resurs zauzet od strane drugog programa koji je vieg prioriteta od
tekueg). Time se obezbeuje paralelan rad procesora i periferije to doprinosi boljoj iskorienosti
procesora.
Druga podela operativnih sistema se vri na osnovu tipa obrade i komunikacije sa korisnikom:
Operativni sistemi sa paketnom obradom (batch processing) su najstariji po vremenu nastanka, a ime im
potie iz vremena kada su programi unoeni putem buenih kartica. Poslovi se izvravaju onim redosledom
kojim pristiu u red poslova spremnih za izvravanje. esto se poslovi dele u vie redova (klasa) po hitnosti
njihovog izvravanja. Skoro svi savremeni operativni sistemi nude i ovaj tip obrade (ak i operativni sistemi
namenjeni personalnim raunarima).
Operativni sistemi sa raspodijeljenim vremenom ("Time Sharing") su klasa kojoj pripadaju skoro svi
savremeni multiprogramski operativni sistemi. Svakom od procesa (korisnika) se dodeljuje odreeni kvant
vremena u kome isti dobija na korienje procesor - interval u kome se program izvrava. Po isteku kvanta
vremena procesor se oduzima tekuem i dodeljuje drugom procesu (korisniku).
Operativni sistemi za rad u realnom vremenu (Real Time Operating Systems) predstavljaju treu klasu
operativnih sistema. Njihova namena je upravljanje industrijskim procesima i mainama, to jest obrada
spoljnih asinhronih dogaaja. Spadaju u klasu multiprogramskih operativnih sistema od kojih se trai da
ispune zahtev reakcije u nekom fiksiranom vremenskom intervalu. U sluaju da ovaj uslov nije zadovoljen
mogui su gubitci vitalnih podataka i katastrofalne posledice usled nereagovanja sistema.
1.2 Struktura operativnih sistemaZavisno od stepena sloenosti i naina realizacije operativni sistemi po strukturi mogu biti vrlo raznoliki.
Jednostavni, mali operativni sistemi mogu imati takozvanu monolitnu strukturu, to jest predstavljati skupprograma koje poziva korisniki program i koji se meusobno pozivaju u cilju obavljanja odreenih
funkcija.
Za vee operativne sisteme, kod kojih je broj funkcija koje se od sistema trae znatno vei, ovakvastruktura je nepogodna, pa se preporuuje takozvana slojevita (spratna) struktura. Programi se grupiu u
8/6/2019 OperativniSistemi_v2.2008_skripta
5/90
Operativni sistemi: Uvod
3
slojeve koji se oznaavaju brojevima: 1, 2, ..., n. Pri tome se podrazumeva da moduli sloja 5 pozivaju
samo module sloja 4, moduli sloja 4, samo module sloja 3 itd. esto se ovo pravilo ne potuje do kraja
pa moduli sloja 5 mogu da pozivaju i module sloja 3, na primer.
Dva primera slojevite strukture data su na slici 2.:
KORISNIKI PROGRAMI 6
FAJL SISTEM 5 KORISNIKI PROGRAMI
UPRAVLJANJE I/O UREAJIMA 4 FAJL SISTEM
GORNJI NIVO UPRAVLJANJA
PROCESIMA
3 UPRAVLJANJE I/O UREAJIMA
UPRAVLJANJE OPERATIVNOM
MEMORIJOM
2 UPRAVLJANJE OPERATIVNOM
MEMORIJOM
DONJI NIVO UPRAVLJANJA
PROCESIMA
1 JEZGRO
(UPRAVLJANJE PROCESIMA)
HARDVER 0 HARDVER
Slika 2. Dva primera operativnih sistema sa slojevitom srukturom.
U jednostavnijoj varijanti takozvano jezgro (kernel), sadri samo deo za upravljanje procesima (Pod
terminom upravljanje procesima podrazumeva se dodeljivanje procesora odreenom procesu). Svi ostali
moduli nalaze se van jezgra. Jezgro operativnog sistema se po pravilu pravi tako da radi u privilegovanom
reimu rada - nijedna druga rutina ni dogaaj ne moe prekinuti izvravanje rutina koje mu pripadaju.
Trei pristup realizaciji operativnog sistema koristi tzv. klijent - server koncepciju. Sve funkcijeoperativnog sistema realizuju se pomou procesa koji se nazivaju serveri. Korisniki programi se
nazivaju klijenti i u okviru njih se vri pozivanje funkcija i preuzimanje rezultata. Jezgro operativnog
sistema pri tome slui samo za organizaciju komunikacije izmeu klijenata i servera (slika 3.).
PROCES KLIJENT 1
PROCES SERVER 1
JEZGRO OPERATIVNOG SISTEMA
PROCES KLIJENT 2 PROCES KLIJENT N
PROCES SERVER 2 PROCES SERVER N
Slika 3. Struktura operativnog sistema sa klijent-server arhitekturom.
1.3 Komunikacija korisnika i operativnog sistemaKomunikacija korisnika i operativnog sistema se odvija putem sistemskih poziva. Njima se iz korisnikog
programa pokreu funkcije koje obezbeuje operativni sistem. Sistemski pozivi u okviru korisnike aplikacijeimaju izgled naredbi viih programskih jezika. Na tom mestu prevodilac ubacuje makroproirenje - niz
instrukcija koje procesor mora da izvri da bi se pokrenula funkcija operativnog sistema. Njima se obezbe uje
prenos parametara sistemskog poziva na mesto gde ih operativni sistem oekuje, poziva se funkcija operativnog
sistema, i vraaju rezultati sistemskog poziva.
1.4 Pristup problematici operativnih sistema tokom kursaUvod u operativne sisteme
8/6/2019 OperativniSistemi_v2.2008_skripta
6/90
Operativni sistemi: Uvod
4
Tokom predavanja apstrahovaemo problematiku operativnih sistema prema sledeoj definiciji,
iznetom na poetku poglavlja:
Operativni sistem je organizovan skup sistemskih programa koji upravlja radom razliitih
komponenti raunarskog sistema sa ciljem da omogui efikasan rad korisnika i efikasno korienje
resursa samog sistema.
Pri tome se funkcije operativnog sistema mogu, grubo, podeliti u etiri grupe:- upravljanje procesima
- upravljanje memorijom
- upravljanje uredjajima
- upravljanje podacima.
Oigledno je da akcenat na rei upravljanje u navodjenju funkcija operativnog sistema nije
sluajan. Naime, u situaciji kada se u raunaru odvija vie aktivnih procesa (programa koji se
izvravaju) jasno je da e ti procesi konkurisati jedan drugom u pogledu korienja resursa raunara
(procesora, memorije, razliitih uredjaja, datoteka itd.). Zadatak operativnog sistema je da omogui
neometano odvijanje svih procesa na takav nain da se svi resursi sistema to efikasnije iskoriste.
Sa stanovita naina komuniciranja izmedju korisnika i raunara i vremena odziva raunara na
zahtev korisnika razlikujemo tri osnovna reima rada raunarskog sistema:
Grupna (ili serijska - batch) obrada je takav nain rada raunara u kome korisnici predaju svoje
poslove (job-ove) na izvrenje posredstvom ulaznih jedinica raunara i koji se zatim odvijaju jedan za
drugim u nizu, pri emu korisnik nema mogunost komuniciranja sa svojim poslom.Vreme odziva
raunara je obino u granicama od nekoliko minuta.
Obrada sa zajednikim korienjem vremena (time - sharing) je takav nain rada raunara u kome
vie korisnika paralelno (istovremeno) koristi raunar i pri tome komunicira sa svojim poslovima.
Paralelnost u radu se postie tako to se svakom korisnikom programu dodeljuje jedan kvantum
vremena centralnog procesora (Pc-a) (na primer 100 ms), tako da je odziv na svaku poruku korisnika u
granicama od nekoliko sekundi. Po isteku vremenskog kvantuma dodeljenog jednom procesu, on se
prekida, bez obzira da li je zavrio sa radom ili ne, a procesor se dodeljuje sledeem procesu u redu
ekanja.
Rad u realnom vremenu (real-time) je takav nain rada u kome se nekom procesu omoguava
odziv sistema u strogo zahtevanom vremenskom intervalu (izraenom najee u milisekundama ili
sekundama u zavisnosti od samog procesa). Takvim procesima se omoguava da generisanjem zahteva
(signala) za prekid dobijaju centralni procesor na raspolaganje.
Nain (reim) rada raunarskog sistema u znatnoj meri utie na projektovanje i strukturu
operativnog sistema, pri emu esto jedan operativni sistem moe da podrava vie razliitih reima
rada raunara.
8/6/2019 OperativniSistemi_v2.2008_skripta
7/90
Operativni sistemi: Upravljanje procesima
2
2 UPRAVLJANJE PROCESIMA
2.1 PROCES, STANJA PROCESA I KONTROLNI BLOK PROCESA
Pod procesom se, najkrae reeno, podrazumeva program koji se izvrava. Naime,
program predstavlja statiki pojam - skup instrukcija, odnos opisa akcija koje treba izvriti.
Samo izvravanje tih akcija dovodi do promene stanja (sadraja) registara centralnog
procesora, memorijskih lokacija i drugih uredjaja raunarskog sistema; drugim reima u
raunarskom sistemu se odvija proces koji menja stanje sistema.
SPREMAN ^EKA
IZV[AVA
SE
aktiviranje
dodeljen Pcistekao
vremenski
kventum
zahtev za resurs
dodeljen resurs
zavr{etak
programa
Slika 2.1
Zahtevom za izvravanje odredjenog programa aktivira se odgovarajui proces. Takav
zahtev moe da potekne od korisnika, od operativnog sistema ili od nekog drugog ve
aktivnog procesa. Kada se tako aktiviranom procesu dodeli (od strane operativnog
sistema) memorija i drugi resursi neophodni za njegovo odvijanje, proces se nalazi ustanju SPREMAN (za rad), gde u redu sa drugim spremnim procesima eka na
dodeljivanje procesora, (slika 2.1). Kada mu se dodeli procesor proces poinje da se
izvrava, tj. prelazi u stanje IZVRAVA SE. U toku izvravanja moe doi do prekida
procesa jer on sam zahteva izvravanje neke ulazne/izlazne operacije. Proces tada prelazi
u stanje EKA, gde u redu sa drugim procesima eka da se oslobodi neki od U/I
procesora i U/I uredjaja da bi se zahtevana U/I instrukcija izvrila. Kada se to dogodi
proces je ponovo SPREMANza rad. No, proces moe biti prekinut od strane operativnog
sistema i iz drugih razloga (istek vremenskog kvantuma koji mu je dodeljen, na primer)tako da je on u stvari i dalje SPREMANza rad ali mora da eka svoj red za ponovno
8/6/2019 OperativniSistemi_v2.2008_skripta
8/90
Operativni sistemi: Upravljanje procesima
3
dodeljivanje procesora. Konano, mogue je da se proces izvri do kraja i operativni
sistem o njemu dalje ne vodi rauna.
Navedenu podelu stanja u kojima moe da se nadje aktivan proces mogue je "finije"
podeliti no za potrebe daljeg izlaganja ovakva podela je sasvim dovoljna.
Za svaki aktivan proces, operativni sistem mora da vodi odredjene podatke. Skup
takvih podataka naziva se kontrolni blok procesa, KBP (ili kako se jo kae vektor stanja ili
deskriptor procesa). Tipian izgled jednog KBP-a prikazan je na slici 2.2.
Kako operativni sistem mora da vodi kontrolni blok procesa za svaki aktivan proces,
oigledno je da e u memoriji postojati vie KBP-a, koji su medjusobno povezani,
najee u obliku liste. O odravanju i korienju takve liste bie vie rei kasnije.
Ime procesa
Identitet vlasnika
Prioritet
Stanje
PSW
Oblast programa
Gornja granica prog.
Oblast podataka
Gornja granica podataka
Op{ti registar - 1
Program
Podaci
Slika 2.2 Kontrolni blok procesa
2.1.1 UPOREDNI PROCESI
Vratimo se za trenutak definiciji procesa koju smo dali u prethodnom odeljku, gde smo
rekli da je proces program koji se izvrava. Odatle proizlazi da pojmovi procesa i programa
nisu ekvivalentni. Naime, program je statiki pojam - oznaava skup instrukcija koje
definiu (opisuje) akcije ili radnje koje treba izvriti. No, da bi se te radnje mogle izvriti
mora da postoji i aktivni element-procesor koji izvrava instrukcije. Prema tome, uslov za
nastanak procesa je postojanje programa i procesora koji izvrava program, pa je proces
dinamiki pojam definisan kao par .
8/6/2019 OperativniSistemi_v2.2008_skripta
9/90
Operativni sistemi: Upravljanje procesima
4
P
K K
P
K
P
P1
P2
P3
P4
P3 P5 P6 P4
P7 P8
P1 P2 P3 P4
(a) (b) (c)
P1
P2
Slika 2.3 Podela procesa na podprocese
Posmatrajmo sada jedan proces i predpostavimo da se on moe podeliti na vie
jednostavnijih procesa, koje emo nazvati podprocesima. Tada pod sekvencijalnim
procesom podrazumevamo proces ija je medjuzavisnost podprocesa takva da jedan
podproces ne moe da pone dok se neki drugi podproces ne zavri. Takav proces se
moe predstaviti kao na slici 2.3.(a). gde P i K oznaavaju po
etak, odnosno krajposmatranog procesa, Pi, i=1,4 oznaava podprocese. Na slici 2.3.(b) prikazana je
situacija u kojoj je sistem podprocesa takav da se oni mogu izvravati uporedo (paralelno).
Konano na slici 2.3.(c) prikazana je situacija u kojoj je prethodjenje procesa takvo da se
neki mogu izvravati paralelno, a neki se moraju izvravati sekvencijalno. Prikazani
dijagrami nazivaju se grafovi toka procesa.
Posmatrajmo sada jedan program u kome je potrebno da se izrauna vrednost
aritmetikog izraza
(a + b) * (c + d) - e / f
Na slici 2.4. prikazano je kako se pojedini podizrazi mogu paralelno izraunati. No da li
je to i ostvarljivo? Odgovor je da - ako postoji vie nezavisnih aktivnih elemenata -
procesora. Drugim reima, potvrdjuje se valjanost definicije da je proces definisan parom
.
8/6/2019 OperativniSistemi_v2.2008_skripta
10/90
Operativni sistemi: Upravljanje procesima
5
a b c d
+ + ef
K
K
t1
:=a+b
t3
:=t1
*t2
t2
:=c+d
t4
:=e/f
t5
:=t3
-t4
Slika 2.4 Paralelno izraunavanje delova izraza
Iz prethodne diskusije proizlazi da je paralelno izvravanje vie programa, odnosno
paralelno (istovremeno) odvijanje vie procesa u raunaru mogue samo ako se
raunarski sistem sastoji od vie centralnih procesora. Za takav raunarski sistem se kae
da je vieprocesorski(multiprocesorski) sistem. No, to ne znai da je za vieprogramski
rad (multiprogramiranje) neophodno da se raunar sastoji od vie centralnih procesora.
Naime, veina raunarskih sistema se sastoji od jednog centralnog procesora i vie U/I
procesora. To praktino znai da procesor moe da u jednom vremenskom trenutku
izvrava naredbe samo jednog programa. U trenutku kada taj program zahteva izvrenje
neke U/I operacije procesorzahtev prenosi nekom od Pio (input/output processor) koji e
obaviti odgovarajuu U/I operaciju. Za to vreme procesormoe izvravati naredbe nekogdrugog programa, sve dotle dok taj program ne zahteva izvrenje neke U/I operacije. Tada
procesor prelazi na izvravanje naredbi nekog treeg programa, ili se vraa na prvi
program ako je zavrena U/I operacija koju je on zahtevao. Opisana situacija bi se za dva
aktivna programa mogla prikazati kao na slici 2.5. U bilo kom vremenskom trenutku t
(0,T) procesor izvrava naredbe samo jednog programa, ali gledajui ceo interval (0,T)
moemo zakljuiti da se oba programa nalaze izmedju svog poetka i zavretka. Za
ovakav nain izvravanja programa kae se da se oni izvravaju kvaziparalelno.
P1
P2
T0 t
U bilo kom trenutku izvr{ava se
samo jedan program
Slika 2.5 Kvaziparalelno izvravanje dva procesa
8/6/2019 OperativniSistemi_v2.2008_skripta
11/90
Operativni sistemi: Upravljanje procesima
6
Pri tome, treba posebno istai da dva ili vie procesa, bez obzira da li se izvravaju
paralelno ili kvaziparalelno, konkuriu jedan drugom za dobijanje resursa raunara
(hardvera, softvera, datoteka itd.). Jedan od bitnih problema operativnog sistema je
upravljanje ovakvim, uporednim procesima.
2.1.2 POJAM NITI
Aktivnost procesa karakterie redosled u kome se izvravaju naredbe programa. Ovaj
redosled se naziva trag (trace) procesa.
Trag procesa moe da se prikae kao nit (thread) koja povezuje izvrene naredbe u
redosledu njihovog izvravanja. Ako se za proces vee jedna nit, tada ona ima atribute
procesa, znai njegovo stanje i njegov prioritet. U toku aktivnosti niti izvravaju se naredbekoje ona povezuje.
Vezivanje za proces jedne niti je posledica pretpostavke da proces odgovara
izvravanju sekvencijalnog programa. Za sekvencijalni program se podrazumeva da se
naredbe izvravaju jedna za drugom u unapred zadanom redosledu, koji je zavisan od
obraivanih podataka. Ovakve naredbe obrazuju sekvencu naredbi.
Praksa pokazuje da je korisno za procese vezati vie od jedne niti. U tom sluaju stek,
prioritet i stanje se ne vezuju za proces, nego za njegove niti. Znai, svaka od niti procesa
ima svoj stek, svoj prioritet i svoje stanje, odnosno svoj deskriptor. Na primer, za editiranjeteksta su vane, izmeu ostalog, dve aktivnosti. Prva je posveena interakciji sa
korisnikom, a druga je zaduena za periodino smetanje unesenog teksta na masovnu
memoriju (radi spreavanja gubljenja teksta).
Ako je za editorski proces vezana jedna nit, tada se pomenute aktivnosti odvijaju jedna
za drugom (sekvencijalno). Znai, za vreme trajanja druge aktivnosti nije mogua
interakcija sa korisnikom, to je ozbiljan nedostatak. On se moe otkloniti, ako se za
editorski proces veu dve niti raznih prioriteta. Prioritetnija (hitna) nit se pridruuje prvoj
aktivnosti, a manje prioritetna (pozadinska) nit se pridruuje drugoj aktivnosti. Pod
pretpostavkom da hitna nit eka na interakciju sa korisnikom, pozadinska nit moe biti
aktivna sve dok, na primer, pritisak dirke na tastraturi ne najavi poetak interakcije sa
korisnikom. Tada obrada odgovarajueg prekida prevodi hitnu nit u stanje spremna, pa se
procesor prekljuuje sa prekinute pozadinske niti na hitnu nit. U toku svoje aktivnosti hitna
nit obavi interakciju sa korisnikom i vrati se u stanje eka, to dovodi do prekljuivanja
procesora na prekinutu pozadinsku nit. Zahvaljujui prekljuivanju procesora sa
pozadinske niti na hitnu nit, u toku editiranja nema perioda bez odziva. Procesi sa vie niti
odgovaraju izvravanju konkurentnih programa u kojima istovremeno (concurrently) postoji
vie relativno nezavisnih sekvenci naredbi.
8/6/2019 OperativniSistemi_v2.2008_skripta
12/90
Operativni sistemi: Upravljanje procesima
7
2.1.3 PROBLEMI UPRAVLJANJA UPOREDNIM PROCESIMA
U cilju ilustracije osnovnih problema koji se javljaju kod upravljanja uporednim
procesima posmatrajmo proces S i R na Slici. 2.6 ProcesS (poiljalac) formira poruke iupisuje ih u bafer iji je maksimalni kapacitet C-poruka. Pri tome, proces S je duan da
povea vrednost promenljive N kako bi drugi proces, R (primalac) znao koliko ima poruka
u baferu. Slino tome, proces R po uzimanju poruke iz bafera duan je da vrednost N
smanji za 1, kako bi proces S znao koliko ima mesta u baferu.
S: begin P: begin
stop:=false; stop:=false;
repeat repeat
pripremi_poruku;
prihvati_poruku;
poalji_poruku; n:=n-1;;
n:=n+1; obradi_poruku
until stop; until stop;
end; end;
Bafer kapaciteta C poruka
Slika 2.6
Da bi procesi S i R ispravno funkcionisali, u situaciji kada njihove relativne brzine nisu
poznate, neophodno je da budu ispunjeni sledei uslovi:
- poiljalacS ne sme da alje poruku kada je bafer pun jer bi se ona izgubila
- primalac R ne sme da uzima poruku kada je bafer prazan jer bi to mogao
protumaiti kao signal da treba da prestane sa radom
- procesine smeju istovremeno pristupiti baferu
- vrednost promenljive N mora, u trenutku pristupa baferu bilo kog procesa, biti
jednaka stvarnom broju poruka u baferu.
Dok je predposlednji zahtev oigledan, za poslednji bi se moglo rei da je suvian.
Medjutim ne treba zaboraviti da bi se naredbe kojima se menja vrednost N, u sluajujednoadresnog raunara prevele na sledee mainske instrukcije.
8/6/2019 OperativniSistemi_v2.2008_skripta
13/90
Operativni sistemi: Upravljanje procesima
8
Proces S: N: = N + 1: Proces R: N: = N - 1:
LOAD N LOAD N
prekid prekid
ADD JEDAN SUB JEDAN
STORE N STORE N
Predpostavimo sada da je trenutna vrednost N = 4 i da u baferu ima stvarno 4 poruke.
Neka je dalje proces S upisao novu poruku u bafer tako da sada u baferu ima 5 poruka.
Proces S sada izvrava instrukciju LOAD N i ita vrednost N = 4. Ako posle izvrenja ove
naredbe dodje do prekida Pc se dodeljuje procesu R, koji uzima jednu poruku iz bafera
(sada ih je 4) i potom izvrava instrukcije LOAD, SUB i STORE. Vrednost N bie posle
toga jednaka 3 (zato?). Ako sada prekinemo proces R i Pc dodelimo procesu S on eizvriti naredbe ADD i STORE, tako da e vrednost promenljive N biti 5, a u baferu e biti
4 poruke.
DEFINICIJA POJMA KRITINE SEKCIJE PROGRAMA
Opisani problem nastao je zbog toga to su i bafer i promenljiva N zajedniki resursi za
procese S i R. Skup instrukcija kojima jedan proces pristupa resursu koji deli sa nekim
drugim procesom naziva se kritina sekcija. Oigledno, ne smemo dozvoliti da dva
procesa budu istovremeno u svojim kritinim sekcijama - neophodno je obezbediti njihovo
medjusobno iskljuenje u odnosu na kritine sekcije.Prva dva zahteva ukazuju na drugi problem. Naime, da bi oni bili zadovoljeni oigledno
je neophodno da obezbedimo sinhronizaciju procesa S tako da, ako je bafer pun, on mora
da eka da proces R uzme jednu poruku i smanji vrednost N za jedan i tako generie
signal procesu S da moe da nastavi sa radom. Slino tome, ako je bafer prazan R mora
da eka, sve dok S ne upie poruku u bafer i vrednost N povea za jedan i time signalizira
procesu R da moe da nastavi sa radom.
POJAM ME
USOBNOG BLOKIRANJA PROCESAPosmatrajmo sada dva procesa, P1 i P2, koji koriste iste resurse R1 i R2, ali ih
zahtevaju i uzimaju u obrnutom redosledu. Predpostavimo da proces P1 prvi pone sa
radom i uzme oba resursa pre nego to dodje do njegovog prekida (na primer zbog isteka
vremenskog kvantuma koji mi je dodeljen). Neka se zatim procesor dodeli procesu P2.
Ovaj proces e oigledno moi da se izvrava do trenutka kada zahteva resurs R2, kada
e morati da se prekine i predje u stanje EKA. No, proces P1 koji raspolae sa oba
zahtevana resursa moe da nastavi sa radom, pri emu e oslobodjati resurse i omoguiti
i procesu P2 da se izvri. Analogna situacija bi nastala kada bi proces P2 prvi dobio
centralni procesor i dobio oba resursa pre nego to bude prekinut. Medjutim,
predpostavimo sada da proces P1 pone prvi sa radom i dodje do prekida posle uzimanja
8/6/2019 OperativniSistemi_v2.2008_skripta
14/90
Operativni sistemi: Upravljanje procesima
9
resursa R1, a pre uzimanja resursa R2. Neka se u toj situaciji procesu P2 dodeli centralni
procesor i neka proces P2 uzme resurs R2. On e dalje nastaviti sa radom sve do
trenutka kada treba da uzme resurs R1.
P1: begin P2: begin
uzmi R1; uzmi R2;
- -
uzmi R2; uzmi R1;
- -
vrati R2; vrati R2;
- -
vrati R1; vrati R1;
end. end.
Slika 2.7 Situacija kada moe nastati meusobno blokiranje procesa
No, kako je resurs R1 ve zauzet proces B e da eka da se resurs oslobodi. procesor
se tada dodeljuje procesu P1, no on e moi da se izvrava samo do trenutka kada treba
da uzme resurs R2. Kako je resurs R2 ve zauzet proces P1 mora da eka na njegovo
oslobadjanje. Oigledno je da ni proces P1 ni proces P2 nee moi da se dalje odvijaju jer
ekaju jedan na drugog. Za opisanu situaciju se kae da su procesi medjusobno blokirani,
odnosno da je dolo do potpunog zastoja.
Konano treba istai da je neophodno realizovati mehanizam u raunaru koji e
omoguiti medjusobnu komunikaciju procesa.
U daljem izlaganju daemo rezime osnovna etiri problema u upravljanju procesima,
uslove koje treba zadovoljiti u njihovom reavanju i razmotriemo neka od moguih
reenja.
Problem 1. Medjusobno iskljuivanje procesa u odnosu na kritine sekcije znai da se u
bilo kom vremenskom trenutku samo jedan proces moe nai u svojoj kritinoj
sekciji.
Problem 2. Sinhronizacija procesa znai da odredjen proces ne moe ii dalje od unapred
definisane take bez eksplicitnog signala koji on sam ne moe da generie.
Problem 3. Dva procesa su blokirana ako nijedan od njih ne moe da nastavi sa radom
dok drugi ne nastavi sa radom. Sistem je blokiran ako su svi procesi blokirani.
Problem 4. U raunarskom sistemu neophodno je realizovati mehanizam za komunikaciju
izmedju procesa na takav nain da im omogui da medjusobno saradjuju i
uspeno razmenjuju poruke.
8/6/2019 OperativniSistemi_v2.2008_skripta
15/90
Operativni sistemi: Upravljanje procesima
10
Uspeno reenje navedenih problema mogue je ako operativni sistem obezbedi
zadovoljenje sledea tri osnovna zahteva:
Zahtev 1. Uporedni procesi sa kritinim sekcijama, jedan u odnosu na drugog, moraju se
medjusobno iskljuivati tako da se istovremeno ne nalaze u svojim kritinim
sekcijama.
Zahtev 2. Proces koji se zaustavio van svoje kritine sekcije ne sme onemoguiti dalje
odvijanje drugih, nezavisnih procesa.
Zahtev 3. Procesi ne smeju beskonano dugo ekati na resurse ili signale.
8/6/2019 OperativniSistemi_v2.2008_skripta
16/90
Operativni sistemi: Upravljanje procesima
11
2.1.4 MEDJUSOBNO ISKLJUENJE I SINHRONIZACIJA
Posmatrajmo dva sekvencijalna, medjusobno nezavisna procesa, uz ogranienje da
ne smeju istovremeno biti u svojim kritinim sekcijama. Razmotrimo neka od moguih
reenja problema medjusobnog iskljuenja i sinhronizacije posmatranih procesa koja eistovremeno zadovoljiti i zahteve definisane u prethodnom odeljku.
Reenje 1: Uvedimo jednu promenljivu, koju emo nazvati prebaci, ije vrednosti
mogu biti 1 ili 2 u zavisnosti od toga da li je procesu P1, odnosno procesu P2, dozvoljen
ulazak u kritinu sekciju.
var prebaci : integer;
beginprebaci := 1; (* postavi poetnu vrednost promenljive *)
parbegin
P1 : begin
stop:=false
repeat
L1: if prebaci = 2 then goto L1;
kritina_sekcija_1;
prebaci : = 2;ostale_naredbe_1;
until stop;
end;
P2 : begin
stop:=false;
repeat
L2: if prebaci = 1 then goto L2;
kritina_sekcija_2;
prebaci : = 1;
ostale_naredbe_2;
until stop;
end;
parend;
end.
8/6/2019 OperativniSistemi_v2.2008_skripta
17/90
Operativni sistemi: Upravljanje procesima
12
Analizom ovog reenja moe se pokazati da je problem medjusobnog iskljuenja
uspeno reen. Naime, pretpostavimo da je proces P1 prvi dobio centralni procesor i da je
izvrio testiranje promenljive prebaci. Kako je poetna vrednost ove promenljive jednaka
jedinici proces P1 ulazi u svoju kritinu sekciju. Pretpostavimo sada da je proces P1
prekinut u svojoj kritinoj sekciji i da je procesor dodeljen procesu P2. Ovaj proces e
takodje testirati vrednost promenljive prebaci, ali kako je ona i dalje jednaka jedinici
proces P2 nee moi da napreduje vee se stalno vraati na izvrenje iste naredbe sa
simbolikom adresom L2. Na taj nain proces P2 nee moi da udje u svoju kritinu
sekciju sve dok proces P1 ne dobije ponovo procesor, izvri sve naredbe svoje kritine
sekcije i vrednost promenljive prebaci ne postavi na dva. Analognim razmiljanjem moe
se pokazati da ni proces P1 nee moi da udje u kritinu sekciju ukoliko se proces P2
nalazi u svojoj kritinoj sekciji.
Ovo reenje ima medjutim i bitnih nedostataka koji se ogledaju u sledeem:
(i) reenje je restriktivno : s obzirom na poetni uslov u kritinu sekciju moe prvo ui
samo proces P1, a zatim samo proces P2, pa opet P1, itd.
(ii) prekid jednog od procesa van kritine sekcije onemoguava odvijanje drugog procesa,
to znai da zahtev 2 nije zadovoljen. Naime, prepostavimo da se proces P1 zavri
(normalno ili abnormalno, svejedno) van kritine sekcije, na primer posle postavljanja
promenljive prebaci na dva, u delu ostale_naredbe_1. Proces P2 e u tom sluaju moida udje u svoju kritinu sekciju jo samo jedanput jer e po izlasku iz kritine sekcije
vrednost promenljive prebaci postaviti na jedinicu ime e sebi onemoguiti ponovni
ulazak u kritinu sekciju, pa samim tim i dalje izvravanje.
Pored navedenih nedostataka ovog reenja treba istai da nije opte, odnosno da vai
samo u sluaju dva procesa koji imaju kritine sekcije jedan u odnosu na drugog.
Uvodjenje novih procesa praktino nije mogue.
Reenje 2: U prethodnom reenju promenljiva prebaci imala je ulogu "skretnice"
izmedju dva procesa, to je zapravo i uzrok opisanim nedostacima. Umesto jedne
promenljive takvog tipa uvedimo za svaki proces posebnu promenljivu ija e vrednost
ukazivati na to da li se posmatrani proces nalazi u kritinoj sekciji ili ne.
Sada moemo pokuati da reimo problem medjusobnog iskljuenja na sledei nain:
var C1, C2 : integer; (* Ci = 0 proces Pi je u kritinoj sekciji
Ci = 1 proces Pi nije u kritinoj sekciji *)
begin
8/6/2019 OperativniSistemi_v2.2008_skripta
18/90
Operativni sistemi: Upravljanje procesima
13
C1:=1; C2:=1; (* poetni uslov - nijedan proces nije u kritinoj sekciji *)
parbegin
P1 : begin
repeat
L1 : if C2 = 0 then goto L1;
prekid_1
C1 : = 0;
kritina_sekcija_1;
C1 : = 1;
ostale_naredbe_1;
until stop;
end;
P2 : beginrepeat
L2 : if C1 = 0 then goto L2;
C2 : = 0;
prekid_2 kritina_sekcija_2;
C2 : = 1;
ostale_naredbe_2;
until stop;
end;parend;
end.
Ovo reenje nije restriktivno jer se moe pokazati da je redosled ulazaka procesa u
kritine sekcije proizvoljan. Naime, oigledno je da pri zadatim poetnim uslovima bilo koji
proces moe prvi da udje u svoju kritinu sekciju, a kako, po izlasku iz kritine sekcije,
svaki proces opet uspostavlja poetnu vrednost odgovarajue promenljive C1, odnosno
C2 to znai da opet bilo koji od njih moe da udje u svoju kriti
nu sekciju. Dalje, moe seuoiti da bilo koji od procesa, ako se prekine van svoje kritine sekcije, ne ometa
izvravanje onog drugog procesa.
Medjutim, ukoliko dodje do prekida procesa na mestima oznaenim kao prekid_broj
oba procesa e se istovremeno nai u svojim kritinim sekcijama, to znai da osnovni
cilj ovog reenja nije ostvaren, odnosno da nije obezbedjeno medjusobno iskljuenje
procesa u odnosu na kritine sekcije. Naime, pretpostavimo da je trenutno centralni
procesor dodeljen procesu P1, koji je testirao vrednost promenljive C2 i kako je ona bila
jednaka jedinici, pokaziva instrukcija je postavljen na adresu sledee instrukcije (C1:=0).
Neka je medjutim, proces P1 prekinut (prekid_1) pre nego to je izvrio tu instrukciju, to
8/6/2019 OperativniSistemi_v2.2008_skripta
19/90
Operativni sistemi: Upravljanje procesima
14
znai da je vrednost promenljive C1 i dalje jednaka jedinici. Ako se sada procesor dodeli
procesu P2, on e posle ispitivanja vrednost promenljive C1 moi da nastavi sa radom, da
promenljivu C2 postavi na nulu i da udje u svoju kritinu sekciju. Nastala situacija je
kritina jer moe dovesti do toga da se oba procesa nadju istovremeno u svojim kritinim
sekcijama. Neka, naime u ovoj situaciji dodje do prekida procesa P2 (prekid_2) i neka se
procesor ponovo dodeli procesu P1. Kako je ovaj proces prekinut posle izvrene
instrukcije testiranja vrednosti promenljive C2, on e nastaviti izvravanje od instrukcije
iju je adresu sadravao pokaziva instrukcija u trenutku prekida, tj. postavie vrednost
promenljive C1 na nulu i ui e u svoju kritinu sekciju. Naravno, ukoliko dodje samo do
prekida prekid_1, a ne dodje do prekida prekid_2, procesi ne bi bili istovremeno u kritinim
sekcijama. (Tada bi se moglo rei da je dolo do "bliskog susreta", ali bez traginih
posledica.) Napomenimo jo i to da bi u simetrinoj situaciji (kada bi se proces P2
prekinuo iznedju naredbe sa simbolikom adresom L2 i naredbe C2:=0) takodje moglo da
dodje do toga da se oba procesa istovremeno nadju u svojim kritinim sekcijama.
Reenje 3: Problem u prethodnom reenju nastao je zbog toga to je proces P1 bio
prekinut izmedju trenutka kada je uspeno izvrio testiranje promenljive C2 (naredba sa
simbolikom adresom L1) i trenutka kada je trebalo da postavljanjem vrednosti promenljive
C1 na nulu obavesti, odnosno efektivno zabrani procesu P2 da udje u svoju kritinu
sekciju. Pokuajmo zbog toga da modifikujemo prethodno reenje tako to emo izmeniti
redosled ovih instrukcija, pa e svaki od procesa prvo istai zabranu drugom procesu da
udje u njegovu kritinu sekciju, a zatim e vriti ispitivanje da li moe da udje u svojukritinu sekciju. Ovakvo reenje bi bilo oblika:
var C1, C2 : integer; (* Ci = 0 proces Pi je u kritinoj sekciji
Ci = 1 proces Pi nije u kritinoj sekciji *)
begin
C1:=1; C2:=1; (* poetni uslov - nijedan proces nije u kritinoj sekciji *)
parbegin
P1 : beginrepeat
C1 : = 0;
prekid
L1 : if C2 = 0 then goto L1;
kritina_sekcija_1;
C1 : = 1;
ostale_naredbe_1;
until stop;
end;
8/6/2019 OperativniSistemi_v2.2008_skripta
20/90
Operativni sistemi: Upravljanje procesima
15
P2 : begin
repeat
C2 : = 0;
L2 : if C1 = 0 then goto L2;
kritina_sekcija_2;
C2 : = 1;
ostale_naredbe_2;
until stop;
end;
parend;
end.
Slino prethodnom reenju, moe se lako pokazati da je i u ovom sluaju, redosledulazaka procesa u kritine sekcije je proizvoljan, kao i to da proces prekinut van svoje
kritine sekcije ne ometa izvravanje drugog nezavisnog procesa. Za razliku od
prethodnog reenja ovde se postie medjusobno iskljuenje, to se takodje moe lako
pokazati analiziranjem reenja u sluaju da se jedan od procesa prekine posle instrukcije
ispitivanja promenljive C1, odnosno C2, a pre ulaska u kritinu sekciju.
Medjutim ovo reenje dovodi do jednog drugog problema.Naime, neka dodje do prekida procesa P1 na oznaenom mestu, (prekid) i neka se
procesor dodeli procesu P2. Ovaj poslednji e u tom sluaju postaviti vrednost promenljive
C2 na nulu, a zatim e ispitivati vrednost promenljive C1. Kako je vrednost ove promenljive
u tom trenutku jednaka nuli proces P2 nee moi da napreduje dalje od instrikcije sa
simbolikom adresom L2. Neka se sada procesu P2 oduzme procesor i dodeli ponovo
procesu P1. Kako ovaj proces nastavlja od mesta gde je bio prekinut, sada e on testirati
vrednost promenljive C2 i kako je ta vrednost takodje jednaka nuli, ni ovaj proces nee
moi da napreduje dalje od instrukcije sa simboli
kom adresom L1.Drugim reima posmatrani procesi su medjusobno blokirani jer ni jedan ne moe da
nastavi sa radom dok onaj drugi ne nastavi sa radom.
2.1.5 SEMAFORI, P I V OPERACIJE
Analizom prethodna dva reenja uoili smo da ona ne daju eljeni efekat zbog toga to
je izmedju koraka ispitivanja mogunosti da se udje u kritinu sekciju i postavljanja
zabrane drugom procesu da udje u svoju kritinu sekciju mogu prekid. Polazei od togaE. Dijkstraje dao reenje problema medjusobnog iskljuenja i sinhronizacije procesa tako
8/6/2019 OperativniSistemi_v2.2008_skripta
21/90
Operativni sistemi: Upravljanje procesima
16
to je uveo nov tip promenljive koji se naziva semafor i iji je skup dozvoljenih vrednosti
skup nenegativnih celih brojeva. Pri tome je uveo dve dozvoljene operacije nad ovim
promenljivima koje je nazvao P i V operacijama, pri emu je
s : = s - 1 ako je s>0
P(s) = {
ekaj u suprotnom
V(s) = s : = s + 1,
gde je s promenljiva tipa semafor.
Naravno, sada se postavlja pitanje implementacije ovako definisanih operacija, pri
emu je poseban problem implementacija P operacije u sluaju kada je vrednost
promenljive s jednaka nuli. Jedna od mogunosti bi bila da se to uradi pomou instrukcije
tipa if, na nain slian onom koji prikazan u prethodna dva reenja. No to bi znailo da
proces koji pokuava da izvri P operaciju u situaciji kada je vrednost promenljive s
jednaka nuli, troi vreme centralnog procesora, pri emu ne moe da napreduje dalje, a
istovremeno onemoguava ostale procese da se izvravaju. Takva situacija se naziva
zaposleno ekanje (busy wait).
Umesto toga bilo bi loginije i efikasnije reenje da se proces, koji pokuava da izvri P
operaciju u posmatranoj situaciji, prekine i stavi u stanje ekanja na semafor, odnosno da
se "uspava". To medjutim, povlai za sobom i drugaiju implementaciju V operacije.
Naime, proces koji izlazi iz svoje kritine sekcije treba da omogui drugim procesima da
udju u njihove kritine sekcije, to se moe postii nasledei nain: ako u tom trenutku
postoji neki uspavan proces koji eka na semafor, tada proces koji izlazi iz svoje kritine
sekcije treba da ga "probudi", odnosno da mu omogui da se vrati u stanje SPREMAN,kada probudjeni proces dolazi u red ekanja na centralni procesor, dok u suprotnom, kada
nijedan proces ne eka na semafor treba samo da poveava vrednost promenljive tipa
semafor za jedan.
Predloeno reenjeP i V operacija moe se opisati na sledei nain:
procedure P (s : semaphore);
(* Procedura P(s) realizuje P-operaciju *)
(* *)
8/6/2019 OperativniSistemi_v2.2008_skripta
22/90
Operativni sistemi: Upravljanje procesima
17
(* P(s) = s := s - 1 ako je s>0 *)
(* ekaj u suprotnom *)
begin
zabrani prekide;
if s>0
then s : = s - 1
else begin
izbaci proces iz reda ekanja na Pc; (* uspavaj *)
ubaci proces u red ekanja na semafor (* proces *)
end;
dozvoli prekide;
end;
procedure V (s : semaphore);
(* Procedura v(s) realizuje v-operaciju-budjenje procesa *)
begin
zabrani prekide;
if red ekanja na semafor prazanthen s : =s+1
else begin
izbaci proces iz reda ekanja na semafor; (* probudi *)
ubaci proces u red ekanja na Pc (* proces *)
end;
dozvoli prekide;
end;
U predloenom reenju krije se medjutim i jedna opasnost. Naime, u predloenoj
implementaciji i P i V operacije postoji ispitivanje vrednosti promenljive tipa semafor,
odnosno stanja reda ekanja na semafor. Ukoliko bi u toku izvrenja ovih procedura dolo
do njihovog prekida mogli bi nastati problemi slini onima koje smo videli u prethodna dva
reenja problem medjusobnog iskljuenja i sinhronizacije. Zbog toga je Dijkstra P i V
operacije definisao kao "primitivne" operacije, odnosno hardverski neprekidiveoperacije
tako da se u opisanoj implementaciji P i V operacija pojavljuju koraci "zabrani prekide" i
"dozvoli prekide", koje oznaavaju da se pre poetka njihovog izvravanja hardverski
onemoguavaju prekidi, dok se po nihovom kompletnom izvravanju prekidi ponovo
8/6/2019 OperativniSistemi_v2.2008_skripta
23/90
Operativni sistemi: Upravljanje procesima
18
omoguavaju (to se, na primer, moe postii pomou odgovarajuih bitova u registru
stanja procesora).
Konano, prema predloenom reenju P i V operacije menjaju stanja aktivnih procesa
(iz IZVRAVA_SE u EKA, odnosno iz EKA u SPREMAN) to znai da se obe operacije
moraju implementirati kao sastavni deo operativnog sistema. Drugim reima, procesi
korisnika ne mogu direktno izvravati ove operacije, ve, pozivanjem ovih procedura
predaju upravljanje operativnom sistemu koji ih zatim izvrava na opisani nain.
U cilju ilustracije efekta implementacije P i V operacija posmatrajmo situaciju kada se u
listi aktivnih procesa nalaze tri procesa P1, P2 i P3, pri emu procesi P1 i P2 koriste neki
zajedniki resurs. Neka su dalje procesi P1, P2 i P3 istog prioriteta, tako da jedan proces,
kada mu istekne vreme dodele procesora, dolazi sa prvog na poslednje mesto u redu
ekanja na centralni procesor, dok se ostali procesi pomeraju za jedno mesto unapred.
Na slici 2.8a prikazana je situacija kada je proces P1 izvrio P(sem) operaciju nad
semaforom sem. ( Iako se ovde koristi termin "izvrio" operaciju stalno treba imati u vidu
da procesi korisnika samo iniciraju izvrenje ovih operacija od strane operativnog
sistema). S obzirom da je prethodno vrednost sem bila jedan, ona postaje nula. Prema
tome kada, neto kasnije, proces P2 dobije centralni procesor on e izvriti operaciju
P(sem) ali tako to e se "uspavati" - odlazi u red ekanja na sem (slika 2.8b. Kada,
kasnije, proces P1 izvri V(sem) operaciju, slika 2.8c on e "probuditi" proces P2 - vratiega u red ekanja na centralni procesor. Konano, kada proces P2 izvri V(sem)operaciju,
slika 2.8d on e, s obzirom da niko ne eka na sem (nema koga da "probudi"),
jednostavno vrednost sem postaviti na jedan. Na taj nain on omoguava sebi ili procesu
P1 da ponovo dodju do resursa, ako im je to naravno potrebno.
8/6/2019 OperativniSistemi_v2.2008_skripta
24/90
Operativni sistemi: Upravljanje procesima
19
P P P1 2 3
REDCP
P P P1 3 2
REDCP
P2
REDSEM
SEM
(a) Proces P1 je izvrio P(sem) operaciju
REDSEM
REDSEM
1
P P P2 3 1
REDCP
P P P1 1 3
SEM
(b) Proces P2 je izvrio P(sem) operaciju
SEM
REDSEM
P2
(d) Proces P2 je izvrio V(sem) operaciju
REDSEM
1
(c) Proces P1 je izvrio V(sem) operaciju
Slika 2.8
Razmotrimo sada reenje problema medjusobnog iskljuenja procesa korienjemsemafora, odnosno P i V operacija. U tu svrhu uvedimo promenljivu medisk(medjusobno
iskljuenje) tipa semafor. Oigledno je da se postavljanjem poetne vrednosti promenljive
medisk na jedan, omoguava bilo kom procesu da prvi izvri P operaciju i udje u svoju
kritinu sekciju. U sluaju da dodje do prekida tog procesa u kritinoj sekciji i dodele
procesora drugom procesu, ovaj potonji e pri pokuaju da izvri P operaciju biti prebaen
u red ekanja na semafor. Proces koji je prvi izvrio P operaciju, po izlasku iz svoje kritine
sekcije izvrava V operaciju tako to vrednost semafora ponovo postavlja na jedan, ili tako
to neki proces koji
eka na semafor prebacuje u red
ekanja na centralni procesor.
var medisk : semaphore;
begin
medisk : = 1;
parbegin
P1 : begin
repeat
P(medisk);
kritina_sekcija_1;
V(medisk);
8/6/2019 OperativniSistemi_v2.2008_skripta
25/90
Operativni sistemi: Upravljanje procesima
20
ostale_naredbe_1;
until stop;
end;
P2 : begin
repeat
P(medisk);
kritina_sekcija_2;
V(medisk);
ostale_naredbe_2;
until stop;
end;
parend;
end.
Opisano reenje se moe generalizovati na sluaj n > 2 procesa koji imaju kritine
sekcije jedan u odnosu na druge. U tom sluaju svaki od procesa bi bio oblika:
Pi : begin
repeat
P(medisk);
kritina_sekcija_i;V(medisk);
ostale_naredbe_i;
until stop;
end;
Pri tome treba napomenuti da smo u oba reenja vrednost semafora medisk ograniili
na skup (0,1). Takav semafor se naziva binarni semafor. U optem sluaju to ne mora bititako. Naime, razmotrimo sada kako se problem medjusobnog iskljuenja i sinhronizacije
procesa poiljaoca S (sender) i procesa primaoca poruka R (receiver) moe uspeno reiti
korienjem semafora.
Pri tome emo uvesti tri semafora. Prvi semafor im (ima mesta) uzima vrednosti iz
skupa {0,C}, gde je C kapacitet bafera.
Drugi semafor ip (ima poruka) uzima vrednost iz istog skupa ali tako da je im + ip = C.
Ova dva semafora omoguavaju sinhronizaciju procesa S i R, tako da proces S vri P
operaciju nad semaforom in. Ukoliko je im > 0 proces smanjuje broj mesta u baferu,
upsuje poruku i vri V operaciju nad semaforom ip. tj. poveava broj poruka za jedan.
8/6/2019 OperativniSistemi_v2.2008_skripta
26/90
Operativni sistemi: Upravljanje procesima
21
Ukoliko je im = 0 poces S eka da se oslobodi mesto u baferu. Slino tome proces R
izvrava P operaciju nad semaforom ip, ime smanjuje broj poruka u baferu, a zatim
Izvrava operaciju V nad semaforom im ime poveava broj slobodnih mesta za jedan.
Ukoliko je ip = 0, proces R eka da se unese poruka u bafer. Konano semafor medisk
slui za medjusobno iskljuenje procesa S i R u odnosu na pristup baferu koji je zajedniki
resurs za oba procesa.
Reenje sa odgovarajuim komentarima bilo bi oblika:
var im, (* im - ima mesta *)
ip, (* ip - ima poruka *)
medisk : semaphore (* medjusobno iskljuenje *)
begin
im : = C; (* u poetnom stanju bafer je prazan *)ip : = 0; (* prema tome u njemu nema poruka *)
medisk : = 1; (* nijedan proces nije u kritinoj sekciji *)
parbegin
S : begin
stop:=false;
repeat
pripremi_poruku;
P(im); (* ako je im = 0 ne sme da alje poruku *)P(medisk) (* postoji bar jedno prazno mesto u baferu *)
upii poruku;
V(medisk); (* oslobodi pristup baferu *)
V(ip); (* poveaj broj poruka u baferu za jedan *)
until stop;
end;
R : begin
stop:=false;repeat
P(ip); (* ako je ip = 0-nema poruka-ekaj *)
P(medisk); (* postoji bar jedna poruka u baferu
prihvati_poruku;
V(medisk); (* oslobodi pristup baferu *)
V(im); (* poveaj broj raspoloivih mesta u baferu za 1 *)
obradi poruku;
until stop;
end;
parend;
8/6/2019 OperativniSistemi_v2.2008_skripta
27/90
Operativni sistemi: Upravljanje procesima
22
end.
2.2 ZASTOJ (DEADLOCK)
Raunarski sistem se sastoji od konanog broja resursa, pri emu se u jednomsistemu za svaki resurs definie njegov tip i broj komada. Pod resursom se podrazumeva
bilo koja hardverska (centralni procesor, U/I procesor, memorijski prostor, magnetna traka
itd.) ili softverska (odredjeni program (rutina), datoteka itd.) komponenta neophodna
nekom procesu da bi mogao da se izvrava.
U reimu vieprogramskog rada procesi konkuriu jedan drugom za resurse, pri
emu svaki od aktivnih procesa moe da zahteva, koristi i oslobadja vie resursa razliitog
tipa i/ili vie resursa istog tipa.
Proces prvo ispostavlja zahtev za resursom (naprimer: open (ime-datoteke),allocate(broj-memorijskih blokova ili broj-bajtova), itd.), pri emu su mogua dva ishoda:
(i) resurs se dodeljuje procesu i on se nalazi u stanju IZVRAVA - SE ili u stanju
SPREMAN, ili
(ii) ne postoje slobodni resursi zahtevanog tipa i proces prelazi u stanje EKA
(prebacuje se u red ekanja na zahtevani resurs).
Zahtev za resursom, u stvari predstavlja poziv opertivnom sistemu koji vodi evidenciju
o tipu, broju i zauzetosti resursa i ukoliko je resurs slobodan dodeljuej resurs procesu na
korienje.
Po korienju resursa, proces oslobadja resurs (naprimer: close (ime-datoteke),
free(broj-bajtova), itd.) tako to, u stvari ponovo predaje upravljanje operativnom sistemu
koji aurira stanje zauzetosti resursa i, ukoliko neki drugi proces eka na resurs, vri
njegovu dodelu.
U uslovima vieprogramskog rada, procesi oigledno esto dolaze u situaciju da
ekaju na resurse. Pri tome, medjutim moe doi do situacije koja se naziva potpuni
zastojili blokiranje (deadlock).
Pri tome se mogu definisati etiri uslovakoji, kada su istovremeno ispunjeni, mogu da
dovedu do potpunog zastoja:
1. Medjusobno iskljuenje, to znai da u sistemu postoje nedeljivi resursi, odnosno
resursi koji u svakom vremenskom trenutku mogu biti dodeljeni samo jednom procesu nakorienje.
8/6/2019 OperativniSistemi_v2.2008_skripta
28/90
Operativni sistemi: Upravljanje procesima
23
2. Posedovanje i ekanje (hold-and-wait) znai da postoje procesi koji poseduju bar
jedan nedeljivi resurs i ekaju na druge nedeljive resurse koje koriste drugi procesi.
3. Resursi se ne mogu oduzimati (no-preemption) to znai da se resurs dodeljen
nekom procesu ne moe oduzeti dok sam proces, eksplicitno, ne oslobodi resurs.
4. Postoji kruno (ciklino) ekanje tako da postoji skup procesa p0, p1,...,pnpri emu proces p0 eka na resurs koji dri proces p1,..., proces pn eka na resurs kojidri proces p0.
Potpuni zastoj je nepoeljan u sistemu i treba ga, ako je mogue, spreiti ili, kadase dogodi, intervencijom operativnog sistema rasreiti. Naime, u zastoju dolazi dozaustavljanja procesa koji dou u stanje zastoja i ekanja. Do zastoja meu procesimadolazi zbog takmienja sa resursima kompjuterskog sistema ili zbog ekanja da se dogodineki dogaaj koji se ne moe dogoditi.
Pojavu zastoja najlake je ilustrovati na primeru dvaju procesa P1 i P2. Svaki od tadva procesa poseduje, "dri", ili bolje rei, dodeljen mu je jedan resurs, dok drugi resusrtraI i nastoji dobiti da bi mogao nastaviti izvoenje. Tako proces P1 dri resurs R1 a trairesurs R2 da bi mogao nastaviti izvoenje, dok proces P2, obratno od P1, dri R2 a traiR1 da bi mogao nastaviti izvoenje. Kako niti jedan proces ne oslobaa resurs koji dri, au sistemu pretpostavimo da nema vie takvih resursa, ne moe niti jedan od procesanastaviti izvoenje i zauvek e ekati resurse koje trae. takvu situaciju najlake jeprikazati pomou usmerenog grafika. Pri tom vorovi predstavljaju resurse. U svakomvoru, kao to se moe uoiti na slici 14, upisan je broj resursa a kraj svakog vora vrstaresursa koju dotini vor predstavlja. Lukovi grafika predstavljaju procese i to tako da
izlaze iz onog vora (resursa) koji "dre" a usmereni su prema voru (resursa) koji "trae",dakle strelica pokazuje resurs koji proces trai, a iznad svake strelice upisano je imeprocesa koji one predstavljaju. Na slici 2.9 prikazana je upravo spomenuta situacija sa dvaprocesa.
1 1
R2 R1
P1
P2
Slika2.9 - Prikaz zastoja dva procesa pomou usmrenog grafa
Situacija je u kompijuterskom sistemu obino mnogo sloenija. Obino moe se reida e zastoj nastupiti onda kada iz svakog vora izlazi onoliko grana koliko resursa dotinivor ima i kad su sve grane povezane tako da ine zatvorenu petlju bez obzira kojimputem poli. Na slici 2.10 prikazana je neto sloenija situacija, gde imamo i vie procesa ivie resursa. Tako na primer imamo resurse vrste R2, kojih ima ukupno 3, a dri ih procesP1 (jednog) i P2 (dva), proces P2 trai jo jedan resurs tipa R2, proces P1 trai resursetipa R5 i R1 itd.
8/6/2019 OperativniSistemi_v2.2008_skripta
29/90
Operativni sistemi: Upravljanje procesima
24
1 3
2
1
1
R1 R2
R3
R4
R5
P1
P2
P2P3
P5P4
P2
P1
Slika2.10 - Prikaz zasojne situacije pomou grafika
Reavanju problema potpunog zastoja moe se pristupiti pomou razliitih
strategija, u zavisnosti od toga da li operativni sistem ne dozvoljava pojavu zastoja, kada
se primenjuju strategije spreavanja ili izbegavanja zastoja, ili operativni sistem
dozvoljava nastanak zastojakada je neophodno da se predvide algoritmi za otkrivanje
zastoja i oporavak sistema.
Strategija spreavanja zastoja zasniva se na injenici da do zastoja moe da
dodje samo ako su istovremeno zadovoljena sva, ranije navedena, etiri potrebna uslova.
Iz toga proizilazi da eliminisanjem, odnosno spreavanjem postojanja bilo kog od tih
uslova sistem ne moe doi u zastoj.
Eliminisanje prvog uslova, medjusobnog iskljuenja, u optem sluaju nije mogue
jer su neki resursi po prirodi nedeljivi.
Eliminisanje drugog uslova, posedovanja i ekanja, moe se postii tako to proces,u trenutku kada trai neki resurs, ne sme posedovati nijedan drugi resurs. Jedan od naina
da se to obezbedi je da proces mora da zahteva sve resurse na poetku i svi mu se
moraju dodeliti pre poetka izvravanja. Drugi nain elininacije ovog uslova je da proces,
pre nego to zahteva jedan resurs mora da oslobodi sve resurse koje je do tada
posedovao.
Treba medjutim istai da oba naina dovode do slabog iskorienja resursa, jer se
resursi dugo dre a slabo koriste, a sa druge strane mogu dovesti do pojave gladovanja
kada jedan proces eka na resurse neodredjeno dugo vreme (jer je uvek bar jedan odresursa koji mu je neophodan, zauzet).
8/6/2019 OperativniSistemi_v2.2008_skripta
30/90
Operativni sistemi: Upravljanje procesima
25
Trei uslov, zabrana oduzimanja resursa, moe se eliminisati, medjutim to moe da
dovede od situacije da se proces kome je oduzet resurs praktino nasilno prekida i
njegovo izvravanje mora da pone od poetka.
etvrti uslov, kruno ekanje, moe se eliminisati tako to se resursi numeriu
rednim brojevima i uvede pravilo da proces moe da zahteva resurse samo u rastuem
redosledu njihovih rednih brojeva.Strategija izbegavanja potpunog zastoja sastoji se u tome da se od procesa trai da
unapred trae sve resurse koje e trebati. Na temelju toga vri se ispitivanje moe li doido zastoja ako se resursi dodele procesu u situaciji koja tada postoji u sistemu. Ako dozastoja ne moe doi, proces moe poeti sa izvoenjem. Takav je nain reavanjaproblema zastoja sloen i nije ga mogue sprovesti u svim sluajevima i sistemima.
Operativni sistem, zahteva a priori informaciju od svakog procesa u pogleduzahteva za resursima. Imajui pri tome informaciju o ukupnom broju resursa i njihovomtrenutnom zauzeu, operativni sistem moe, pre nego to dodeli resurs nekom procesu,da proveri da li e tom dodelom ostati u bezbednom stanju ili e sistem prevesti u
nebezbedno stanje. U ovom, drugom sluaju, zahtev se odbija i proces se stavlja u redekanja na posmatrani resurs. Ilustrujmo to jednim primerom:
Sistem raspolae sa 12 primeraka jednog resursa. Trenutno su aktivna tri procesa sa
sledeim stanjem
max.zahtev trenutno dodeljeno
p1 10 5
p2 4 2
p3 9 2
U posmatranom trenutku postoje jo tri slobodna primerka resursa i sistem je u
bezbednom stanju, to znai da postoji takav redosled dodele resursa koji garantuje da e
se sva tri procesa izvriti. Naime, redosled dodeljivanja < p2, p1, p3 > garantuje
zavretak sva tri procesa jer:
proces p2: (i) dobija 2 primerka (jedan ostaje slobodan) i
(ii) zavrava sa radom i oslobadja 4 primerka (ostaje pet slobodnih)
proces p1: (i) dobija svih pet primeraka (nema vie slobodnih) i
(ii) zavrava se radom i oslobadja 10 primeraka
proces p3 : (i) dobija sedam primeraka (tri ostaju slobodna) i
(ii) zavrava sa radom i oslobadja sve resurse.
8/6/2019 OperativniSistemi_v2.2008_skripta
31/90
Operativni sistemi: Upravljanje procesima
26
Sa druge strane, pogrenom dodelom resursa sistem moe da dodje u nebezbedno
stanje tako to se na zahtev procesa p3 njemu dodeli jo jedan resurs. Novo stanje
sistema je:
max.zahtev trenutno dodeljeno
p1 10 5
p2 4 2
p3 9 3
i dva primerka resursa su slobodna. Sada jedino proces p2 moe da nastavi, ali i kada
zavri oslobadja etiri resursa. Tada proces p1 trai jo pet, a proces p3 jo est resursa i
oba (beznadeno) ekaju. Sistem je prema tome u nebezbednom stanju i moe doi dozastoja u sluaju da nijedan proces (p1 i p3) ne oslobadjaju ranije zauzete resurse.
Iz izloenog proizilazi da je, u sluaju strategije izbegavanja zastoja, neophodno da
operativni sistem svaki put, pre dodele nekog resursa, proveri da li sistem, posle takve
dodele, ostaje u bezbednom stanju. Jedan od poznatih algoritama provere je tzv.
Bankarov algoritam za sluaj kada u raunarskom sistemu postoji vie primeraka istog
resursa. (Po ovom algoritmu banka nikad ne ulae raspoloivu koliinu novca na takav
nain da ne moe da zadovolji svoje komitente). Procesi su obavezni da prilikom
aktiviranja deklariu tip i maksimalan broj resursa koji e zahtevati. Pri svakom zahtevu zadodelu resursa u toku izvravanja procesa, sistem, koristei Bankarov algoritam,
proverava da li e posle dodele ostati u bezbednom stanju. Ukoliko je to istina, procesu se
dodeljuje resurs, a u suprotnom se zahtev odbija i proces se smeta u red ekanja na
resurs.
Poslednja strategija, u kojoj se dozvoljava nastanak zastoja sastoji se od dva
algoritma. Prvi se aktivira periodino i slui za otkrivanje postojanja zastoja. Ukoliko se
otkrije da postoji zastoj, aktivira se algoritam za oporavak sistema koji se najee svodina izbor "rtve", odnosno procesa koji e se nasilno prekinuti. Resursi koji se tom prilikom
oslobadjaju dodeljuju se ostalim procesima na takav nain da se svi preostali procesi
mogu izvriti. Ukoliko to nije mogue, bira se sledea rtva i postupak provere se
nastavlja.
8/6/2019 OperativniSistemi_v2.2008_skripta
32/90
Operativni sistemi: Upravljanje procesorom
27
3 UPRAVLJANE PROCESOROM
Osnovni resurs svakog kompjuterskog sistema jeste centralni procesor, odnosno
centralni procesori, ako se radi o multiprocesorskom sistemu. U naim razmatranjimaograniiemo se na posmatranje samo jednoprocesorskih sistema. Ve i u takvimsistemima javljaju se sloeni problemi oko dodele (alokacije) procesora procesima.Reavanjem tih i s njima nekih drugih direktno povezanih problema bavi se deooperativnog sistema koji zovemo "upravljanje procesorom" (Procesor Management).
Osnovni zadaci upravljanja procesorom jesu, prema tome sledei:
- odluivanje o tome koji od READY procesa dobija procesor, odnosno pravoizvoenja ili kontrola izvoenja,
- odluivanje o tome kadae "neki proces dobiti procesor",- odluivane o tome kakoe dugo "proces zadrati procesor",
- pretvaranje zadataka obrade u procese i ukljuivanje procesa u odgovarajuired,
- dealociranjeprocesaora,- voenjestanja (statusa) svih procesa.
Ti se osnovni zadaci odnose na procese i esto sa nazivaju "rasporeivanjeprocesa" (Process Scheduling). Uz "ovu brigu o procesima" potrebno je voditi i brigu ozadacima obrade koji jo nisu postali procesi. To moemo nazvati "rasporeivanjezadataka" (Job Scheduling),
Job Scheduling ukljuuje slede
e zadatke:- odluivanje kojie zadatak od onih koji ekaju biti uveden u sistem, tj. pretvoren u
proces i povezan u red ekanja za dodelu procesora (READY red);- alociranje resursa zadacima da bi mogli postati procesi, odnosno da bi mogli
prei u READY stanje,- dealociranjeresursa za procese koji su zavrili izvoenjem.
Ti se zadaci razlikuju i s obzirom na vrstu sistema. Tako e, na primer, kod sistemazajednike obrade (Batch sistem) zadaci koji ekaju na ulaz u sistem biti smeteni naeksternoj memoriji. Odavde e zadaci biti uzimani i pretvarani u procese i ukljuivani u redza izvoenje. Ujedno e im biti dodeljivani resursi to su im potrebni za izvoenje. U
interaktivnom sistemu procesi e biti kreirani odmah im korisnik pone rad (Log-in) aujedno e im biti dodeljeni i resursi. Poveanjem brojakorisnika poveae se i zahtevi zakorienjem pojedinih resursa. Alociranje resursa zadacima mi smo posmatrali odvojenood upravljanja procesorima, odnosno odvojeno od alociranja procesora. U mnogim jesistemima, meutim, alociranje svih ostalih resursa povezano sa alociranjem procesora iprovodi se tako da se resursi trae prekodela operativnog sistema koji slui za upravljaneprocesorom. Taj deo poziva ostale delove zaduene za svaku vrstu resursa.
Za svaku od dve vrste poslova obino postoji posebni deo operativnog sistema kojiih prevodi, ali to, uopteno posmatrajui i ne mora biti. Deo operativnog sistema koji izvodisve postupke oko rasporeivanja procesa nazivamo "upravlja procesora" (ProcessorSchedular), a deo koji izvodi postupke oko upravljanja zadacima zovemo "upravljazadataka" (Job Schedular).
8/6/2019 OperativniSistemi_v2.2008_skripta
33/90
Operativni sistemi: Upravljanje procesorom
28
Ako su obadve funkcije ukljuene u jedan modul, onda ga obino nazivamo"Glavni upravlja" (Master Scheduler, High Level Scheduler). Sve u svemu, postoji upraksi razliitih vrsta i kombinacija tih osnovnih funkcija.
Mi emo u nastavku govoriti uglavnom samo o upravljanju i rasporeivanju procesai dodeli procesora.
Upravlja procesora izvodi se i sam kao proces. Zbog toga to je njegovoizvoenje vano i hitno daju mu najvei prioritet te e ga dispeer odmah uzeti i predati muprocesor na izvoenje. Meutim, upravlja procesora moe se ukljuivati onda kada je topotrebno, a to znai kad se pojavi situacija, odnosno dogaaj u sistemu koji trai izvoenjeneke od funkcija koje upravlja procesora izvodi. Ti se dogaaji ne mogu unapredpredvideti nego se pojavljuju nesihronizovano i tko ih je potrebno obraivati, odnosnoukljuivati upravlja procesora. Taj se dogaaj naziva dogaajima za upravljanjeprocesorom (scheduling event). Ukljuivanje upravljaa u pravom asu se s pomou
semaforske tehnike prilino jednostavno. Naime, svaki dogaaj koji predstavlja dogaaj zaupravljanje mora izvesti operaciju SIGNAL na odreenom semaforu, a upravlja procesoraizvodi posle zavretka svog izvoenja operacije WAITna tom semaforu. Time dogaaj zaupravljanje procesorom poziva i aktivira upravlja procesora a upravlja procesora samsebe poto je zavrio izvoenje. Ponovno ukljuivanje upravljaa dogodie se tek ondakada se pojavi novi dogaaj za upravljanje.
Postoji dosta slinosti izmeu dogaaja za upravljanje i prekida ali se oni ne moguni u kojem sluaju poistovetiti. Oba dogaaja nastaju u unapred nepredvidljivimvremenskim intervalima i oba utiu na to da sistem promeni svoje stanje izvoenja i
ponaanja. Dogaaji za upravljanje, moe se rei menjaju ponaanje sistema na viojdistanci jer utiu na globalne parametre sistema kao to su prioriteti procesa, broj procesa,redovi ekanja itd., dok prekidi utiu na promenu samo tekueg procesa ili u krajnjemsluaju na stanje samo ogranienog broja procesa, dakle na lokalne parametre, pa se zaprekide moe rei da utiu na nioj visini upravljanja procesorom.
Prekidi se pojavljuju znatno ee nego dogaaji za upravljanje procesorom. Takoprekidi nastaju u proseku svake milisekunde a dogaaji za upravljanje svake sekunde(LIST 75). S tim u vezi treba napomenuti da je bolje reenje ugraditi to vie funkcija uupravlja procesora a to manje u dispeer, jer se dispeer pozivasvaki put posle obradeprekida. Dispeer i upravlja procesora unekoliko se nadopunjuje u ostvarivanju funkcijaupravljanja procesorom. Zbog toga se dispeer esto naziva upravljaem na niem nivou(Low Level Scheduler) a upravlja procesora upravljaem na viem nivou (High LevelScheduler).
3.1 ODREIVANJE PRIORITETA NEZAVISNO OD STANJA U SISTEMU
Red procesa koji ekaju procesor formira se u sistemu zbog toga da bi
dispeer mogao odabrati proces koji je na redu za izvoenje. Taj red (ili redove, jer
ih moe biti i vie) formira upravlja procesora, dok dispeer jednostavno uzima prvi
proces u redu. Tako upravlja procesora zapravo indirektno dodeljuje procesor
pojedinom procesu. Formiranje redova upravlja procecesora provodi na osnovi
8/6/2019 OperativniSistemi_v2.2008_skripta
34/90
Operativni sistemi: Upravljanje procesorom
29
dodeljivanja takozvanih prioriteta. Prioriteti koji se dodeljuju svakom procesu
oznaavaju i odreuju kakav e biti tretman tog procesa u sistemu prilikom
dodeljivanja procesora. Tako shvaeni prioriteti mogu biti izraeni eksplicitno, to
znai da e u svakom procesu biti dodeljen brojano izraen prioritet ali mogu biti
izraeni i implicitno tako proces ne dobija brojano izraen prioritet ali se moe
upotrebom odreenog algoritma ustanoviti za svaki proces kakvu prednost pred
drugim procesima ima dotini proces pri dodeli procesora. Tako se odreeni
prioriteti mogu, ali ne moraju, upotrebljavati i pri dodeli ostalih resursa.
Postoji vrlo veliki broj razliitih naina odreivanja prioriteta. Te naine
nazivamo algoritmima za upravljanje ili algoritmima za odreivanje redosleda
izvoenja (scheduling algorithms, scheduling policies). Veina tih algoritama
odreuje prioritet procesa imlicitno. Sve algoritme za upravljanje moemo podeliti u
dve osnovne grupe.
U prvu emo svrstati sve algoritme koji pri odreivanju redosleda izvoenja
procesa ne uzimaju u obzir sva mogua stanja procesa u sistemu, odnosno
mogue situacije u kojima se sistem nalazi nego polaze od pojednostavljene
situacije unutar sistema, koja je prikazana modelom na slici 3.1. Ta se
pojednostavljena sitaucija sastoji u tome da se posmatra jedino ekanje za
dobijanje procesora a sva ostala ekanja, odnosno razlozi za ekanje ne uzimaju se
u obzir. Zbog toga u ovakvom modelu postoji samo procesorski red ekanja koji
ukljuuje READY procese, a red ekanja koji sadri procese koji ekaju zbog nekogdrugog razloga (red WAIT procesa) nije ukljuen u ovaj model. Algortitmi za
odreivanje redosleda izvoenja procesa odnose se dakle samo na READY
procese.
Drugu grupu algoritama ine oni algoritmi koji uzimaju u obzir i stanje
procesa u sistemu. Oni e pri odreivanju prioriteta uzeti u obzir i stanje u itavom
sistemu. Takvo posmatranje mnogo je realistinije i tako odreeni prioriteti (state
dependent priorities) bolje i efikasnije reguliu izvoenje pojedinih procesa,
odnosno dodeljivanje centralnog procesora. Takvi su algoritmi, meutin, mnogo
sloeniji i mnogo se tee implementiraju.
Na slici 3.1 prikazan je model upravljanja u sistemu koji se naziva
procesorski ogranieni sistem (processor bound system). Taj model, kao to je
reeno, uzima u obzir samo procesorski red (READY procesi). Novodolazei
procesi ukljuuju se u taj red a takoe i delimino zavreni procesi. To ujedno znai
da je procesor tretiran kao resurs od prvenstvene i superiorne vanosti (to u
realnosti nije uvek sluaj), a uticaji se zahtevaju i ekanja za drugim resursima
zanemaruju. Model takoe predstavlja da procesor uvek ima posla, dakle da uvek
moe pronai neki proces za izvoenje to je jo manje realno.
8/6/2019 OperativniSistemi_v2.2008_skripta
35/90
Operativni sistemi: Upravljanje procesorom
30
Novi procesi
Procesorski red
Delimi~no zavr[ eni procesi
Zavr{eni procesi
Sslika3.1 - Model upravljanja procesorski ogranienog sistema
Uprkos svemu moe se i na temelju ovako nerealnog modela doi do upotrebljivihalgoritama. Procesi koji su zavrili izvoenje naputaju sistem. Svi ostali procesi predmetsu odreivanja redosleda u redu ekanja, odnosno oni se ukljuuju u red premaimplicitnom ili eksplicitnom prioritetu koji im algoritam za odreivanje redosleda odreuje.
Na temelju ovakvog modela moe se konstruisati niz razliitih algoritama. Svaki odnjih nastoji maksimizirati ili minimizirati neku od veliina kojom se meri ili efikasnost itavogsistema, iskorienost centralnog procesora ili neka druga korisna veliina. To moe bitirazliito i s obzirom na pojedinu vrstu rada sistema. Tako kod sistema sa ukupnomobradom (Batch) to moe biti vreme obrtaja zadatka a kod time-sharing sistema vremeodgovora. Spomenuemo nekoliko poznatih alogoritama. Svaki od njih primenjuje se upraksi ali nalzimo i niz modifikacija u pojedinim konkretnim sistemima.
3.2 EKSTERNO ODREENI PRIORITETI
Eksterno odreeni prioriteti postoje kod mnogih sistema. Korisnik sam unapred iizvan kompijuterskog sistema dodeljuje pojedinim zadacima prioritete izraene brojano uobliku celih brojeva. Ti se prioriteti mogu dodeljivati na temelju vanosti, cene plaanja,koristi za korisnika ili sistem itd. Takvi su prioriteti eksplicitno izraeni. Oni mogu bitiiskljuivi ali se unutar sistema mogu i kombinovati sa nekim drugim i na drugaiji nainodreenim prioritetima.
Tako, na primer, moe se kombinovati spoljni prioritet sa RR (Round Robin)algoritmom za odreivanje prioriteta, dakle sa interno odreenim prioritetom, i to tako davremenski interval koji se dodeljuje procesu na temelju RR algoritma zavisi(proporcionalno) o eksterno dodeljenom prioritetu. Drugi je nain da se procesu dodeli, natemelju eksternog i internog prioriteta, novi brojano izraen prioritet te procesor dobijaonaj proces koji ima najvii prioritet. Moe se kombinovati eksterno odreeni prioritet saprioritetom dodeljenim na temelju ispitivanja veliine procesa ili vremena potrebnog zaizvoenje. Vreme izvoenja moe se takoe eksterno za izvoenje. Vreme izvoenjamoe se takoe eksterno zadavati (na temelju procene ili iskustva). Eksterno odreeniprioriteti ne moraju nuno biti eksplicitni. Naime, algoritam za odreivanje redosledaizvoenja moe biti jednostavni FIFO (First In First Out) algoritam, gde najvei prioritet imaonaj proces koji je prvi uao u sistem. Redosled dolazaka zadataka odreuje dakleprioritet a taj se redosled odreuje odreuje izvan sistema. Postoje i druge mogunosti zaeksterno odreivanje prioriteta.
8/6/2019 OperativniSistemi_v2.2008_skripta
36/90
Operativni sistemi: Upravljanje procesorom
31
3.3 ODREIVANJE PRIORITETA
NA OSNOVU PROCENE VREMENA IZVOENJA
Poznati algoritam za odreivanje prioriteta je SJFalgoritam (Shortest Jobs First)
koji svrstava procese u red za izvoenje na temelju vremena koji zadatak trai za svojeizvoenje, i tako da krai procesi imaju prednost. Takav je nain odreivanja prioritetapogodan, na primer, pri skupnoj obradi jer daje krae proseno vreme obrtaja. Postoje dvemodifikacije, koje se esto upotrebljavaju.
Prvu modifikaciju nazivamo SJF algoritam s pretpranjenjem procesora(Preemptive SJF). Pretraivanje procesora znai da e proces koji se izvodi biti prekinut usvom izvoenju ("proces ispranjen) ako u asu izvoenja doe u sistem zadatak koji imavei prioritet (krae vreme izvoenja).
Druga modifikacija naziva se SJF algoritam bez pretpraenjenja procesora, isuprotno prvoj, ne prazni procesor ako u toku izvoenja naie zadatak s veim prioritetom,
odnosno kraim vremenom izvo
enja. Zbog toga se i naziva SJF bez pretpranjenja(nonpreemptive SJF).
Ovakve modifikacije s pretpranjenjem i bez pretpranjenja procesora mogu sesusresti i kod drugih algoritama. Nedostatak takvih odreanja redosleda izvoenja jeste tajto dui zadaci mogu ekati vrlo dugo (teoretski ak neogranieno). Zbog toga je esta imodifikacija koja doputa porast prioriteta procesa u zavisnosti od vremena ekanja u reduza izvoenje. Za ovu se modifikaciju moe rei da je uspennija od obinog SJF algoritmaali je znatno sloenija za implementiranje jer treba da prati vreme ekanja u redu za sveprocese. Uopteno vredi i za druge algoritme da moraju biti to jednostavniji i krai zaizvoenje, jer moe doi do generisanja internog rada i do komplikovanogimplementiranja.
Poznati je algoritam i RRalgoritam (Round Robin) gde se svi procesi posluujucikliki i svaki od njih zadrava procesor za neko odreeno vreme q koje nazivamovremenski odseak ili kvantum (time slice, quantum). Vreme izvoenja ovde implicitnoutie na dodelu procesora. Zavisno od vremena q, mogu biti favorizovani kratki zadaci iline. Ako je q malen, procesor se deli tano prema stvarnom vremenu izvoenja. Ako je qbeskonaan, algoritam prelazi u FIFO.
Glavni nedostatak RR algoritmajeste to mnogo zadataka ostaje u aktivnom stanjurelativno dugo, a to zahteva veu memoriju. Postoji nekoliko modifikacija ovog osnovnogalgoritma. Na primer, u sistemu gde su novi dolazi esti i brojni, vreme odgovora sve evie rasti, dakle performanse sistema degradiraju se s porastom optereenja. Efikasnamodifikacija u takvim sistemima jeste da i q raste sa brojem procesa. Time e doi dobreg zavravanja pojedinih procesa i njihova nestajanja iz sistema.
Sledei algoritam koji treba spomenuti jeste FB algoritam (Foreground-Backround). U njemu postoje dva reda ekanja. Proces ulazi u F red koji ima vei prioritetizvoenja. Ako tokom nekoliko ciklusa (po RR principu unutar F reda) ne zavri rad, padau B red koji ima manji prioritet izvoenja. U B redu opet se procesi izvode po RR algoritmuali samo onda kada u F redu nema nijednog procesa. Takav se algoritam esto koristi usistemima koji podravaju skupni i interaktivni nain rada. Dugi e procesi svi pasti u Bred koji se izvodi poto se poslui F red, dok e se kratki interaktivni procesi uspeti zavriti
u F redu. FB algoritam ima samo dva reda ekanja za izvoenje. Ovakav nainodreivanja redosleda izvoenja moe sa proiriti na vie redova ekanja. U praksisusreemo sisteme sa tri reda ekanja (DEC-10 na primer).
8/6/2019 OperativniSistemi_v2.2008_skripta
37/90
Operativni sistemi: Upravljanje procesorom
32
Osim spomenutih postoje i drugi algoritmi koji su opisani u literaturi.
3.4 ODREIVANJE PRIORITETA PREMA VREMENU EKANJA U REDU
Ako se eli svim procesima dati mogunost to breg izvoenja, onda se prioritetiprocesa menjati (poveavati) zavisno o toga koliko dugo ekaju u redu za izvoenje. Takoe prioriteti procesa rasti i svaki e proces doi relativno brzo do izvoenja. Mogue je dase takav nain dodele prioriteta kombinovati sa eksternim zadavanjem prioriteta. Tada eproces poeti sa eksterno zadanim prioritetom i prioritet e mu sa ekanjem rasti za nekotakoe eksterno odreeno vreme.
Odreivanje prioriteta moe se provesti neke zadane funkcije troka. Svaki procesdolazi u sistem sa svojom zadanom funkcijom troka koji zavisi od vremena ekanja. Zaizvoenje se uzima onaj proces koji minimizira sumu trokova za sve procese koji ekajuza izvoenje. Takve i sline mogunosti za odreivanje redosleda izvoenja ree se u
praksi primenjuju.
3.5 ODREIVANJE PRIORITETA PREMA STANJU U SISTEMU
U opisanim algoritmima za odreivanje redosleda izvoenja procesa, odnosno zadodeljivanje procesora procesima nije se vodilo rauna o stanju u sistemu, zbog togainterni rad moe narsti iznad tolerantnih granica. Model koji uzima u obzir stanje u sistemumoe u tom sluaju pomoi. Takvi slgoritmi, iako sloeniji, dre interno generisani rad utolerantnim granicama, a naroito ublaavaju degradaciju performansi sistema prilikompreopterenja. Model je prikazan ematski na slici 3.2, a sadri, za razliku od procesorski
ogranienog modela, i red odnosno redove ekanja koji mogu nastati zbog zahteva zaresursima ili ulazno/izlaznim operacijama.
Takav model, iako na prvi pogled ne izgleda mnogo sloeniji od prethodnoga sadri usebi znatno veu kompleksnost posmatranja i puno je blii stvarnom stanju u sistemu.Naime, pod blokiranim procesima smatraju se svi procesima smatraju se svi procesi WAITstanju koji su zaustavljeni na rzanim semaforima ili ekaju na ulazno.izlazne operacije. Nasemaforima, kao to znamo, procesi mogu ekati traenje resursa ali zbog meusobnihodnosa meu procesima. Praenje je oslobaanja (signalizacija) svih tih semaforasloeno, i postoje razne mogunosti da proces pree iz WAITu READYstanje, odnosnoda izae iz reda ekanja i ue u red za izvoenje.
U ovom sluaju upravlja procesora prei donoenju odluke o upravljanju procesorom
mora voditi rauna i o alokaciji drugih resursa. Razliiti algoritmi i strategije postoje ali ih jeu praksi dosta teko primeniti.
Ti se algoritmi temelje na odreenim empirikim dokazanim kriterijumima kao tosu, na primer, sledei kriterijumi:
8/6/2019 OperativniSistemi_v2.2008_skripta
38/90
Operativni sistemi: Upravljanje procesorom
33
Novi procesi
Delimi~no zavr{eni procesi
Procesor
Zavr{eni procesi
Dispe~er
dodeljuje
Blokirani procesi
Zahtevi ispunjeni
READY
WAIT
Slika3.2 - Proireni model za upravljanje procesorom
- Procesima koji imaju veliki broj resursa treba davati visok prioritet da bi seubrzalo oslobaanje tih resursa a time i njihovo dodeljivanje drugim procesima. Pritom seu ekstremnim sluajevima moe dogoditi da veliki procesi monopolizuju sistem.
- Procesima koji imaju veliki broj resursa, a blokirani su zbog njih, treba davatiprednost i u dobijanju tih resursa iz istog razloga kao i u dobijanju procesora.
- Alokaciju memorije treba provoditi prema principima radnog skupa stranica.
- Procesi operativnog sistema moraju imati prioritet koji odgovara hitnosti funkcijakoje provode. Pritom najvei prioritet treba svakako dodeliti upravljau procesora.
Treba voditi rauna da interni rad generie ovakav nain upravljanja procesorom nabude prevelik.
Spomenuemo samo kratko neke mogunosti za izgradnju jednostavnijihalgoritama.
RR algoritam moe se modifikovati tako da se posle svakog ciklusa izraunavremenski odseak koji se dodeljuje procesima. Pritom se obino uzima neko fiksnovreme kao vreme itavog ciklusa dodeljuvanja procesorima. Pod ciklusom se smatra
dodela procesora svim procesima koji su u redu za izvo
enje. To se vreme deli sa brojemprocesa u redu koji se stalno menja. Ako ima nekoliko procesa, vremenski odseak e bitidui, a ako ima vie procesa bie krai. Slini se zahtevi mogu uiniti i kod FB algoritma.Moe se izgraditi algoritam koji minimizira prelaze iz RUN stanja u WAIT stanja zbogtraenja novih resursa.
Broj moguih algoritama i ideja na temelju kojih bi te algoritme trebalo sagraditi jeste veliki. Ne postoji, meutim, mogunost da se vrednost svakog pojedinog algoritmaproceni teoretski nego ga treba praktino ispitati. Tu znatnu pomo mogu pruiti ispitivanjapomou simulacija takvih upravljanja procesorom.
8/6/2019 OperativniSistemi_v2.2008_skripta
39/90
Operativni sistemi: Upravljanje memorijom
34
4 UPRAVLJANJE MEMORIJOM
4.1 UVOD
Pod upravljanjem memorijom sa stanovita operativnog sistema, podrazumevaju se
funkcije:
- praenja stanja memorije(u smislu vodjenja evidencije o delovima memorije koji su
slobodni i delovima memorije koji su zauzeti i koji ih procesi zauzimaju)
- dodeljivanja (alokacije) slobodnih delova memorije procesima koji ih zahtevaju i
- oslobadjanja (dealokacije) zauzetih delova memorije kada, iz bilo kojih razlogaprestaje potreba da neki proces zauzima delove memorije.
4.2 ADRESNI PROSTOR, MEMORIJSKI PROSTOR I PRELIKAVANJEIZADRESNOG U MEMORIJSKI PROSTOR
Bez obzira na konkretan nain na koji operativni sistem upravlja memorijom u smislu
navedenih funkcija, on je duan da svakom pojedinanom programu obezbedi nesmetano
i uspeno izvravanje. To praktino znai da upravljanje memorijom, u najirem smislu
poinje ve sa prevodjenjem programa i obuhvata sledee funkcije preslikavanja,
prikazane na slici 4.1.
A E
XMIN X
C
011010
011100
101100
101110111000
10250
10300
10260
1010010400
Skup imena koje
dodeljuje program
Skup programskih
adresa
Skup memorijskih
adresa
preslikavanje
adresa
preslikavanje
imena
Slika 4.1
8/6/2019 OperativniSistemi_v2.2008_skripta
40/90
Operativni sistemi: Upravljanje memorijom
35
1. Preslikavanje imena - se odnosi na preslikavanje simbolikih adresa (imena) koje
programer dodeljuje promenljivima i pojedinim naredbama u programu u binarne adrese
koje se esto nazivaju jedinstvenim identifikatorima ili programskim adresama.
2. Preslikavanje adresa - se odnosi na preslikavanje programskih adresa u stvarne,
fizike memorijske adrese.
3. Preslikavanja sadraja - se odnosi na preslikavanje memorijskih adresa u vrednosti
(podatke) koje one sadre.
Navedena preslikavanja dogadjaju se u razliitim vremenskim trenucima. Preslikavanje
imena se najee obavlja u toku prevodjenja, ali se esto ne moe u potpunosti zavriti
pre povezivanja (zbog eksplicitnih poziva podprograma i/ili implicitnog pozivanja
sistemskih procedura). Preslikavanje adresa se u najjednostavnijem sluaju obavlja u tokupunjenja u memoriju. No, u zavisnosti od naina upravljanja memorijom od strane
operativnog sistema preslikavanje adresa moe se obavljati u toku samog izvravanja
programa. ta vie, kod nekih naina upravljanja memorijom ni povezivanje se ne moe
obavljati pre poetka izvravanja programa. Konano, preslikavanje sadraja se obavlja u
vreme izvravanja programa.
Sam in ili dogadjaj preslikavanja se naziva vezivanje (binding). Na primer kada se
izvri preslikavanje simbolikog imena u programsku adresu, kaemo da je posmatrana
simbolika adresa vezana za odredjenu programsku adresu (da joj jednoznano odgovarata programska adresa). Kada se programska adresa preslika u memorijsku adresu
kaemo da je vezana za tu memorijsku adresu. Vremenski trenutak kada se odigrava
vezivanje naziva se vreme vezivanja (binding time).
to se vreme odredjenih vezivanja vie odlae to je mogue fleksibilnije upravljanje
memorijom (sa stanovita operativnog sistema) i obrnuto. Na primer ako se i preslikavanje
imena i preslikavanje adresa odigrava pre punjenja u memoriju (to je mogue samo u
sluaju da se unapred zna gde e biti program smeten u memoriji) onda bi adresni delovi
instrukcija tog programa sadravali stvarne, memorijske adrese podataka i nekihinstrukcija. Takav program se onda moe izvravati samo u tim, unapred odredjenim
memorijskim lokacijama to predstavlja veoma kruto ogranienje za operativni sistem.
Oigledno je, prema tome, da postoji veoma jaka zavisnost izmedju programa za
prevodjenje (compiler-a), programa za povezivanje (linker-a) i programa za punjenje
(loader-a) kao delova sistemskog softvera sa jedne strane i operativnog sistema, odnosno
njegovog dela za upravljanje memorijom, sa druge strane.
Pri tome najvei uticaj na operativni sistem ima preslikavanje adresa, ili kako se to
kae preslikavanje adresnog prostora programa (skupa programskih adresa) u memorijski
prostor (skup memorijskih adresa). U sluaju statikog povezivanja adresni prostor je
linearan (sastoji se od niza kontinualnih adresa). U zavisnosti od naina upravljanja
8/6/2019 OperativniSistemi_v2.2008_skripta
41/90
Operativni sistemi: Upravljanje memorijom
36
memorijom takav adresni prostor moe se preslikati u odgovarajui linearan memorijski
prostor pa se preslikavanje adresa moe opisati funkcijom:
a ' = p + a
gde je: a'- memorijska adresa,
p - poetna adresa programa u memoriji i
a - programska adresa.
U optem sluaju preslikavanje adresa moe biti realizovano na razliite naine pa se
moe predstaviti funkcijom:
a ' = f (a)
pri emu implementaciju funkcije f obavlja operativni sistem.
4.3 PROBLEM UPRAVLJANJA MEMORIJOM
Kako je ve ranije istaknuto, da bi se jedan program izvrio neophodno je da se u
memoriju unesu i njegovi instrukcije i podaci, kako bi bili dostupni centralnom procesoru.
No, to ne znai da sve instrukcije i svi podaci programa moraju biti u memoriji za sve
vreme izvravanja programa. Naime, u principu je mogue uneti u memoriju samo jedan
deo instrukcija programa sa podacima neophodnim za njihovo izvravanje. Po izvravanju
tog dela programa u memoriju se moe uneti, i to u iste lokacije, sledei niz naredbi sa
podacima potrebnim za njihovo izvrenje. U uslovima vieprogramskog rada ovakva
mogunost je posebno interesantna. Naime, dranjem u memoriji delova, a ne celihprograma, mogue je aktivirati vie programa u jednom vremenskom intervalu ime se
poveava stepen vieprogramskog rada a time i stepen iskorienjaostalih resursa
raunara. Naravno, ovakav nain rada zahteva dodatne hardverske komponente i
uslonjava operativni sistem. Pri tome bi, sa stanovita operativnog sistema memorija bila
podeljena na dva nivoa. Prvi nivo inila bi primarna (glavna) memorija u kojoj bi se drali
trenutno aktivni delovi razliitih programa, dok bi drugi nivo inila sekundarna (pomona)
memorija sa relativno brzim pristupom (na primer magnetni disk sa fiksnim glavama), na
kome bi se uvale kompletne kopije svih aktivnih programa. Operativni sistem bi tada
problem upravljanja memorijom sveo na problem vremenske i prostorne raspodele
programa ili delova programa izmedju dva nivoa memorije. Drugim reima, upravljanje
memorijom se sastoji od tri komponente:
upravljanje unoenjem (fetch policy) - u smislu donoenja odluke o tome kada e se
program ili njegovi delovi uneti u memoriju
upravljanje smetanjem (placement policy) - u smislu donoenja odluke o tome gde e
se program ili njegovi delovi smestiti u memoriji i
8/6/2019 OperativniSistemi_v2.2008_skripta
42/90
Operativni sist