4-13. Ratkaisu 4: OK, mutta... vrt. 2. Ratkaisu 3: OK. Ratkaisu 5: OK? Nälkiintyminen?

Samankaltaiset tiedostot
Lukkiutuminen. Taustaa Aterioivat Filosofit Ennaltaehkäisy Havaitseminen Välttely. Andrews 4.3 Stallings (tai mikä tahansa KJ-kirja)

Lukkiutuminen. Taustaa

Taustaa. Lukkiutuminen. Seuraukset. Määritelmiä Lukkiuma (deadlock) päättymätön odotus BLOCKED-tilassa. prosessi P. prosessi Q. pyydä A? OK.

Ongelmakenttä. Yhteenvetoa. Mekanismit. Ratkottava. Lukkomuuttujat, Spin Locks. Lukkomuuttujat. Rinnakkaisohjelmistot 2004 / Auvo Häkkinen 9-1

Käyttöjärjestelmät: poissulkeminen ja synkronointi

OSA I: Yhteisten muuttujien käyttö Prosessit samassa koneessa. Sisältöä. Poissulkeminen. Halutut ominaisuudet 2-1. Rinnakkaiset, atomiset operaatiot

OSA II: Hajautettu ympäristö. Sisältö, osa II. Ei yhteistä muistia. Sanomanvälitys. Etäproseduurikutsu. Rendezvous. Rio 2004 / Auvo Häkkinen

Semaforit Liisa Marttinen 2-1

alkuarvo P(S) public V(S) public jos kriittinen alue vapaa, lukitse se ja jatka eteenpäin jos kriittinen alue varattu, odota

Monitorit. Monitori Synkronointimenetelmiä Esimerkkejä. Andrews , Stallings 5.5

Monitorit. Tavoite. Monitori Synkronointimenetelmiä Esimerkkejä. Andrews , Stallings 5.5. Minimoi virhemahdollisuuksia

Ongelmakenttä. Yhteenvetoa. Ratkottava. Mekanismit. Lukkomuuttujat. Lukkomuuttujat, Spin Locks. Rinnakkaisuuden tarve. Kommunikointiin tarvitaan

Yhteenvetoa. Ongelmakenttä

OSA I: Sisältöä. Atomisuus (atomic action) v Poissulkeminen ja synkronointi. Kriittinen (koodi)alue (critical section)

OSA I: Yhteisten muuttujien käyttö. Prosessit samassa koneessa. Rio 2004 / Auvo Häkkinen 2-1

OSA I: Yhteisten muuttujien käyttö. Sisältöä. Prosessit samassa koneessa. Poissulkeminen ja synkronointi. Semaforit ja rinnakkaisuuden hallinta

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen,

Ongelmakenttä. Rinnakkaisuuden tarve. Kommunikointiin tarvitaan. Ympäristö Suunnittelun yksinkertaistaminen Suorituskyky Luotettavuus

Semaforit. Semaforit. semafori S S.arvo. alkuarvo P(S) S.joukko V(S)

Semaforit ja rinnakkaisuuden hallinta. Tuottajat ja kuluttajat. Lukijat ja kirjoittajat. Andrews 4.2, Rio 2004 / Auvo Häkkinen

Semaforit Javassa. Mari Kononow, Eveliina Mattila, Sindi Poikolainen HELSINGIN YLIOPISTO

Syitä siirtoon. Hajautettu prosessien hallinta. Stallings, Luku 15. Sisältöä luento 20. Kuka/mikä päättää siirrosta? Esimerkki.

Hajautettu prosessien hallinta. Stallings, Luku 15. Sisältöä luento 20

Semaforit ja rinnakkaisuuden hallinta

Semaforit ja rinnakkaisuuden hallinta

Liite 1. Projektin tulokset (Semaforit Javassa) Jukka Hyvärinen Aleksanteri Aaltonen

OSA II: Hajautettu ympäristö. Sisältö, osa II. Sanomanvälitys. Käsitteistöä. Sanomanvälitys. Kommunikointi. Sanomanvälitys. Etäproseduurikutsu

Sisältöä luento 20. Hajautettu prosessien hallinta. Stallings, Luku 15. Prosessin siirto. Syitä siirtoon. Esimerkki. Kuka/mikä päättää siirrosta?

Rinnakkaisohjelmistot. Liisa Marttinen Tietojenkäsittelytieteen laitos Helsingin yliopisto Kevät 2004

Transaktiot - kertausta

OSA II: Hajautettu ympäristö. Ei yhteistä muistia. Rio 2004 / Auvo Häkkinen

Stabilointi. Marja Hassinen. p.1/48

Javan semaforit. Joel Rybicki, Aleksi Nur mi, Jara Uitto. Helsingin yliopisto

Itsestabilointi: perusmääritelmiä ja klassisia tuloksia

Rinnakkaisohjelmointi, Syksy 2006

Etäproseduurikutsu, Remote Procedure Call (RPC) Etäproseduurikutsu. Poissulkeminen moduulin sisällä?

Etäproseduurikutsu. Etäproseduurikutsu, Remote Procedure Call (RPC)

Etäproseduurikutsu. RPC Toteutus Virhesemantiikka. Andrews 8.1, 10.3, Stallings 13.3

R 2 [0] ei ole likainen luku, sillä avaimelle 0 on jo palautettu sen alkuperäinen arvo.

Tietokoneen toiminta (Computer Organization I)

Tavoite. Monitorit. Monitori Hoare Monitori. Minimoi virhemahdollisuuksia. Monitori Synkronointimenetelmiä Esimerkkejä

Tietokoneen toiminta (Computer Organization I)

Jaana Diakite Projekti 1 JAVA-Monitorit 1(13) Rinnakkaisohjelmointi Anu Uusitalo

Ohjelmoinnin peruskurssien laaja oppimäärä

Tietokoneen toiminta (Computer Organization I)

Tietokoneen toiminta (Computer Organization I)

Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön?

4. Luento: Prosessit ja säikeets. Tommi Mikkonen,

Osio 3: Prosessit, siirräntä ja tiedostojärjestelmä

Seminaari: Keskusmuistitietokannat. Keskusmuistitietokantojen samanaikaisuuden hallinta Ilkka Pullinen

Tietojenkäsittelyn perusteet 2. Lisää käyttöjärjestelmistä

Algoritmit 2. Luento 13 Ti Timo Männikkö

Etäproseduurikutsu, Remote Procedure Call (RPC) Etäproseduurikutsu. Poissulkeminen moduulin sisällä?

11. Javan toistorakenteet 11.1

u vapaakäyntisyys (reentrancy) u Yhteinen koodialue u kullakin oma data-alue, pino, PCB u osoitteet suhteellisia prosessin alun suhteen

Luento 3: PROSESSIT JA NIIDEN HALLINTA

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

käyttötapaukset mod. testaus

Ohjelmoinnin peruskurssien laaja oppimäärä

Prosessi perinteisesti

Stallings, Luku 4.1. KJ-I I S2005 / Tiina Niklander, kalvot Auvo HäkkinenH

Algoritmit 2. Luento 10 To Timo Männikkö

Semaforit ja rinnakkaisuuden hallinta. Tuottajat ja kuluttajat. Halkaistu binäärisemafori (Split binary semaphore) semaforit empty ja full

Rinnakkaisohjelmointi

Rinnakkaisohjelmointi

Rinnakkaisohjelmointi

Luento 5: YKSINKERTAINEN SEGMENTOINTI JA SIVUTUS

Algoritmit 2. Luento 10 To Timo Männikkö

2 Konekieli, aliohjelmat, keskeytykset

» multiaccess channel» random access channel LAN (Ethernet) langaton. ongelma: käyttövuoron jakelu Yhteiskäyttöisen kanavan käyttö

4. MAC-alikerros. yleislähetys (broadcast) ongelma: käyttövuoron jakelu. » multiaccess channel» random access channel LAN (Ethernet) langaton

ltöä (Luennot 5&6) Luento 5: YKSINKERTAINEN SEGMENTOINTI JA SIVUTUS Pikakertaus: : a) b) c) Dyn.. part.: sijoitus Kuva Buddy System: esimerkki

Samanaikaisuuden hallinta

Algoritmit 2. Luento 9 Ti Timo Männikkö

Algoritmit 1. Demot Timo Männikkö

Palvelut. Sulautetut järjestelmät Luku 2 Sivu 1 (??) Sulautetut käyttöjärjestelmät

Osio 2: Luennot 4-7 Muistinhallinta

Osio 2: Luennot 5-8 Muistinhallinta

Ohjelmoinnin perusteet Y Python

5. Luento: Rinnakkaisuus ja jako prosesseihin (+ lyhyesti reaaliajasta) Arto Salminen,

Sisältöä PROSESSIT JA NIIDEN HALLINTA. Prosessi. Prosessi virtuaalimuistissa. Prosessi. Prosessi virtuaalimuistissa. Käyttöjärjestelmät

Prosessi virtuaalimuistissa PROSESSIT JA NIIDEN HALLINTA. Sisältöä. Prosessi virtuaalimuistissa. Prosessi. Prosessi. Käyttöjärjestelmät, Luento 4

PROSESSIT JA NIIDEN HALLINTA

Käyttöjärjestelmät: prosessit

Stallings, Luku 8.1. KJ-I I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 8-1

Algoritmit 2. Luento 11 Ti Timo Männikkö

HAAGA-HELIA Heti-09 1 (14) ICT05: Tiedonhallinta ja Tietokannnat O.Virkki Transaktionkäsittely

815338A Ohjelmointikielten periaatteet

(p j b (i, j) + p i b (j, i)) (p j b (i, j) + p i (1 b (i, j)) p i. tähän. Palaamme sanakirjaongelmaan vielä tasoitetun analyysin yhteydessä.

12. Javan toistorakenteet 12.1

Hajautettu ympäristö Ei yhteistä muistia Kommunikointi sanomien välityksellä

Hajautettu ympäristö Ei yhteistä muistia Kommunikointi sanomien välityksellä

Aikuisvalmennuksen paikkausjärjestelmän käyttöohje

Käyttöjärjestelmät II

Stabiloivat synkronoijat ja nimeäminen

12. Javan toistorakenteet 12.1

Algoritmit 1. Luento 4 Ke Timo Männikkö

Rinnakkaisuus. parallel tietokoneissa rinnakkaisia laskentayksiköitä concurrent asioita tapahtuu yhtaikaa. TTY Ohjelmistotekniikka

Yleiskuva. Käyttöjärjestelmät II. Tietokonejärjestelm. rjestelmä. KJ ja laitteistopiirteet. KJ ja laitteistopiirteitä.

Käyttöjärjestelmät II

Transkriptio:

Taustaa prosessi P prosessi Q yksityiskäyttöiset objektit q Lukkiutuminen pyydä A? OK. Taustaa Aterioivat Filosofit Ennaltaehkäisy Havaitseminen Välttely A pyydä B? Odota! C Andrews. Stallings 6.-6.6 (tai mikä tahansa KJ-kirja) pyydä B? OK. B pyydä A? Odota! objekti: puskuri, sivu, skanneri, levyajuri, kriittinen vaihe,... - Seuraukset Prosessit eivät etene ja... niiden varaamat resurssit pysyvät varattuina CPU muisti, I/O-laitteet loogiset resurssit (semaforit, kriittiset alueet,...) Laskenta epäonnistuu Kriittinen vaihe Suoritusjärjestys, ajoitus suoritus ei pääty koskaan järjestelmä kaatua köllähtää tilanne ei kenties toistettavissa: suoritusjärjestys Stallings Fig 6. - - Määritelmiä Lukkiuma (deadlock) päättymätön odotus BLOCKED-tilassa Livelock prosessi käyttää prosessoria odottamiseen (spinlock, busy loop) Ping-pong sinä ensin eikun sinä ensin -... kaksi prosessia vuorottelevat tarjoten vuoro toiselle, eivätkä tee mitään hyödyllistä Nälkiintyminen (starvation) prosessi READY-tilassa - mutta ei silti saa koskaan prosessoria Rinnakkaisohjelmistot / Auvo Häkkinen -5 Mahdollinen suorituspolku Suoritusjärjestys, ajoitus Stallings Fig 6. orig Bacon Fig 7. -6 -

Syitä lukkiutumiseen Kolme staattista toimintapoihin liittyvää syytä S Poissulkemistarve (mutual exclusion) resurssilla yksi käyttäjä kerrallaan S Pidä ja odota (hold and wait) prosessi pitää saamansa resurssin samalla, kun jää odottamaan lisäresursseja S Kenelläkään ei etuoikeutta (no pre-emption) resurssia ei voi ottaa pois väkisin Yksi dynaaminen syy Mahdollinen suorituspolku D Odotus kehässä (circular wait) on olemassa kehä prosesseista, jotka pitävät itsellään resurssia, jota kehän seuraava prosessi tarvitsee edetäkseen Stallings Fig 6. orig Bacon Fig 7. -7-8 Aterioivat Filosofit Aterioivat Filosofit -9 Ratkaisu : kullekin haarukalle oma semafori Rinnakkaisohjelmistot / Auvo Häkkinen Kuinka varata haarukat ilman - lukkiutumista - nälkiintymistä s.e. kaikki saavat olla paikalla? - Ratkaisu : vain yksi voi yrittää kerrallaan sem turn = # säätelee yritysvuoroja process P[i]: repeat think() P(fork[i]) P(fork[(i + ) mod 5]) eat() V(fork[i]) V(fork[(i+) mod 5]) until false Filosofi: aattelepa ite ota kaksi haarukkaa... yksi kummaltakin puolelta syö, syö, syö spagettia palauta haarukat sem fork[..] = (,,,, ) (Dijkstra) Ei OK! Miksei? - process P[i]: repeat think() P(turn) P(fork[i]) P(fork[(i+) mod 5]) V(turn) eat() V(fork[i]) V(fork[(i+) mod 5]) until false Ei OK! Miksei? - -

Ratkaisu : OK Ratkaisu : OK, mutta... vrt. sem fork[5] = ([5] ); sem room = ; Andrews Fig..7 - process Philosopfer[i= to ] { while (true) { think(); P(room); P(fork[i]); P(fork[(i+) mod 5]); eat(); V(fork[i]); V(fork[(i+) mod 5]); V(room); } } Stallings Fig. 6. - Ratkaisu 5: OK? Nälkiintyminen? Tanenbaum Fig.. Huom: down() = P(), up() = V() Tanenbaum Fig.. Ratkaisu 5: Tapettaisko filosofi? Ratkaisu 6: OK, ei yhteisiä resursseja EATING HUNGRY Ostakaa 5 haarukkaa lisää! Filosofi[i]: aatteleppa ite ota kaksi haarukkaa yksi molemmilta puolilta syö, syö, syö spagettia palauta haarukat - 7-8

Ennaltaehkäisy = Poista joku syistä S, S, S tai D Lukkiuman ennaltaehkäisy Stallings 6. - 9 Ehkäise S (poissulkemistarve)? = käytä yhteiskäyttöisiä resursseja yksittäiskäyttöisten sijasta, spooling (= hanki enemmän resursseja) poissulkemistarpeelle omat syynsä, mutta hienojakoisempi toteutus sallii paremmin rinnakkaisuutta pienemmät alueet, yhtäaikainen käyttö, enemmän lukkoja yleistä esim. tietokantojen yhteydessä, lyhyet transaktiot - Ehkäise S (pidä ja odota)? = pyydä kaikki resurssit yhdellä kertaa = odota, että saat kaikki kerralla tehotonta pitkät odotusajat: varaa nyt - käytä paljon paljon myöhemmin varautuminen pahimpaan: varaa resursseja, joita ei ehkä tarvitakaan vaikea / mahdoton toteuttaa? tiedettävä etukäteen mitä resursseja tarvitaan kaikilla mahdollisilla suorituspoluilla Ehkäise S (ei etuoikeuksia)? = jos varaaminen ei onnistu, vapauta jo varatut resurssit, peruuta edelliseen tilanteeseen kokeile alustavasti varausta, tai tarkistuspisteet manageri? OK, jos järjestelmä suunniteltu tämä mielessä käytännöllinen, jos tilatiedon talletus helppoa ja lukkiutumisriski aidosti olemassa normaalia käytäntöä transaktioiden käsittelyssä - - Ehkäise D (odottaminen kehässä)? = numeroi resurssit lineaarisesti, varaa numerojärjestyksessä etukäteistietoa resurssitarpeesta, varauduttu pahimpaan tapaukseen pessimistinen TAI varaa sitä mukaa kun tarve (järjestyksessä), tarvittaessa palaa aiempaan tilaan optimistinen - Ratkaisu 5: Ehkäise S (pidä ja odota) = varaa kaksi haarukkaa yhtäaikaa process P[i]: repeat think( ) take_ forks(i, (i+) mod 5) eat( ) put_forks( i, (i+) mod 5) until false take & put: resurssin hallinta tehtävät: vuorojen antaminen lukkiutuman ehkäisy nälkiintymisen ehkäisy -

Vaarallisten kohtien metsästys P(turn) P(fork[i]) P(fork[(i+) mod 5]) V(turn) : eat() : P(turn) : this is not fair! Lukkiuman havaitseminen : eat() : eat() : this is not fair! : eat() : eat() Stallings 6. - 5-6 Lukkiuman havaitseminen Havaitseminen vaikeaa muodostaako ryhmä prosesseja lukkiuman, vai odottavatko ne ulkoista tapahtumaa? Jotta voisi toipua, pystyttävä havaitsemaan toipuminen: peruutus edeltävään tilanteeseen tapa yksi tai useampi lukkiumaan kuuluva prosessi KJ tarvitsee tietoa resurssien allokoinnista sellaisessa muodossa, että voi havaita lukkiuman! tutki aika-ajoin onko lukkiumaa Resurssien (objektien) allokointi Prosessit P i i=..m Resurssit R j j=..n yhteensä R = (R,..., R n ) vapaana V = (V,..., V n ) Allokointimatriisi A [P i,r j ] montako resurssia Rj allokoitu prosessille Pi Pyyntömatriisi Q [P i,r j ] montako resurssia Rj prosessi Pi pyytänyt - 7-8 Esim.: Alkutilanne Prosessilla on resurssit ja, ja se haluaa resurssit ja 5. Kenellä on resurssi? Mitkä resurssit ovat vapaana? DDA: Deadlock Detection Algorithm (Dijkstra) DDA [Poista prosessit, joille ei ole allokoitu resursseja] Merkitse käsitellyiksi kaikki tyhjät rivit matriisissa A. DDA [Alusta vapaiden resurssien laskurit] Alusta työvektori W = V DDA [Etsi prosessi, jonka maksimipyyntöön voi suostua] Etsi merkitsemätön rivi Pi siten, että Q[Pi,Rj] W[Rj] j =..n Jos ei löydy, algoritmi on päättynyt. DDA. [Oleta, että prosessi suoritettu, ja vapauta varaukset] Aseta W = W+A[Pi] ts.. W[Rj] = W[Rj]+A[Pi,Rj] j =..n Merkitse rivi Pi käsitellyksi ja palaa askeleeseen DL. Onko tässä lukkiuma vai ei? Stallings Fig. 6.9-9 Kun algoritmi päättyy, merkitsemättömät rivit osoittavat lukkiumaan kuuluvat prosessit. Miksi?

Esim.: Vaihe allokointi matriisi A DDA merkitse pyyntömatriisi Q DDA merkitse, voi suostua: Q[,5] W[5] kaikki R: vapaat V: työvektori W: + DDA -> uusi W: DDA kopioi - Esim.: Vaihe allokointi matriisi A kaikki R: vapaat V: työvektori W: pyyntömatriisi Q DDA ei prosessia Pi s.e. Q[Pi,Rj] W[Rj] j. Algoritmi päättyy prosessit ja lukkiutuneet Mitä sitten? Bacon Fig. 7.9: Graphs - Pankkiirin algoritmi Alkujaan yhdelle resurssille (raha) Lukkiuman välttely Miksi Pankkiirin? varmistettava, että pankki ei koskaan uloslainaa niin paljon, ettei se pysty tyydyttämään kaikkien talletusasiakkaiden maksimitarpeita (Huom: pankilla myös omaa pääomaa) Varmista ensin, allokoi vasta sitten Stallings 6. - - Pankkiirin algoritmi useille resursseille (Dijkstra) Kerää tilatietoa Prosesseille jo allokoiduista resursseista Resursseista, joita kukin prosessi voisi edelleen pyytää Varmista pyynnön vaikutus etukäteen Allokoi vasta, kun varma ettei johda lukkiumaan pahimmassakaan tapauksessa Tarkista, että löytyy ainakin yksi vuorottelujärjestys, jossa kaikki prosessit voivat suoriutua loppuun vaikka muut pyytäisivät maksimitarpeensa "worst case analysis" - 5 Allokointi- ja pyyntömatriisit kuten edellä LISÄKSI Resurssien maksimipyyntö C[Pi,Rj] montako resurssia Rj prosessi Pi voisi maksimissaan pyytää prosessien kerrottava etukäteen! Mahdollinen uusi allokointimatriisi A [Pi,Rj] montako resurssia Rj prosessilla Pi olisi, jos sille annettaisiin sen maksimitarpeen mukaan Mahdollinen uusi pyyntömatriisi Q [Pi,Rj] montako resurssia Rj prosessi Pi voisi vielä tämän jälkeen pyytää Q = C - A Alkuperäisiä ei voi vielä muuttaa! - 6

Mieti allokoinnin seurauksia etukäteen: Oleta, että allokointi tehdään Laske uusi mahdollinen allokointimatriisi A Laske uusi mahdollinen pyyntömatriisi Q pahimmassa tapauksessa, ts. tilanteessa jossa kaikki pyytävät oman maksimimääränsä Sovella lukkiuman havaitsemisalgoritmia DDA matriiseille A ja Q Jos ei johda lukkiumaan, suostu pyyntöön muuten älä suostu pyyntöön jätä prosessi odottamaan kun joku vapauttaa, tarkista uudelleen Allokointimatriisi A Pyyntömatriisi Q Maksimipyyntö C R R R R R5 R R R R R5 R R R R R5 P P P P Resurssivektori R R R R R R5 Vapaana V Voiko P:n pyyntöön suostua? Voisiko lukkiutua? - 7-8 Jos P:n pyyntöön suostuttaisiin niin Allokointimatriisi A' Pyyntömatriisi Q' Maksimipyyntö C R R R R R5 R R R R R5 R R R R R5 P P P P Resurssivektori R R R R R R5 Vapaana V R R R R R5 Vapaana V' - 9 R R R R R5 Työvektori W Työvektori W Työvektori W Työvektori W Työvektori W DDA merkkaa rivi DDA merkkaa rivi DDA merkkaa rivi DDA merkkaa rivi Voi suostua! Mitä, jos ei voi? - Ongelmia Yleisrasite tutki jokaisella pyynnöllä... prosessia ja resurssia? Kertauskysymyksiä? Prosessin tiedettävä maksimitarve etukäteen viksu arvaus? pahin tapaus? dynaamisesti vieläkin rasittavampaa Aina ei löydy varmaa allokointijärjestystä ei-turvallinen tila ei aina johda lukkiumaa voiko ottaa riskin! - -