Algoritmi raspoređivanja

Download Report

Transcript Algoritmi raspoređivanja

Visoka poslovno-tehnička škola Užice
OPERATIVNI SISTEMI
PROCESI I NITI
dr Ljubica Diković
mr Slobodan Petrović
Pojam procesa



2/41
Program – datoteka (fajl) na disku
Datoteka u memoriji - proces
Proces (process) je program ili deo programa u stanju
izvršavanja nad datim podacima. Proces koristi
računarske resurse (CPU, RAM ...)
– program: statičan zapis instrukcija
– proces: jedno izvršavanje (instanca) datog programa
za dati skup podataka – sa jednim adresnim
prostorom
– moguće je kreirati više procesa nad istim programom,
svaki radi nad svojim podacima – svaki ima svoj
adresni prostor
Hijerarhija memorije - podsećanje
3/41
Pojam procesa




4/41
Svaki proces odlikuje:
– pozicija u izvršavanju – mesto u programu dokle je
izvršavanje stiglo (Program Counter)
– stanje – podaci nad kojima proces radi – adresni
prostor
Pojam posao (job) u suštini znači isto što i proces,
Pojam zadatak (task) ima različito značenje u različitim
sistemimam i programskim jezicima, ali uglavnom znači
isto što i proces
Na jednom procesoru (CPU) u jednom trenutku može da
se izvršava samo jedan proces.
Operacije nad procesima
Kreiranje procesa: roditeljski (parent) proces kreira procesdete (child) sistemskim pozivom
 Varijante dozvoljavanja korišćenja resursa:
– proces-dete može da traži bilo koji resurs od OS
– proces-dete može da koristi samo podskup resursa
roditelja
 Varijante izvršavanja:
– kada kreira potomka, roditeljski proces se suspenduje
(zaustavlja izvršavanje) sve dok se svi potomci ne završe
– kada kreira potomka, roditeljski proces nastavlja
izvršavanje uporedo sa svojim potomcima
 Varijante formiranja adresnog prostora:
– potomak dobija kopiju adresnog prostora (RAM) roditelja
– “kloniranje”
– potomak ima nezavisan program i (novi, prazan) adresni
prostor (RAM)
5/41

Operacije nad procesima

6/41
Primer – Linux:
– Svaki Linux proces poseduje sledeće atribute: ID
vlasnika, naziv procesa, ID procesa (PID), stanje
procesa, PID procesa roditelja, vreme u kom je proces
pokrenut
– sistemski poziv za kreiranje procesa: fork()
– proces-dete dobija kopiju adresnog prostora roditelja i
kompletan kontekst, pa nastavlja izvršavanje od istog
mesta kao i roditelj
– sistemski poziv wait() vrši sinhronizaciju procesa –
proces-roditelj čeka da se proces-dete završi da bi
nastavio dalje
Operacije nad procesima
7/41
Operacije nad procesima

8/41
pokrenuti terminal, kucati komandu ps –e ili ps –aef,
videti proces i njegov PID (proces ID) koji je zauzeo svo
procesorsko vreme i kucati komandu kill PID ili ako to
ne uspe, sigurno „ubijanje” kill -9 PID
Operacije nad procesima


9/41
MS Windows podržava oba načina formiranja adresnog prostora:
– roditeljski adresni prostor se klonira
– roditelj specifikuje ime programa nad kojim se kreira nov
proces i (novi, prazan) adresni prostor (RAM)
Gašenje procesa:
– kada završi izvršavanje glavnog programa
– kada sam proces to eksplicitno zatraži, npr. sistemski poziv
exit()
– jedan proces gasi (“ubija”) neki drugi proces; moguća su
ograničenja, npr. to može da uradi samo roditeljski proces;
mogući razlozi:
 potomak je iscrpeo svoje resurse
 nije više potreban
 roditelj treba da se ugasi, a OS ne dozvoljava da njegovi
potomci dalje rade (kaskadno gašenje)
– OS gasi proces zbog neke nedozvoljene operacije
Operacije nad procesima
10/41
Dijagram stanja procesa





START – nastanak, formiranje procesa
READY – proces ima sve resurse, čeka na procesor
RUN – procesor (CPU) izvršava proces
WAIT – proces čeka na resurs (štampač, tastatura, miš,
neki drugi proces ...)
STOP – kraj procesa
STOP
RUN
START
11/41
READY
WAIT
Implementacija procesa
Struktura podataka u kojoj se čuvaju informacije PCB
za svaki poces unutar OS – Process Control
ID
Block (PCB) i sadrži:
Processor
– ID – jedinstveni identifikator procesa unutar
context
OS
– kontekst procesora (process context): sve
Memory
params
informacije potrebne da OS nastavi
izvršavanje procesa, da ga kontroliše i ugasi
– memorijski parametri: veličina i pozicija
I/O info
dodeljenog memorijskog bloka (RAM)
– informacije o I/O resursima: spisak otvorenih
Scheduling
fajlova, zauzetih resursa itd.
params
– podaci potrebni za raspoređivanje: prioritet,
Accounting
dodeljeno CPU vreme, itd.
params
– podaci potrebni za obračunavanje
...
12/41 – ...

Procesorski red

13/41
Svi procesi u stanju READY mogu se povezati u red
PCB 1
PCB 2
ID
ID
Status
Status
Status
Kontekst
Kontekst
Kontekst
Prioritet
Prioritet
Prioritet
Sledeći
proces u
redu
Sledeći
proces u
redu
Sledeći
proces u
redu
...
PCB n
ID
Procesor
CPU
Raspoređivanje procesa
X
RUN
READY
red
PCB2
X
READY
PCB1
PCB4
PCB5
X
Disk
PCB7
I/O red
PCB9
X
Event X waiting
14/41
PCB0
PCB6
PCB3
PCB8
Event
red
Raspoređivanje procesa


15/41
Proces prolazi kroz razna stanja i redove čekanja.
Programi za raspoređivnje (schedules) odlučuju kada će
proces ući u neki red ili napustiti.
Komponente OS koje ovo obavljaju su:
– planer poslova – job scheduler, long-term or highlevel scheduler (deli poslove na procese, dodeljuje
prioritete procesima, dovodi procese u red čekanja)
– dispečer – dispatcher, short-term or low-level
scheduler (dodeljuje CPU procesima koji se nalaze u
procesorskom redu)
Pojam niti


16/41
Nit (thread) predstavlja jedno izvršavanje nekog dela
programa unutar adresnog prostora procesa
Razlika proces – nit :
– Proces (teški proces, heavyweight process): jedno
izvršavanje jednog programa sa sopstvenim adresnim
prostorom (za dati skup podataka)
– Nit (laki proces, lightweight process): jedno izvršavanje
dela programa unutar adresnog prostora procesa
Pojam niti

17/41
Više niti može biti kreirano unutar istog procesa:
– svaka ima svoj tok kontrole (thread of control) – svoju
poziciju izvršavanja u programskom kodu
– sve niti dele isti adresni prostor i resurse procesa –
otvorene fajlove, globalne podatke programa ...
– svaka ima svoje lokalne podatke za pozive
podprograma
Primeri niti
Primeri upotrebe - ista aplikacija, isti proces, isti
program, ali više uporednih aktivnosti - niti:
–
–
–
18/41
tekst-procesor (WORD): 1 - snima dokument u
pozadini, 2 - proverava gramatiku u pozadini,
3 - uporedo obrađuje pritiske tastera i druge akcije
korisnika
Web Browser: 1 - dovlači slike ili drugi sadržaj sa
Interneta, 2 - prikazuje sadržaj, 3 - obrađuje akcije
korisnika
server: po jedna nit nad istim programom za svaki
zahtev klijenta
Implementacija niti

19/41
Podrška nitima može biti:
– na nivou korisničkog programa (user threads): niti
podržava izvršno okruženje ili biblioteka programskog
jezika, OS nema koncept niti;
prednosti: efikasnost i jednostavnost
mane: kada se jedna nit blokira na sistemskom
pozivu, ceo proces se blokira
– na nivou OS-a (jezgra, kernel threads): OS direktno
podržava koncept niti
Korist niti
–
–
–
20/41
Bolji odziv interaktivne aplikacije: vremenski duge
aktivnosti se mogu raditi “u pozadini”, a uporedo prihvatati
akcije korisnika
Deljenje resursa: niti dele memoriju (adresni prostor),
otvorene fajlove, programski kod ...
Ekonomičnost: kreiranje procesa, promena konteksta,
alokacija memorije i ostalih resursa je skupo (troše resurse
– CPU, RAM, ...); niti te režijske troškove ili eliminišu ili
drastično smanjuju
Program, proces, niti



21/41
PROGRAM
MS Word, smešten na HDD
c:\Program Files\Microsoft Office\
PROCES
WINWORD.EXE – u memoriji (RAM)
NIT
izmene u tekstu, kontrola gramatike, štampa ...
Visoka poslovno-tehnička škola Užice
OPERATIVNI SISTEMI
Raspoređivanje procesa
dr Ljubica Diković
mr Slobodan Petrović
Dijagram stanja procesa





START – nastanak, formiranje procesa
READY – proces ima sve resurse, čeka na procesor
RUN – procesor izvršava proces
WAIT – proces čeka na resurs (štampač, tastatura, miš,
neki drugi proces ...)
STOP – kraj procesa
STOP
RUN
START
23/42
READY
WAIT
Kriterijumi raspoređivanja


24/42
Izbor algoritma raspoređivanja zavisi od prirode procesa.
Svaki algoritam ima svoje karakteristike i pogodniji je za
neke vrste procesa
Kriterijumi poređenja algoritama:
– Iskorišćenje procesora (CPU utilization)
– Propusnost (throughput): broj završenih procesa u
jedinici vremena
– Ukupno vreme provedeno u sistemu (turnaround time):
vreme koje protekne od kreiranja do gašenja procesa
– Vreme čekanja (waiting time): vreme koje proces
provede u redu spremnih procesa
– Vreme odziva (response time) u interaktivnom sistemu:
vreme koje protekne od korisničkog zahteva do odziva
na taj zahtev
Kriterijumi raspoređivanja

25/42
Načini optimizacije:
– optimizovati srednje vrednosti navedenih parametara
– optimizovati maksimalne/minimalne vrednosti ovih
parametara
– minimizovati varijansu vrednosti: kod interaktivnih
sistema, važnija je predvidivost odziva nego srednja
vrednost njegovog odziva
Algoritmi raspoređivanja - FCFS
26/42

First-Come, First Served (FCFS):
prvi proces koji dođe, prvi je i
uslužen od CPU

Najjednostavniji algoritam i jednostavna
implementacija pomoću FIFO (First Input – First
Output) reda: iz reda spremnih uzima se prvi
proces, a novi se stavlja na kraj
Algoritmi raspoređivanja - FCFS
Primer:
Proces:
Vreme izvršavanja:
P1
P1
24
P2
3
P3
3
Ako su redom došli na izvršenje P1, P2, P3 :
Vreme čekanja: W1=0, W2=24, W3=24+3=27,
Ws=(W1+W2+W3)/3=17
Međutim, ako su redom P2, P3, P1:
W2=0, W3=3, W1=3+3=6, Ws=(0+3+6)/3=3
27/42
P2
P3
Algoritmi raspoređivanja - FCFS



28/42
Zaključak: vreme čekanja (a time i vreme odziva) kod
FCFS nije uvek minimalno i može značajno da varira
ako su vremena izvršavanja procesa značajno različita
Konvoj efekat (convoy effect): grupa I/O (Input-Output)
procesa čeka da jedan RUN proces završi svoje dugo
izvršavanje i stalno tako u krug – konvoj efekt – veliko
sporo vozilo na uzbrdici prati veći broj manjih ali bržih
vizila
FCSF je nepogodan za sisteme sa raspodelom vremena
Algoritmi raspoređivanja - SJF



29/42
Shortest-Job-First (SJF): svakom procesu u redu čekanja
procenjuje se vreme potrebno za izvršenje i CPU se
dodeljuje onom procesu koji ima najmanju procenjenu
vrednost.
Za procese sa istom procenjenom vrednošću - FCFS.
Primer
Proces: Procenjeno vreme izvršavanja:
P1
6
P2
8
P3
7
P4
3
P4
P1
P3
P2
Algoritmi raspoređivanja - SJF
Redosled izvršavanja prema SJF:
P4, P1, P3, P2
(P4=3, P1=6, P3=7, P2=8)
Vreme čekanja: W1=3, W2=3+6+7=16, W3=3+6=9, W4=0
Ws=(3+16+9+0)/4=7
Redosled izvršavanja po FCFS:
P1, P2, P3, P4
Ws=(0+6+14+21)/4=10.25
30/42
P4
P1
P3
P2
Algoritmi raspoređivanja - SJF


31/42
Dokazivo je da je SJF optimalan u smislu da za dati skup
procesa daje minimalno srednje vreme čekanja
Osnovni problem SJF algoritma: kako znati vrednost
trajanja procesa?
Algoritmi raspoređivanja –
Prioritet procesa



32/42
Raspoređivanje sa prioritetima (Priority Scheduling, PS):
– svakom procesu se dodeljuje vrednost prioriteta, a
CPU se dodeljuje procesu sa najvišim prioritetom
Neki sistemi označavaju viši prioritet manjim celim
brojem, a neki obrnuto.
Naš primer: manji broj – viši prioritet
Algoritmi raspoređivanja –
Priority Scheduling

Primer:
Proces:
P1
P2
P3
P4
P5
0
P2
1
Vreme izvršavanja: Prioritet:
10
3
1
1
2
4
1
5
5
2
P5
6
P1
16
Srednje vreme čekanja: (0+1+6+16+18)/5=8.2
33/42
P3
18
P4
19
Algoritmi raspoređivanja –
Priority Scheduling


34/42
Prioriteti se procesima mogu dodeliti:
– interno: sam OS dodeljuje vrednost neke ili nekih resursa
kao prioritet (na primer: vremensko ograničenje,
memorijski zahtevi, broj otvorenih fajlova, količnik
prosečnog vremena I/O operacije i CPU izračunavanja)
– eksterno: zadaje se van OS, kao parametar kreiranja
procesa (npr. važnost procesa, cena njegovog
izvršavanja ili vremenska ograničenja)
Raspoređivanje po prioritetima može biti:
– sa pretraživanjem (proces se prekida kada se pojavi
proces sa većim prioritetom) i
– bez pretraživanja (proces se NE prekida kada se pojavi
proces sa većim prioritetom)
Algoritmi raspoređivanja –
Priority Scheduling


35/42
Osnovni problem ovog raspoređivanja - izgladnjivanje
(starvation): proces koji je spreman nikada ne dolazi do
procesora jer ga pretiču procesi višeg prioriteta
Jedan način rešavanja problema izgladnjivanja – starenje
(aging): prioritet nekom procesu se postepeno povećava
kako on duže čeka na izvršavanje, pa konačno dolazi na
red
Algoritmi raspoređivanja – RR


36/42
Round-Robin (RR) raspoređivanje - specijalno osmišljen
za interaktivne sisteme:
– svakom procesu se dodeljuje kratak vremenski
interval (vremenski kvantum - time slice) za
izvršavanje (npr. 10 do 100 ms) i formira kružni red
čekanja, nov proces na kraj liste
Moguće situacije:
– Proces se završio u okviru vremenskog kvantuma
– Proces nije se završio ali mora da prekine izvršenje
zbog isteka vremena
– Proces se blokira zbog čekanja na U/I operacije
Algoritmi raspoređivanja – RR

Primer:
vremenski interval (kvantum) od 4 jedinice vremena
Proces:
P1
P2
P3
Vreme izvršavanja:
24
3
3
Redosled izvršavanja: P1(4), P2(3), P3(3), P1(5*4)
37/42
Algoritmi raspoređivanja – RR

Uticaj veličine vremenskog kvantuma:
–
–

38/42
veoma veliki kvantum: RR postaje FCFS
veoma mali kvantum: povećava broj promena
konteksta i time i režijsko vreme
Okvirno empirijsko pravilo:
80% vremena izvršavanja procesa treba da
bude kraće od vremenskog kvantuma
Algoritmi raspoređivanja – MQS


39/42
Multilevel Queue Scheduling (MQS) – Agoritmi za
raspoređivanje u više redova – Procesi se razvrstavaju u
različite grupe (npr. na interaktivne i pozadinske procese)
Režim rada:
– postoji više redova čekanja spremnih procesa,
– proces se smešta u odgovarajući red prema svojim
karakteristikama (vrsta procesa ili parametri korišćenja
resursa)
– za svaki red se primenjuje poseban nezavisan algoritam
raspoređivanja
– postoji i jedan globalni algoritam raspoređivanja
između redova; uglavnom se sprovodi raspoređivanje
po prioritetima i sa preuzimanjem ili se za svaki red
dodeljuje odgovarajući vremenski kvantum izvršavanja
Algoritmi raspoređivanja – MQS

Primer:
Visok prioritet
Sistemski procesi
Interaktivni procesi
...
Paketna obrada
Korisnički procesi
Nizak prioritet
40/42
CPU
Algoritmi raspoređivanja – MFQS

41/42
Multilevel Feedback-Queue Scheduling (MFQS)
Agoritmi sa povratnom spregom između redova
– slično kao MQS, samo što procesi mogu da se
premeštaju iz jednog reda spremnih u drugi.
– ako je proces mnogo koristio CPU (istekao mu je
vremenski kvantum), premešta se u red nižeg
prioriteta
– ako je proces dugo čekao u redu nižeg prioriteta,
premešta se u red višeg prioriteta
Algoritmi raspoređivanja – MFQS

MFQS definiše sledeće:
–
–
–
–
–
42/42
broj redova spremnih procesa
algoritam raspoređivanja za svaki red
metod koji se koristi za premeštanje procesa u red
višeg prioriteta
metod koji se koristi za premeštanje procesa u red
nižeg prioriteta
u koji red se smešta novi spreman proces