Poglavje 2 Procesi in niti 2.1 Procesi 2.2 Niti 2.3 Medprocesna komunikacija 2.4 Klasični IPC problemi 2.5 Razporejanje 1 Procesi Procesni model • Multiprogramiranje štirih programov • Konceptualni model 4 neodvisnih, sekvenčnih procesov • Samo en program je aktiven v določenem času 2 Kreiranje procesa Dogodki, ki povzročijo kreiranje procesa: 1. Inicializacija sistema 2. Izvajanje sistema - kreiranja procesa 3. Uporabniška zahteva po kreaciji procesa 4. Iniciacija svežnjev opravil 3 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 4 Ustavitev procesa Pogoji za zaustavitev procesa 1. Normalen izhod (samostojno) 2. Izhod z napako (samostojno) 3. Težka napaka (na silo) 4. Ubije ga drug proces (na silo) 5 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 6 Stanja procesa (1) • Možna stanja procesa – izvajanje – blokiran – pripravljen • Prehodi med stanji 7 Stanja procesa (2) • Najnižji nivo procesno strukturiranega OS – Ureja prekinitve, razporejanje • Nad tem nivojem so sekvenčni procesi 8 Implementacija procesov (1) • Tabela procesov – (ali) Kontrolni blok procesa – Stanje procesa, PC, SP, spomin, odprte datoteke, ... • Dogajanje ob prekinitvi 9 Implementacija procesov (2) Polja zapisa procesne tabele 10 Implementacija procesov (3) Skelet scenarija: kaj naredi najnižji nivo ob prekinitvi. 11 Stopnja multi-programiranja 12 Niti Model niti (1) (a) Trije procesi vsak z eno nitjo (b) En proces s tremi nitmi 13 Model niti (2) • Stvari ki si jih niti delijo v procesu • Stvari privatne za vsako nit 14 Model niti (3) Vsaka nit ima svoj sklad 15 Uporaba niti (1) Urejevalnik besedil s tremi nitmi 16 Uporaba niti (2) Večnitni Web strežnik 17 Uporaba niti (3) • Grob oris kode za prejšnjo prosojnico (a) Razpečevalec nit (b) Delavec nit 18 Uporaba niti (4) Trije načini za konstrukcijo strežnika 19 Implementacija niti v uporabniškem prostoru Paket za niti na uporabniškem nivoju 20 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 21 Implementacija niti v jedru Paket za niti, ki ga uporablja jedro 22 Hibridna implementacija Multipleksiranje niti iz uporabniškega nivoja na jedrne niti 23 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) 24 Proženje niti • Kreacija nove niti ob sporočilu (a) preden prispe sporočilo (b) potem ko prispe sporočilo 25 Naredimo kodo z eno nitjo večnitno (1) Konflikti med nitmi pri uporabi globalne spremenljivke 26 Naredimo kodo z eno nitjo večnitno (2) Nit ima lahko privatno globalno spremenljivko 27 Medprocesna komunikacija Tekmovanja Dva procesa hočeta dostopat do skupnega pomnilnika hkrati 28 Kritična področja (1) Štirje pogoji za omogočenje vzajemnega izklučevanja 1. 2. 3. 4. Dva procesa ne smeta bit hkrati v kritičnem območju Ni predpostavk o hitrosti in številu procesorjev Nobeden proces, ki teče izven kritične regije ne blokira druge procese Noben proces ne sme čakati v neskončnost, da vstopi v kritično področje 29 Kritična področja (2) Vzajemno izklučevanje s kritičnimi regijami 30 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) 31 Vzajemno izključevanje s čakalno zanko (1) Striktno izmenjevanje (spin lock) (a) Proces 0. (b) Proces 1. 32 Vzajemno izključevanje s čakalno zanko (2) Petersonova rešitev za doseganje vzajemnega izključevanja33 Vzajemno izključevanje s čakalno zanko (3) Vstop in izstop iz kritične sekcije z uporabo TSL instrukcij 34 Proizvajalec-Uporabnik s kritičnim tekmovanjem Spanje in zbujanje (fatal race condition) 35 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() ; } } 36 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() ; } } 37 Semaforji (3) Proizvajalec-Uporabnik z uporabo semaforjev 38 Mutex Implementacija mutex_lock in mutex_unlock 39 Monitorji (1) Primer monitorja 40 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 41 Monitorji (2) • Skica impl. Proizvajalca-Uporabnika z monitorji – Samo en monitor je aktiven ob danem času – Vmesni pomnilnik ima N predalov 42 Monitorji (3) Rešitev problema Proizvajalca-Uporabnika v Javi (del 1) 43 Monitors (4) Rešitev problema Proizvajalca-Uporabnika v Javi (del 2) 44 Pošiljanje sporočil Problem Proizvajalca-Uporabnika z N sporočili 45 Meje (Barriers) • Uporaba mej – Proces se približuje meji – Vsi procesi razen enega so blikorani pri meji – Pride zadnji in vsi gredo naprej 46 Obedujoči filozofi (1) • Filozofi jejo/razmišljajo • Potrebujejo 2 vilici • Jemljejo eno vilico naenkrat • Kako preprečiti smrtni objem 47 Obedujoči filozofi (2) Nepravilna rešitev za problem filozofov 48 Obedujoči filozofi (3) Rešitev za obedujoče filozofe (del 1) 49 Obedujoči filozofi (4) Rešitev za obedujoče filozofe (del 2) 50 Problem Bralcev in Pisalcev Rešitev za bralce in pisalce 51 Problem spečega brivca (1) 52 Problem spečega brivca (2) Rešitev za spečega brivca 53 Razporejanje Uvod 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 54 Uvod v razporejanje (2) • Uporaba CPU se zamenjuje s čakanjem na I/O – Proces vezan na CPU – Proces vezan na I/O 55 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. 56 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. 57 Uvod v razporejanje (5) Algoritmi za razporejanje 58 Razporejanje v sveženjskih sistemih (1) • Prvi pride prvi melje • Najkrajši posel najprej • Najkrajši preostali čas najprej 59 Razporejanje v sveženjskih sistemih (2) Primer razporejanja: najkrajši posel najprej 60 Razporejanje v sveženjskih sistemih (3) Trije nivoji razporejanja 61 Razporejanje v interaktivnih sistemih (1) • • • • • • Round Robin Prioritetno razporejanje Prioritetno razporejanje z več vrstami Razporejanje z zagotovljenimi roki Razporejanje loterija Pravično razporejanje 62 Razporejanje v interaktivnih sistemih (2) • Razporejanje Round Robin – Seznam procesov za izvajanje – … po tem, ko je B naredil en kvant 63 Razporejanje v interaktivnih sistemih (3) Prioritetno razporejanje • 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 64 Razporejanje v interaktivnih sistemih (4) Prioritetno razporejanje • 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 65 Razporejanje v interaktivnih sistemih (3) Algoritem za razporejanje s štirimi prioritetnimi razredi 66 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 m Ci ≤1 ∑ i =1 Pi 67 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 68 Razporejanje niti (1) Možna razporejanja uporabniških niti • 50-msec kvant procesa • Niti se izvajajo vsakih 5 msec/CPU 69 Razporejanje niti (2) Možna razporejanja niti na nivoju jedra • 50-msec kvant procesa • Niti se izvajajo v 5 msec/CPU 70
© Copyright 2024