Professional Documents
Culture Documents
Raspoređivanje procesora 49
3.RASPOREĐIVANJE PROCESORA
Kada se više procesa nalazi u memoriji, u datom trenutku vremena se može
izvršavati samo onoliko njih koliko ima fizičkih procesora. Procesi koji su u
memoriji, ali trenutno im nije dodijeljen procesor tada se nalaze u redu čekanja.
Odluka o tome kada će procesima ili nitima biti dodijeljen procesor se zove
raspoređivanje procesora.
3.1.Raspoređivač
Raspoređivač (engl. scheduler) donosi odluku kojem procesu se dodjeljuje
procesor u kojem trenutku. Raspoređivač tu odluku može donijeti na više načina,
koristeći odgovarajući algoritam raspoređivanja. Raspoređivanje procesa se obavlja
dok se izvršava programski kôd jezgra, najčešće u toku izvršavanja sistemskog
poziva ili prekida (interrupt). Neki operativni sistemi imaju više vrsta raspoređivača.
U batch sistemu često je više procesa nego što može biti izvršeno odmah. Ovi procesi
se tipično prebacuju na disk gdje se čuvaju do kasnijeg izvršenja. Dugoročni (engl.
long-term) raspoređivač poslova izabere proces i puni ga u memoriju za izvršenje.
Kratkoročni raspoređivač poslova (engl. short-term scheduler) bira između procesa
koji su spremni za izvršenje i dodjeljuje CPU jednom od njih. Osnovna razlika je u
frekvenciji rada ova dva raspoređivača.
3.2.Nivoi i vrijeme raspoređivanja
Ovisno o tome sa kojom frekvencijom se poziva raspoređivač, sistemi mogu imati
raspoređivače na tri, dva ili jednom nivou.
Batch sistemi dozvoljavaju raspoređivanje na tri različita nivoa (Slika 21). Ako
poslovi stižu u sistem oni se inicijalno smještaju u ulazni red čekanja smješten na
disku.
CPU
C P U raspoređ ivač
U lazn i red
čekan ja
P ristup n i M em orijski
raspoređ ivač raspoređ ivač
D isk
M em orija
Slika 21 Raspoređivanje na tri nivoa
P1 P2 P3
0 24 27 31
S re d n je v rije m e č e k a n ja (0 + 2 1+ 2 3 )/3 = 14 ,6 6 9
tf 1 = 0 + tr1
tf 2 = tf 1 + tr2 = tr1 + tr2
k
tf k = tri
i =1
P1 P2
0 10 12
Srednje vrijeme čekanja (0+8)/2=4
Slika 23: SJF, kraći posao došao dok duži još traje
0 2 4 14
Srednje vrijeme čekanja (4+0)/2=2
Slika 24: SJF, raspoloživost procesa u isto vrijeme
Dakle, optimalno srednje vrijeme čekanja bi imao algoritam koji daje prednost
kraćim poslovima, ali koristio i procesor dok se takvi procesi ne pojave.
56 3.8.Najkraće preostalo vrijeme SRTN
P1 P2 P1
0 2 4 12
Srednje vrijeme čekanja (2+0)/2=1
Slika 25: Algoritam SRTN, najkraće preostalo vrijeme sljedeće
a b
P1 P2 P3 P4 P5 P2 P3 P4 P5 P1
Prioritet 2 P1 P3 P4 P5
Prioritet 3 P2 P7
vremenskog odsječka. Raspoređivanje unutar svakog reda čekanja se, također, može
mijenjati (Slika 28).
Prvi primjer ovakvog raspoređivača bio je u operativnom sistemu CTTS na
računaru IBM 7094 iz 1962. godine. Kako je u memoriji mogao biti samo jedan
proces, uvedeno je više redova čekanja takvih da je svaki red čekanja imao
kvantume tako raspoređene da procesi najvećeg prioriteta imaju najkraće kvantume,
a najmanje prioritetni najduže. Na prvi pogled, ovo je nelogična odluka, ali je
prilagođena maloj memoriji. Što je proces duže u sistemu, njegov prioritet pada u
nižu klasu sa svakom izmjenom procesa, ali kada dođe na red za izvršenje dobiva sve
duži i duži kvantum. Posljedica je da je potrebno manje snimanja procesa na disk
ako se proces izvršava duže vremena.
Drugi primjer ovog raspoređivača primijenjen je u Windows NT seriji. Windows
poznaje 32 nivoa prioriteta niti (ujedno i procesa, jer svaki proces ima bar jednu nit).
U ovom operativnom sistemu (za razliku od Unix sistema) manji broj predstavlja
manji prioritet. Prioriteti se dijele u tri klase: sistemski (nivo 0), varijabilni (nivoi 1
do 15) i klasa realnog vremena (nivoi 16 do 31). Niti sistemskog nivoa (idle process)
se izvršavaju samo kada su svi ostali procesi neaktivni. Niti i procesi klase realnog
vremena ne mijenjaju svoj prioritet u toku rada, i procesi u ovoj klasi se ponašaju kao
kod algoritma Round robin sa prioritetima (pa mogu zagušiti cijeli sistem). Međutim,
procesi i niti varijabilne klase povećavaju svoj prioritet na maksimalni u svojoj klasi
(priority boost) u sljedećim događajima:
• Kada se proces normalne klase prioriteta se prebaci u prvi plan (odabrani pro-
zor),
• Kada prozor primi ulaz: poruke od sistemskog sata, miša ili tastature.
• Kada se zadovolje uslovi čekanja blokirane niti .
Nakon isteka kvantuma za nit kojoj je ovako povišen prioritet, prioritet niti opada,
sve dok ne dođe do svog baznog prioriteta.
3.18.Garantovano raspoređivanje
Round robin daje jednako vrijeme izvršenja svakom od procesa koristeći prekide
na bazi sata. No, nekada ovakav način postizanja cilja pravičnosti nije moguć, npr.
u distribuiranim sistemima koji nemaju jedinstveni sistemski sat. Ovaj cilj se može
aproksimativno postići i sljedećim adaptivnim algoritmom. Najprije se izračuna
relativna količina vremena koja treba biti dodijeljena procesu. Na primjer, ako u
1
sistemu ima n procesa, svaki proces bi mogao dobiti procesorskog vremena.
n
Nazovimo vrijeme kada je izračunata ova relativna količina vremena za sve procese
trenutkom obećanja. U svakom trenutku kada se poziva raspoređivač, izračuna se
ukupno vrijeme proteklo od trenutka obećanja ts, a za sve procese koliko je taj proces
nt r
proveo u izvršavanju tr. Za svaki proces se izračuna količnik i što je on manji, to
ts
je obećanje lošije ispunjeno. Stoga se za naredno izvršavanje bira proces s
najmanjim ovakvim odnosom. Glavna prednost ovog algoritma je što se može
definirati i za druge ciljeve osim ravnomjerne raspodjele vremena među procesima,
npr. za ravnomjernu raspodjelu vremena među korisnicima ili različita vremena
3.Raspoređivanje procesora 63
27
18 34
9 20 31 70
50 90
3
Proces koji je do sada imao najmanje procesorskog vremena
Slika 30: Stablo korištenosti CPU u Potpuno fer algoritmu
Za razliku od većine algoritama raspoređivanja, podaci o procesima potrebni za
raspoređivanje se ne čuvaju u ulančanoj listi nego u balansiranom binarnom crno-
crvenom stablu. To ubrzava pretraživanje procesa. Čvorovi u ovom stablu su
indeksirani po vremenu u nanosekundama koliko se proces izvršavao na procesoru.
Za svaki proces se računa i maksimalno vrijeme izvršenja koje bi imao da je dobio
idealno izvršavanje na procesoru, prema vremenu dodijeljenom njegovom vlasniku
i broju procesa koje je vlasnik pokrenuo,. Raspoređivač tada pogleda krajnji lijevi
čvor balansiranog stabla i time bira proces čije je do sada potrošeno vrijeme
minimalno. Kada se proces završio, on se izbacuje iz stabla. Ako je proces dostigao
maksimalno vrijeme izvršenja ili je blokiran, ubacuje se u stablo prema novom
proteklom vremenu izvršenja. Nakon ovih postupaka se bira novi krajnji lijevi čvor.
3.22.Algoritmi za sisteme realnog vremena i
multimedijalne sisteme
Ovdje je cilj poštovanje rokova i predvidljivost vremena izvršavanja. Procesi u
ovim sistemima se izvršavaju relativno kratko i često se sami blokiraju kada obrade
podatke. Obično je mali broj procesa u sistemu i uglavnom je unaprijed poznat. Kod
ovih sistema vrijeme igra veoma važnu ulogu. Različiti uređaji u ovim sistemima
šalju podatke centralnom računaru i on mora da ih obradi u planiranom vremenu.
Značenje riječi “mora” u prethodnoj rečenici je ipak različito između različitih
sistema. Prema prihvatljivosti kašnjenja, sistemi realnog vremena su svrstani u dvije
kategorije: strogi (hard) sistemi u realnom vremenu, gdje se krajnji rokovi (engl.
deadline) moraju postići, i relaksirani (soft) sistemi u realnom vremenu gdje je
nepostizanje krajnjeg odgovora u predviđenom intervalu je nepoželjno ali ipak
3.Raspoređivanje procesora 65
Situacija prioritetne inverzije može se npr. desiti kada imamo procese visokog
(H), srednjeg (M) i niskog (L) prioriteta. Procesi H i L dijele isti resurs (Slika 31).
Neka se prvo izvršavao L, i zauzeo resurs. Nakon toga se izvršava H, i istisne proces
L. Kada H zatraži resurs, on mora biti blokiran jer je resurs zauzet. Zato on prepušta
izvršavanje procesu nižeg prioriteta L da oslobodi resurs. Ali prije nego je L oslobodio
resurs, pojavio se M i izbacio L. Najprioritetniji proces H mora čekati da se završe i M
i L. Kada je konačno dobio svoj resurs, bilo je već kasno.
L
vrijeme
Slika 31: Prioritetna inverzija u RT sistemima
Rješenje ovog problema je nasljeđe prioriteta. Kada proces višeg prioriteta zatraži
resurs koga drži proces nižeg prioriteta, procesu nižeg prioriteta se dodjeljuje
maksimalni prioritet da ga ništa ne prekida dok ne oslobodi resurs koji treba procesu
višeg prioriteta.
3.25.Algoritam najraniji rok prvo
U ovom algoritmu, procesi koji se mogu rasporediti se raspoređuju tako da se
prije izvršavaju oni procesi čiji rok završetka dolazi ranije. Algoritam omogućava da
se izvrši veći broj procesa u odnosu na statički definirane prioritete. Ali pri velikom
opterećenju, skup procesa čiji uslovi izvršenja neće biti zadovoljeni je teško
predvidljiv, što za sisteme u realnom vremenu može biti kobno.
Da se uporedi ponašanje ovog algoritma u odnosu na statičke prioritete,
posmatraće se dva periodična procesa A i B, pri čemu A dolazi svakih 40 ms, i svaki
odsječak traje po 30 ms, dok B dolazi svakih 100 ms i svaki odsječak traje 50 ms.
Rokovi procesa su takvi da se obrada odsječka mora završiti prije narednog odsječka.
Periodi i rokovi mogu se prikazati tabelom.
Proces Vrijeme dolaska Vrijeme izvršenja Rok završetka
A1 0 20 40
A2 40 20 80
A3 80 20 120
A4 120 20 160
B1 0 50 100
B2 100 50 200
B3 200 50 300
... ...
3.Raspoređivanje procesora 67
U trenutku 0 se bira proces A1, jer on ima raniji rok završetka. Slično, u trenutku
t=40ms bira se proces A2, kome je rok 80 ms i prekida proces B1 čiji je rok 100 ms,što
je kasnije.
A1 B1 A2 B1 A3 B2 A4 B2 A5
0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190
Prioritetno raspoređivanje sa istiskivanjem u ovom primjeru ne bi bilo izvodivo.
Neka procesi tipa A imaju prioritet nad procesima tipa B. Proces B1 bi mogao
započeti tek kada je A1 završen, u trenutku t=20 ms. U trenutku t=40 ms ponovo ga
prekida A2, a kada se B1 nastavi u trenutku t=60 ms, izvršava se do trenutka t=80 ms
kada ga prekida B3. Preostalih 10ms svog vremena proces B1 neće stići uraditi jer je
u trenutku završetka procesa A3 rok istekao. Slično ovome, ako bi procesi tipa B
imao prioritet, vidi se da proces A1 neće biti obrađen prije dolaska procesa A2.
3.26.Raspoređivanje monotonom stopom
Nešto jednostavniji kriterij od roka procesa je raspoređivanje bazirano prema
periodu periodičnih poslova. Pri raspoređivanju se veći prioritet dodjeljuje onim
procesima čija učestalost pojave je veća (tj. period je kraći). Npr., ako se događaji od
senzora pozicije šalju svakih 10ms, a događaji od senzora temperature svakih 100
ms, uvijek će u raspoređivanju imati prednost obrada senzora pozicije.
Izvodivost ovog algoritma je manja od izvodivosti algoritma Najraniji rok prvo.
Pokazano je da za n periodičnih procesa perioda Ti, od kojih svaki traje Ci vremena,
a rokovi su jednaki periodu važi:
n
Ci
U = ≤ n( n 2 − 1)
i =1 Ti
Pošto je
lim n( n 2 − 1) = ln 2 ≈ 0,69147
n →∞
svim nitima cijeli dodjeljuje jednom od procesora ili se niti istog procesa dijele
između procesora.
3.28.Particionirano raspoređivanje procesa
CPU
A B C 1
CPU
D 2
CPU
E F 3
CPU
1
D CPU
A B C 2
CPU
3
CPU
1
CPU
2
CPU
3
Jedna od mana ovog pristupa je što centralni red čekanja kome pristupaju
različiti procesori zahtijeva kontrolu uzajamnim isključenjem, što predstavlja usko
grlo. Drugi nedostatak je što blokirane niti nakon reaktiviranja obično ne nastavljaju
izvršavanje na istom procesoru, čime njegov memorijski keš postaje manje efikasan
Treće, ako više niti pripadaju istom procesu, mala je vjerovatnoća da će se sve one
izvršavati u isto vrijeme.
3.31.Družbeno raspoređivanje
CPU
1
D CPU
A B C
2
CPU
3
potrebna saradnja između niti i što veći stepen paralelizma unutar pojedinačnog
procesa.
Pokušaće se rasporediti M procesa na N procesora, a svaki proces ima N ili manje
niti. Procesi se mogu izvršavati npr. koristeći Round Robin algoritam, tako da svaki
od njih dobija sve procesore. Uočava se da fiksni kvantum ne iskorištava najbolje
sistem. Neka npr. imamo procese A, B, C i D koji redom imaju po 1, 2, 3 odnosno 3 niti.
U Round Robin sa kvantumom 1, dobijamo sljedeće raspoređivanje.
A1 B1 C1 D1 A1 B1 C1 D1 A1 B1 C1 D1
CPU1
B2 C2 D2 B2 C2 D2 B2 C2 D2
CPU2
C3 D3 C3 D3 C3 D3
CPU3
t= 0 1 2 3 4 5 6 7 8 9 10 11
U ovom primjeru se vidi da je iskorištenje sistema 75%, jer se procesori CPU2 i
CPU3 ne koriste svo vrijeme. Pametnim grupiranjem niti se može bolje iskoristiti
sistem, kao u sljedećem redoslijedu.
A1 C1 D1 A1 C1 D1 A1 C1 D1 A1 C1 D1
CPU1
B1 C2 D2 B1 C2 D2 B1 C2 D2 B1 C2 D2
CPU2
B2 C3 D3 B2 C3 D3 B2 C3 D3 B2 C3 D3
CPU3
t= 0 1 2 3 4 5 6 7 8 9 10 11
3.32.Dodjela posvećenog procesora
U ekstremnoj varijanti družbenog raspoređivanja nakon što je nit dodijeljena
procesoru, ona se izvršava na njemu sve do završetka aplikacije. Na prvi pogled, ovo
je neracionalno. Ako se nit prebaci u stanje čekanja radi ulazno/izlaznih operacija
ili sinhronizacije s drugom niti, tada njen procesor ostaje neiskorišten. Ali, ako
imamo sistem velikog paralelizma, npr. više stotina procesora, iskorištenost
procesora prestaje biti važna metrika performansi sistema. Zadržavanjem niti na
istom procesoru smanjuje se broj izmjena konteksta, što takođe ubrzava proces.
Konačno, broj niti koje čine proces svakako ima svoju gornju granicu, pa se može
proračunati da li je veća dobit od čuvanja niti na istom procesoru ili korištenju tog
procesora za različite niti. Ta granica je Amdalov zakon. On kaže da ako se program
može realizovati tako da se p% programa mora izvršiti sekvencijalno, a (100-p)%
programa može paralelizovati, onda se ukupno vrijeme izvršenja ne može
paralelizacijom smanjiti na manje od p%. Na primjer, neka od 10 sati izvršenja
programa na jedno-procesorskom računaru, 1 sat otpada na sekvencijalni dio koda.
Sa 2 procesora, posao se može obaviti za 1+9/2 =5,5 sati, sa 5 procesora za 1+9/5=2,8
sati. No daljnja ubrzanja nisu velika. Sa 100 procesora proces se obavi za 1,09 sati, sa
1000 procesora za 1,009 sati.
3.33.Dinamičko raspoređivanje
Nekada je praktičnije odluku o dodjeli procesora pojedinim nitima prepustiti
aplikaciji, jer njen programer bolje zna od operativnog sistema koje niti bi se trebale
takmičiti za koji procesor. Na primjer, niti koje se aktiviraju na ulazno/izlazne
operacije se mogu sve dodijeliti istom procesoru, ali je niti koje učestvuju u inverziji
velike matrice bolje rasporediti na različite procesore. Zato mnogi operativni sistemi
imaju sistemske pozive kojim se niti dodijele preporučeni procesori i tako zaobiđu
u toku rada dodijeljeni procesori od strane operativnog sistema. Tako Windows ima
3.Raspoređivanje procesora 71
#include <windows.h>
#include <stdio.h>
int main( void ) {
DWORD dwError, dwPriClass;
SetPriorityClass(GetCurrentProcess(),NORMAL_PRIORITY_CLASS);
dwPriClass = GetPriorityClass(GetCurrentProcess());
printf("Trenutna klasa prioriteta je 0x%x\n", dwPriClass);
while (1) {};
return 0;
}
3.36.Zadaci
Zadatak 1.
Neka su ubačena u sistem četiri procesa s sljedećim vremenima dolaska,
trajanja, prioritetima (manji broj veći prioritet).
Proces Vrijeme Trajanje Prioritet
dolaska
P1 0 6 2
P2 2 3 1
P3 3 1 2
P4 7 5 1
Proces Vrijeme dolaska Trajanje Vrijeme završetka Vrijeme u sistemu Vrijeme čekanja
P1 0 6 6 6-0=6 6-6=0
P2 2 3 9 9-2=7 7-3=4
P3 3 1 10 10-3=7 7-1=6
P4 7 5 15 15-7=8 8-5=3
Srednje vrijeme čekanja je (0+4+6+3)/4=3,25
3.Raspoređivanje procesora 73
b) SJF
Kod ovog algoritma novi proces ne prekida trenutno izvršavani, ali nakon
njegovog završetka bira se najkraći od u međuvremenu pristiglih. Ganttov dijagram
izgleda ovako.
P1 P3 P2 P4
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Proces Vrijeme dolaska Trajanje Vrijeme završetka Vrijeme u sistemu Vrijeme čekanja
P1 0 6 6 6-0=6 6-6=0
P2 2 3 10 10-2=8 8-3=5
P3 3 1 7 7-3=4 4-1=3
P4 7 5 15 15-7=8 8-5=3
Srednje vrijeme čekanja je (0+5+3+3)/4=2,75
c) SRTF
Kod ovog algoritma novi proces prekida trenutno izvršavani, ako mu je vrijeme
izvršavanja kraće od preostalog vremena trenutnog procesa. Ganttov dijagram
izgleda ovako.
P1 P2 P3 P2 P1 P4
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Proces Vrijeme dolaska Trajanje Vrijeme završetka Vrijeme u sistemu Vrijeme čekanja
P1 0 6 10 10-0=10 10-6=4
P2 2 3 6 6-2=4 4-3=1
P3 3 1 4 4-3=1 1-1=0
P4 7 5 15 15-7=8 8-5=3
Srednje vrijeme čekanja je (4+1+0+3)/4=2
d) Prioritetni bez istiskivanja.
Kod ovog algoritma novi prioritetniji proces ne prekida trenutno izvršavani, ali
se nakon njegovog završetka bira najkraći od u međuvremenu pristiglih. Ganttov
dijagram izgleda ovako.
P1 P2 P4 P3
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Proces Prioritet Vrijeme dolaska Trajanje Vrijeme završetka Vrijeme u sistemu Vrijeme čekanja
P1 2 0 6 6 6-0=6 6-6=0
P2 1 2 3 9 9-2=7 7-3=4
P3 2 3 1 15 15-3=12 12-1=11
P4 1 7 5 14 14-7=7 7-5=2
Srednje vrijeme čekanja je (0+4+11+2)/4=4,25
74 3.36.Zadaci
e) Prioritetni sa istiskivanjem
Kod ovog algoritma novi proces prekida trenutno izvršavani, ako je prioritetniji
od trenutnog procesa. Ganttov dijagram izgleda ovako.
P1 P2 P1 P4 P1 P3
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Proces Prioritet Vrijeme dolaska Trajanje Vrijeme završetka Vrijeme u sistemu Vrijeme čekanja
P1 2 0 6 14 14-0=14 14-6=8
P2 1 2 3 5 5-2=3 3-3=0
P3 2 3 1 15 15-3=12 12-1=11
P4 1 7 5 12 12-7=5 5-5=0
Srednje vrijeme čekanja je (8+0+11+0)/4=4,75
f) Round Robin
Stanje redova čekanja dato je u sljedećoj tabeli.
Trenutak Izvršava se Red čekanja
0 P1 -
2 P1 P2
3 P1 P2-P3
4 P2 P3-P1
6 P3 P1-P2
7 P1 P2-P4
9 P2 P4
10 P4 -
12 P4 -
14 P4 -
15 -
Ganttov dijagram izgleda ovako.
P1 P2 P3 P1 P2 P4
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Proces Vrijeme dolaska Trajanje Vrijeme završetka Vrijeme u sistemu Vrijeme čekanja
P1 0 6 9 9-0=9 9-6=3
P2 2 3 10 10-2=8 8-3=5
P3 3 1 7 7-3=4 4-1=3
P4 7 5 15 15-7=8 8-5=3
Srednje vrijeme čekanja je (3+5+3+3)/4=3,5
Rješenje:
U algoritmu Najraniji rok prvo se bira proces čija sljedeća perioda dolazi najranije,
jer do tog trenutka se mora obraditi podatak. Ovo je Ganttov dijagram.
P2a P1a P3a P2b P1b P2c P3b P2d P1c
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
b) U algoritmu Monotona stopa prvo bira se proces čije vrijeme obrade je
najkraće.
P1a P2a P3a P2b P1b P2c P3b P2d P1c
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19