You are on page 1of 5

Raspoređivanje poslova: monoprogramiranje i multiprogramiranje

Proces je jedan od fundamentalnih koncepata OS. Predstavlja program u stanju izvršenja. (Detaljnije
pročitati u materijalima sa predavanja.)

Često se može čuti i pojam job (posao). Zavisno od konteksta, ovaj izraz se različito tumači. Job je
karakterisao tzv. batch (paketnu) obradu, gde su se programi izvršavali sukcesivno, a korisnik se ne
meša u izvršavanje sve do kraja. Kada je reč o UNIX/Linux sistemima, job predstavlja oblik grupisanja
više procesa.

U nastavku će u zadacima termini posao i proces biti tretirani kao sinonimi.

U postavci zadatka imamo tzv, smešu poslova: to je tablica koja u svakom redu sadrži vreme kada
posao stiže i vreme trajanja (Tabela 1).

Tabela 1 – Smeša poslova

BROJ POSLA Vreme dolaska Vreme izvođenja


(Ai) (Ri)

1 10,0 0,4

2 10,2 0,5

3 10,4 0,1

4 10,5 0,2

Monoprogramiranje

Monoprogramiranje je karakterisalo eru ranih računara, Svaki posao je morao da sačeka da se


prethodni u potpunosti izvrši, da bi tek onda započeo. Svaki posao ima ekskluzivno pravo na
procesor.

U najjednostavnijoj varijanti, poslovi se izvršavaju redosledom kojim nailaze, To je FCS (First Come
Served) princip.

Potrebno je da formiramo tabelu izvođenja (Tabela 2).


Tabela 2 – Monoprogramiranje FCFS

BROJ POSLA Vreme Početak Završetak Zadržavanje Specifično


dolaska izvođenja (Fi) (Ti=Fi-Ai) zadržavanje
(Ai) Wi=Ti/Ri

1 10,0 10,0 10,4 0,4 1

2 10,2 10,4 10,9 0,7 1,4

3 10,4 10,9 11,0 0,6 6

4 10,5 11,0 10,2 0,7 3,5

∑ 2,4 11,9

Prvi posao stiže u 10.0 i može odmah da počne da se izvršava, tako da se okončava u 10.4. Naredni
stiže u 10,2, ali mora da čeka dok se prethodni ne završi, pa tek onda počinje – u 10.4 itd.

Zadržavanje je ukupno vreme koje je posao proveo bilo čekajući da se izvrši, bilo izvršavajući se. To je
razlika između vremena završetka (Fi) i vremena dolaska (Ai).

Specifično vreme zadržavanja daje prikaz zadržavanja u odnosu na trajanje posla i dobija se deljenjem
Ti sa Ri. Ukoliko je kratak posao dugo čekao, ovaj broj postaje znatno veći od jedinice.

Za svaki posao se računa zadržavanje (Ti) i specifično zadržavanje (Wi). Takođe se mogu izračunati
srednja zadržavanja, deljenjem sa brojem poslova.

Ts=2,4/4=0,6 Ws=11,9/4 ~ 3

Zadržavanja predstavljaju meru performansi izvršavanja poslova.

Posao 3 je dugo čekao, a vrlo kratko se izvršavao. Bilo bi dobro ako bismo mogli da damo mogućnost
da se kraći poslovi izvrše pre dužih, ako i jedni i drugi čekaju. Ovaj princip se zove SJF (Shortest Job
First).

Za istu smešu poslova kreiramo sličnu tabelu, ALI ne raspoređujemo poslove prema redosledu
dolaska (Tabela 3):
Tabela 3 – SJF monoprogramiranje

BROJ POSLA Vreme Početak Završetak Zadržavanje Specifično


dolaska izvođenja (Fi) (Ti=Fi-Ai) zadržavanje
(Ai) Wi=Ti/Ri

1 10,0 10,0 10,4 0,4 1

2 10,2 III 10,7 11,2 1,0 2

3 10,4 I 10.4 10,5 0,1 1

4 10,5 II 10,5 10,7 0,2 1

∑ 1,7 5

Ts= 1,7/4 = 0,425 Ws=5/4= 1,25

Poslovi i dalje pristižu svojom dinamikom, ali to ne znači da će tom dinamikom i da se izvršavaju, kao
kod FCS. Prvi posao se izvršava odmah i, do njegovog završetka, dva posla pristižu – 2 (u 10,2) i 3 (u
10,4). Međutim, kako je posao 3 kraći (Ri=0,1, Tabela 1), on prvi počinje da se izvršava, što je
označeno rimskim I u koloni „Početak izvođenja“. Završava se u 10,5, ali ni tada ne počinje posao 2,
jer stiže posao 4, koji je takođe kraći od posla 2, pa se on izvršava. Na kraju se izvršava posao 2. Kao
što se vidi iz tabele, zadržavanja drastično opadaju.

Multiprogramiranje

Danas je potpuno normalno da se istovremeno izvršava veći broj procesa. Npr, ako otvorimo Task-
manager u Windowsu, videćemo više desetina programa koji su aktivni, čak i kada računar poseduje
samo jedan procesor. Procesor se naizmenično dodeljuje svim poslovima koji treba da se izvrše – vrši
se time-sharing i na taj način prividno se istovremeno izvršavaju različiti programi.

Za razliku od monoprogramiranja, svaki posao koji stigne „ulazi u igru“ i dobija deo procesorskog
vremena. Ukoliko je samo jedan posao aktivan 2 sekunde, izvršavaće se 2 sekunde. Ukoliko su četiri
posla aktivna, svaki će dobiti po pola sekunde. Znači, ako je jednom poslu potrebno 5 sekundi da se
izvrši, to je vreme potrebno ukoliko se sam izvršava. Ukoliko se još jedan posao izvršava paralelno,
prvom poslu biće potrebno 10 sekundi, jer i drugi posao dobija vreme ravnopravno. Ovo efektivno
vreme koje u nekom intervalu dobija posao označavaćemo kao headway.

U tabeli 4 prikazano je izvršavanja poslova u okruženju sa multiprogramiranjem.


Tabela 4 Multiprogramiranje

Vreme Događaj Br. poslova Udeo CPU Proteklo vreme Headway Poslovi Preostalo vreme
po poslu (udeo×proteklo)
10,0 Stiže 1 1 0.4
10,2 Stiže 2 1 1 0,2 0,2 1 0,4-0,2=0,2
2 0,5
10,4 Stiže 3 2 0,5 0,2 0,1 1 0,2-0,1=0,1
2 0,5-0,1=0,4
3 0,1
10,5 Stiže 4 3 0,33 0,1 0,033 1 0,1-0,033=0,067
2 0,4-0,033=0,367
3 0,1-0,033=0,067
4 0,2
10,768 Završavaju 4 0,25 0,268 0,067 1 0
1i3 2 0,367-0,067=0,3
3 0
4 0,2-0,067=0,133
11,034 Završava 4 2 0,5 0,266 0,133 2 0,3-0,133=0,167
4 0

11,201 Završava 2 1

T1=10,768-10=0,768, W1=0,768/0,4=1,92
T2=11,201-10,2 = 1,001, W1=1,001/0,5=2,002
T3= 10,768-10,4=0,368, W1=0,368/0,1=3,68
T4=11,034-10,5=0,5034, W4=0,5034/0,2= 2,517

Ts=(0,768+1,001+0,368+0,5034)/4= 2,6404/4=0,6601

Ws=(1,92+2,002+3,68+2,517)/4=10,119/4=2,53
U svakom redu se evidentiraju parametri koji važe IZMEĐU dva događaja. Događaji su: stigao posao X ili
završio posao X. U prvom redu izostaje većina parametara, jer je u pitanju prvi posao. U drugom redu
stoje parametri koji važe do stizanja drugog posla: jedan posao se izvodi, udeo CPU je 1 (100%) i čitav
interval se oduzima od vremena izvršavanja posla 1. Od događaja stizanja posla 2, paralelno se izvršavaju
dva posla i proteklo vreme se raspodeljuje po pola itd. Preostalo vreme (poslednja kolona) dobija se
oduzimanjem headway-a od dotadašnjeg preostalog vremena za dati posao.

Posle svakog događaja treba proveriti šta će biti naredni događaj. Moguće je da se neki od poslova završi
pre nego što naredni posao pristigne, što je onda automatski naredni događaj. Npr. u drugom redu
imamo dva aktivna posla – jedan kojem preostaje 0,2, a drugom 0,5. Ukoliko bi samo ova dva posla
nastavila da se izvršavaju (bez nailaska novih poslova), prvo bi se izvršio kraći posao (od 0,2) i to za 0,4,
jer se realno proteklo vreme (0,4) deli sa 2 zbog toga što dva posla rade istovremeno. Dakle, u tom
slučaju bi naredni događaj bio u 10,6 (10,2+0,4). Međutim, pošto pre toga stiže naredni posao, događaj
„stiže posao 3“ će biti naredni.

Nakon što stigne posao 4, ne postoji događaj „stiže posao X“, već će biti „završava se posao X“. Imamo
aktivna 4 posla – preostala vremena se vide u poslednjoj koloni. Potrebno je odrediti naredni događaj.
Najpre će se izvršiti poslovi 1 i 3, jer su najkraći. Njim ostaje po 0,067. Pošto imamo 4 posla, ovim
najkraćim poslovima će biti potrebno 4 puta više realnog vremena da se završe: 4×0,067=0,268. Dakle,
novi događaj će biti u 10,5+0,268=10,768.

Po kompletiranju tablice, računaju se parametri performansi. Kao što se vidi, ovi parametri su slabiji nego
kod monoprogramiranja. Ali, dobitak je značajan: poslovi mogu biti interaktivni, tj. odmah počinju da se
izvršavaju i korisnik može raditi sa njima, jer su sve vreme aktivni, dobijajući deo procesorskog vremena.

Dodatna ograničenja mogu izazvati preklapanje I/O i ograničenja u memoriji.

Ukoliko imamo ograničenu memoriju, što je realno uvek slučaj, posao koji stiže ne mora nužno odmah
početi da dobija udeo CPU-a. Ukoliko je trenutno na raspolaganju 100 kB memorije, a pristigli posao
zahteva 120 kB, mora da sačeka, dok se neki od poslova ne završi i oslobodi potrebnih 20 kB, i tek onda
počinje.

Smeša poslova kod izvođenja sa ograničenjama u memoriji sadrži dodatnu kolonu sa izraženim
memorijskim zahtevima svakog posla, a tabela izvođenja sadrži dodatnu kolonu za evidenciju preostale
ukupne memorije sistema.

You might also like