Upload
others
View
20
Download
3
Embed Size (px)
Citation preview
1
Procesi in niti
Poglavje 2
2.1 Procesi2.2 Niti2.3 Medprocesna komunikacija2.4 Klasični IPC problemi2.5 Razporejanje
2
ProcesiProcesni model
• Multiprogramiranje štirih programov• Konceptualni model 4 neodvisnih, sekvenčnih procesov• Samo en program je aktiven v določenem času
3
Kreiranje procesa
Dogodki, ki povzročijo kreiranje procesa:1. Inicializacija sistema2. Izvajanje sistema - kreiranja procesa3. Uporabniška zahteva po kreaciji procesa4. Iniciacija svežnjev opravil
4
Kreiranje procesa
• Inicializacija sistema– Proces init (pid=0)
• Vidnost procesa– Viden: xtem, ura, urejevalnik,...– V ozadju: mailer, web strežnik, tiskanje, ...
• Tehnično je proces kreiran vedno z uporabo sistemskega klica za kreiranje procesa– fork()– createProcess
5
Ustavitev procesa
Pogoji za zaustavitev procesa1. Normalen izhod (samostojno)2. Izhod z napako (samostojno)3. Težka napaka (na silo)4. Ubije ga drug proces (na silo)
6
Hirarhije procesov
• Starš kreira otroka, otrok lahko kreira svoje procese
• Kreiranje hierarhije– UNIX imenuje to "skupina procesa"
• Windows nima koncepta hierarhije procesov– Vsi procesi so kreirani enaki
7
Stanja procesa (1)
• Možna stanja procesa– izvajanje– blokiran– pripravljen
• Prehodi med stanji
8
Stanja procesa (2)
• Najnižji nivo procesno strukturiranega OS – Ureja prekinitve, razporejanje
• Nad tem nivojem so sekvenčni procesi
9
Implementacija procesov (1)
• Tabela procesov – (ali) Kontrolni blok procesa– Stanje procesa, PC, SP, spomin, odprte
datoteke, ...
• Dogajanje ob prekinitvi
10
Implementacija procesov (2)
Polja zapisa procesne tabele
11
Implementacija procesov (3)
Skelet scenarija: kaj naredi najnižji nivo ob prekinitvi.
12
Stopnja multi-programiranja
13
NitiModel niti (1)
(a) Trije procesi vsak z eno nitjo (b) En proces s tremi nitmi
14
Model niti (2)
• Stvari ki si jih niti delijo v procesu• Stvari privatne za vsako nit
15
Model niti (3)
Vsaka nit ima svoj sklad
16
Uporaba niti (1)
Urejevalnik besedil s tremi nitmi
17
Uporaba niti (2)
Večnitni Web strežnik
18
Uporaba niti (3)
• Grob oris kode za prejšnjo prosojnico(a) Razpečevalec nit(b) Delavec nit
19
Uporaba niti (4)
Trije načini za konstrukcijo strežnika
20
Implementacija niti v uporabniškem prostoru
Paket za niti na uporabniškem nivoju
21
Implementacija niti v uporabniškem prostoru
• Pozitivne lastnosti– Uporabniške niti se izvajajo hitreje.– Lahko imamo na kožo pisan razvrščevalnik.
• Negativne lastnosti– Če ena nit pokliče blokirajoč sistemski klic se
ustavi celoten proces.• Lahko pogledamo vnaprej ali je sistemski klic blokirajoč. • V tem primeru se nit uvrsti v tabelo niti; naslednjič se
zgodba ponovi.
– Uporabniška nit mora sama prepustiti kontrolo razvrščevalniku.
• Drugače bo tekla v neskončnost
22
Implementacija niti v jedru
Paket za niti, ki ga uporablja jedro
23
Hibridna implementacija
Multipleksiranje niti iz uporabniškega nivoja na jedrne niti
24
Razvrščanje
• Cilj – oponašanje funkcionalnosti jedrnih niti – Dobimo uporabiške niti
• Izogibanje nepotrebnim prehodom v jedro• Jedro priredi virtualne procesorje vsakemu procesu
– Runtime sistem alocira niti procesorjem
• Problem:– Sistem se naslanja na jedro (nižji nivoji), ki kliče
uporabniške nivoje (višji nivo)
25
Proženje niti
• Kreacija nove niti ob sporočilu(a) preden prispe sporočilo(b) potem ko prispe sporočilo
26
Naredimo kodo z eno nitjo večnitno (1)
Konflikti med nitmi pri uporabi globalne spremenljivke
27
Naredimo kodo z eno nitjo večnitno (2)
Nit ima lahko privatno globalno spremenljivko
28
Medprocesna komunikacija
Dva procesa hočeta dostopat do skupnega pomnilnika hkrati
Tekmovanja
29
Kritična področja (1)
Štirje pogoji za omogočenje vzajemnega izklučevanja1. Dva procesa ne smeta bit hkrati v kritičnem območju2. Ni predpostavk o hitrosti in številu procesorjev3. Nobeden proces, ki teče izven kritične regije ne blokira
druge procese4. Noben proces ne sme čakati v neskončnost, da vstopi v
kritično področje
30
Kritična področja (2)
Vzajemno izklučevanje s kritičnimi regijami
31
Rešitve za kritično sekcijo
• Vzajemno izključevanje s čakanjem v zanki– Prepoved prekinitev– Ključavnice– Striktno izmenjevanje– Dekkerjev algoritem– Petersonov algoritem– TSL (test-and-set-lock)
• Spanje in zbujanje (kasneje)
32
Vzajemno izključevanje s čakalno zanko (1)
Striktno izmenjevanje (spin lock)(a) Proces 0. (b) Proces 1.
33
Vzajemno izključevanje s čakalno zanko (2)
Petersonova rešitev za doseganje vzajemnega izključevanja
34
Vzajemno izključevanje s čakalno zanko (3)
Vstop in izstop iz kritične sekcije z uporabo
TSL instrukcij
35
Proizvajalec-Uporabnik s kritičnim tekmovanjem
Spanje in zbujanje
(fatal race condition)
36
Semaforji (1)// Implementacija semaforja iz knjige S.Hartley.
class semaphore {
protected int value = 0 ;
protected semaphore() { value = 0 ; }
protected semaphore(int initial) { value = initial ; }
public synchronized void P() {
value-- ;
if (value < 0)
try { wait() ; } catch( InterruptedException e ) { }
}
public synchronized void V() {
value++ ; if (value <= 0) notify() ;
}
}
37
Semaforji (2)// Implementacija splosnega semaforja iz knjige Doug Lea.
class semaphore {
private int value ;
public semaphore(int i) {
value = i ;
}
synchronized void P() {
while ( value <= 0 )
try { wait() ; } catch (InterruptedException e) { }
value-- ;
}
synchronized void V() {
value++ ;
notify() ;
}
}
38
Semaforji (3)
Proizvajalec-Uporabnik z uporabo semaforjev
39
Mutex
Implementacija mutex_lock in mutex_unlock
40
Monitorji (1)
Primer monitorja
41
Pogojne spremenljivke
• Pogojne spremenljivke so uporabne samo v monitorju
• Nitka lahko počaka na pogojno spremenljivko: wait – V tem trenutku druga nitka lahko vstopi v monitor
• Nitka lahko tudi sporoči drugi nitki, da je pogoj izpolnjen: signal – Ena čakajoča nitka lahko nadaljuje z delom
• Nitka lahko pošlje sporočilo vsem čakajočim nitkam na pogojno spremenljivko - broadcast
42
Monitorji (2)
• Skica impl. Proizvajalca-Uporabnika z monitorji– Samo en monitor je aktiven ob danem času– Vmesni pomnilnik ima N predalov
43
Monitorji (3)
Rešitev problema Proizvajalca-Uporabnika v Javi (del 1)
44
Monitors (4)
Rešitev problema Proizvajalca-Uporabnika v Javi (del 2)
45
Pošiljanje sporočil
Problem Proizvajalca-Uporabnika z N sporočili
46
Meje (Barriers)
• Uporaba mej– Proces se približuje meji– Vsi procesi razen enega so blikorani pri meji– Pride zadnji in vsi gredo naprej
47
Obedujoči filozofi (1)
• Filozofi jejo/razmišljajo• Potrebujejo 2 vilici• Jemljejo eno vilico
naenkrat • Kako preprečiti smrtni
objem
48
Obedujoči filozofi (2)
Nepravilna rešitev za problem filozofov
49
Obedujoči filozofi (3)
Rešitev za obedujoče filozofe (del 1)
50
Obedujoči filozofi (4)
Rešitev za obedujoče filozofe (del 2)
51
Problem Bralcev in Pisalcev
Rešitev za bralce in pisalce
52
Problem spečega brivca (1)
53
Problem spečega brivca (2)
Rešitev za spečega brivca
54
RazporejanjeUvod v razporejanje (1)
• Razporejanje na 2. generaciji: poženi naslednji posel
• Razporejanje na večjih računalnikih 3. generacije– CPU čas je zelo dragocen
• Osebni računalniki– Razporejanje ne pride toliko do izraza
• Razporejanje na omrežnih strežnikih– Procesorski čas je zelo pomemben– Zamenjava procesa je zelo draga
55
Uvod v razporejanje (2)
• Uporaba CPU se zamenjuje s čakanjem na I/O – Proces vezan na CPU – Proces vezan na I/O
56
Uvod v razporejanje (3)
• Kdaj razporejati?– Ko se proces kreira se doda v vrsto READY.– Ko se proces konča je potrebno pognati
razvrščevalnik.– Ko je proces blokiran bodisi z I/O ali čem
drugim (npr. semafor).– V primeru da se zgodi prekinitev se lahko
nadaljuje isti proces ali se izbere nov.
57
Uvod v razporejanje (4)
• Kdaj razporejati?– Ura generira prekinitev z 60 Hz (20ms). – Ne-preklopno razporejanje pusti, da se proces izvrši
do konca.– Preklopno (preemptive) razporejanje pusti izvajanje
procesa določen čas potem izbere drug proces.
58
Uvod v razporejanje (5)
Algoritmi za razporejanje
59
Razporejanje v sveženjskih sistemih (1)
• Prvi pride prvi melje• Najkrajši posel najprej• Najkrajši preostali čas najprej
60
Razporejanje v sveženjskih sistemih (2)
Primer razporejanja: najkrajši posel najprej
61
Razporejanje v sveženjskih sistemih (3)
Trije nivoji razporejanja
62
Razporejanje v interaktivnih sistemih (1)
• Round Robin• Prioritetno razporejanje• Prioritetno razporejanje z več vrstami• Razporejanje z zagotovljenimi roki• Razporejanje loterija• Pravično razporejanje
63
Razporejanje v interaktivnih sistemih (2)
• Razporejanje Round Robin– Seznam procesov za izvajanje– … po tem, ko je B naredil en kvant
64
Razporejanje v interaktivnih sistemih (3)
• Vsi procesi so enako pomembni pri RR• Osnovna ideja:
– Vsak proces ima prioriteto – Vedno se uporabi proces z najvišjo prioriteto
• Izogibanje preveliki uporabi procesov z visoko prio.:– Prioriteta pada vsak kvant– Vsak proces ima max kvant
• Statično in dinamično dodeljevanje prioritet
Prioritetno razporejanje
65
Razporejanje v interaktivnih sistemih (4)
• Razporeditev procesov v razrede (vrste) glede na prio– RR razporejanje znotraj razreda; prio razporejanje med
razredi
– Algoritem za razporejanje 1:• Izvedi najvišjo prio vrsto, pojdi navzdol.
– Algoritem za razporejanje 2:• CTSS, MIT, IBM 7094, 1962
• Ugotovitev: zamenjava procesov je draga
• Najvišji razred 1 kvant; nižji razredi 2, 4, 8, 16, ... kvantov
• Interaktivni procesi so odzivni
• Procesom z daljšim CPU se dviguje čas
Prioritetno razporejanje
66
Razporejanje v interaktivnih sistemih (3)
Algoritem za razporejanje s štirimi prioritetnimi razredi
67
Razporejanje za sisteme v realnem-času
Razporedljiv sistem v realnem času• Dano
– m periodičnih dogodkov
– dogodek i se zgodi s periodo Pi in zahteva Ci sekund
• Obremenitev se lahko izvede če
1
1m
i
i i
C
P=
≤∑
68
Politika vs mehanizem
• Ločimo to kar je dovoljeno narediti od tega kako je narejeno.– Proces ve kateri otroci (niti) so pomembni in
potrebujejo prioriteto
• Algoritem razporejanja je parametriziran– Mehanizem v jedru
• Parametri so definirani z uporabnikovimi procesi– Politiko določi uporabniški proces
69
Razporejanje niti (1)
Možna razporejanja uporabniških niti • 50-msec kvant procesa• Niti se izvajajo vsakih 5 msec/CPU
70
Razporejanje niti (2)
Možna razporejanja niti na nivoju jedra• 50-msec kvant procesa• Niti se izvajajo v 5 msec/CPU