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

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

Yhteenvetoa. Ongelmakenttä

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

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

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

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

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

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

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

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

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

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

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

Semaforit ja rinnakkaisuuden hallinta

Semaforit ja rinnakkaisuuden hallinta

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

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

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

Sisältö, osa II. Sanomanvälitys. Kanavat. Hajautettu ympäristö Ei yhteistä muistia Kommunikointi sanomien välityksellä.

Oppimistavoitteet kurssilla Rinnakkaisohjelmointi

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

poissulkeminen ohjelmoijan vastuulla P():t ja V():t siellä, täällä ja tuolla - meniköhän oikein? Yksityiskohtia pois ohjelmoijalta kääntäjälle

Monitorit. Monitori Synkronointimenetelmiä Esimerkkejä

Tavoite. Monitorit. Semafori perusmekanismi synkronointiin. Hyötyjä:

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

Tavoite. Monitorit. Semafori perusmekanismi synkronointiin

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

OSA II: Sisältö, osa II. Sanomanvälitys. Käsitteistöä. Sanomanvälitys. Kommunikointi. Hajautettu ympäristö Ei yhteistä muistia.

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

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

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

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

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

Lukkiutuminen. Taustaa

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

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen,

Rinnakkaisohjelmointi

Rinnakkaisohjelmointi

Rinnakkaisohjelmointi

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

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

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä

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

1. Tarkastellaan seuraavaa stokastista Petri-verkkoa: p 2. p 1. lock write 1

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

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

Prosessi perinteisesti

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

Samanaikaisuuden hallinta

6. Luento: Skedulointi eli Vuoronnus. Tommi Mikkonen,

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

Tieto ja sen osoite (3) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Osoitinmuuttujat. Tieto ja sen osoite (5)

Johdantoa. Andrews, Ch 1

Johdantoa. Rinnakkaisuus - Samanaikaisuus. Peräkkäisyyteen perustuvat sovellukset

Processes and threads

Käyttöjärjestelmät II

Rinnakkaisohjelmointi, Syksy 2006

Johdantoa. Miksi rinnakkaisuutta? Laitteistoarkkitehtuureja. Rinnakkaisuus - Samanaikaisuus. Peräkkäisyyteen perustuvat sovellukset

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Käyttöjärjestelmät II

Johdantoa. Miksi rinnakkaisuutta? Keskinäinen kommunikointi. Prosessit voivat häiritä toisiaan! Rinnakkaisuus - Samanaikaisuus

Projekti 1 Säikeet ja kriittisen vaiheen kontrollointi javalla

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

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Stallings, Luku 4.1. KJ-I S2004 / Tiina Niklander, kalvot Auvo Häkkinen 4-1. KJ-I I S2004 / Tiina Niklander, kalvot Auvo Häkkinen 12-1

Monitorit -projekti Rinnakkaisohjelmointi

812315A Ohjelmiston rakentaminen. Asynkronisuus

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

Sisältöä SÄIKEET, SMP

Luento 4 Aliohjelmien toteutus

Jakso 4 Aliohjelmien toteutus

Osio 2: Luennot 5-8 Muistinhallinta

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

IT K 1 45 K ä yt t öj ä rj estelmät

RINNAKKAINEN OHJELMOINTI A,

815338A Ohjelmointikielten periaatteet

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Graafisen käyttöliittymän ohjelmointi Syksy 2013

TIES542 kevät 2009 Yhteismuistisamanaikaisuus

Intel Threading Building Blocks

10 Lock Lock-lause

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

3. Yhteistilaverkko. Spesioinnin ja verioinnin perusteet. Päivi Kuuppelomäki

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Käyttöjärjestelmät: prosessit

1. Omat operaatiot 1.1

ADA. Ohjelmointikieli. Ryhmä 5 Henna Olli, Päivi Hietanen

Verkkojen verkko - maailmankylä. Hajautetut järjestelmät yhteistyön ongelmallinen maailma. Hajautettuja järjestelmiä. Hajautusta!. miksi oikeastaan?

Jakso 8 Ohjelman toteutus järjestelmässä

13. Loogiset operaatiot 13.1

Tietorakenteet ja algoritmit

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

12. Javan toistorakenteet 12.1

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

Transkriptio:

Ongelmakenttä Yhteenvetoa Rinnakkaisuuden tarve Ympäristö Suunnittelun yksinkertaistaminen Suorituskyky Luotettavuus Kommunikointiin tarvitaan Yhteisiä muuttujia (data) Kommunikointikanavia one-to-one many-to-many 9-2 Ratkottava Mekanismit Poissulkeminen atominen käyttö ei lukkiumaa ei elohiirtä (livelock) ei nälkiintymistä (suoritus päättyy) Yhteinen muisti yhteiset muuttujat, yhteiset proseduurit lukkomuuttujat semaforit monitorit Synkronointi Hajautettu ympäristö yksittäiset erilliset tapahtumat, tilan muutokset yhden prosessin odotus, ryhmän odotus (puomi) oikea vuoronantaminen (esim. ei etuilua) ei yhteistä muistia sanomanvälitys, send/receive (rinnakkainen toiminta) etäproseduurikutsu (hetkeksi käynnistetty toiminta) rendezvous (rinnakkainen toiminta, synkronointi) 9-3 9-4 Lukkomuuttujat Lukkomuuttujat, Spin Locks Atominen konekielen käsky test-and-set Aktiivinen odotus Boolean-muuttuja lock lock==true kriittinen alue varattu lock==false kriittinen alue vapaa Älä käytä, ellet tiedä miksi käytät! Entry protocol while (lock) ; # aktiivinen odotus, pörrää # check again if (!lock) # busy loop lock=true; Exit protocol lock=false; 9-5 9-6

Semaforit alkuarvo semafori S Semaforit P(sem) + V(sem): poissulkeminen, synkronointi public public P(S) V(S) P() aka WAIT() aka Down() private private jos kriittinen alue vapaa, lukitse se ja jatka eteenpäin jos kriittinen alue varattu, odota V() aka SIGNAL() aka Up() jos joku odotusjonossa, päästä joku etenemään muuten vapauta kriittinen alue atomisia S.arvo S.jono Jaettu binäärisemafori (split binary semaphore) kaksi semaforia (tai useampi), joista vain yksi kerrallaan 1 kontrolli hajautettavissa useammalle prosessille Baton passing ( viestikapulan välitys ) jätä poissulkemissemafori kiinni, herätä odottaja suoritettava prosessi vaihtuu, ei salli etuilua herätetty herättää seuraavan, jne. Oma jono ja yksityiset semaforit suoritusvuorojen säätely (ei aina FCFS) jonotus jonkun prioriteetin perusteella (tarve järjestää) 9-7 9-8 Poissulkeminen semaforia käyttäen Synkronointi semaforia käyttäen sem mutex=1; # vain perinteinen muuttujan nimi process CS [i=1 to N] { # rinnakkaisuus! while (true){ ei kriittistä koodia; P(mutex); # varaa < critical section > # käytä (exclusive!) V(mutex); # vapauta ei kriittistä koodia; sem A_Ready = 0; 0 ei ole tapahtunut, 1 on tapahtunut Tuottaja tuota A V(A_ready); Kuluttaja P(A_ready); kuluta A yksi semafori kullekin erilliselle kriittiselle alueelle huomaa oikea alkuarvo Kumpi ehtii ensin? Oikea alkuarvo? 9-9 9-10 Andrews Fig. 4.13: A readers / writers solution using passing the baton. Andrews Fig. 4.3: Producers and consumers using semaphores. (split binary semaphores) 9-11 Lukijat ensin 9-12

Monitorit wait(ehtomja) + signal(ehtomja): synkronointi Andrews Fig. 4.14: Shortest job next allocation using semaphores. 9-13 Condition passing odotuksen syynä ollut ehto jätetään muuttamatta (vaikkei enää ole voimassa), herätä odottaja suoritettava prosessi vaihtuu, ei salli etuilua Covering condition odotuksen syynä oleva ehto ei enää voimassa, herätä kaikki odottajat herätetyt tarkistavat vuorollaan saako jatkaa Yksityinen ehtomuuttuja suoritusvuorojen säätely (ei aina FCFS, tai SJN) 9-14 Monitorin muuttujat yhteiskäytössä. Vain yksi prosessi kerrallaan suorittaa monitorin koodia. Proseduureissa voi käyttää paikallisia muuttujia, kullakin prosessilla niistä oma kopio (pinossa). Stallings Fig. 5.21: Structure of a Monitor. 9-15 Ehtomuuttujat ja operaatiot cond cv ei arvoa - vain jono Blocked prosesseja (paikka odotukselle) wait(cv) laita prosessi jonoon odottamaan operaatiota signal() prosessi joutuu aina jonoon! signal(cv) jos jono tyhjä, no operation, ehtomuuttuja ei muista jos jonossa prosesseja, herätä jonon ensimmäinen empty(cv) palauta true, jos jono on tyhjä vrt. semafori! 9-16 Lisää operaatioita Prioriteetin mukaan jonotus (Priority Wait) wait (cv, rank) odota arvon mukaan kasvavassa järjestyksessä (priority wait) minrank(cv) palauta jonon ensimmäisen prosessin arvo signal_all(cv) herätä kaikki ehtomuuttujassa cv odottavat prosessit S&C: while (! empty(cv)) signal(cv); S&W: ei kovin hyvin määritelty miksei? vrt. semafori! 9-17 Condition passing: Pidä resurssi varattuna, anna varattuna seuraavalle prosessille! Ei etuilua! vrt. 4.14 Andrews Fig. 5.6. 9-18

Kattava herätys (Covering Condition) Priority Wait Herätä kaikki odottajat - tarkistakoot itse, onko jatkamislupa edelleen voimassa! Herätä vain ne, jotka voivat jatkaa! Andrews Fig. 5.7. 9-19 Andrews Fig. 5.8. 9-20 Sanomat Kanavat (Andrews) send chan(msg) + receive chan(msg) Palvelut, joissa yksi säie (prosessi) Ei poissulkemistarvetta Yhtäaikainen odottaminen pyyntö odottaa (ei prosessi) Palvelut, joissa monta säiettä (prosessia) Poissulkeminen, synkronointi (semaforit tai monitori) Yhtäaikainen odottaminen prosessi odottaa send asynkroninen, receive blokkaava Yhteinen postilaatikko jono sanomia, FIFO kaikki kanavan sanomat rakenteeltaan samanlaisia chan ch(type 1 id 1,, type n id n ) ch: kanavan nimi type i id i : sanoman osien tyypit, ja nimet (saavat puuttua) Esim. chan input(char); chan disk_access (int cylinder, int block, int count, char* buffer); chan result[n] (int); # kanavien taulukko 9-21 9-22 Operaatiot send kanava(lauseke 1,, lauseke n ) lähetä sanoma kanavaan Resurssin varaus, Palvelija receive kanava(muuttuja 1,, muuttuja n ) vastaanota sanoma kanavasta empty(kanava) tarkista onko kanava tyhjä sanomista Esim. send disk_access(cylinder+2, block, count, buf) receive result[i](sum) empty(input) Ei ota kantaa minkä prosessin kanssa kommunikoi! 9-23 Andrews Fig. 7.7. 9-24

Tiedostopalvelijat ja asiakkaat Etäproseduurikutsu, Remote Procedure Call (RPC) Palvelu etäkoneessa, ei yhteistä muistia Asiakkaat pyytävät palvelua prosedurikutsumekanismilla Toteutuksen yksityiskohdat KJ:n palvelua taustalla sanomanvälitys RPC yhdistää monitorin ja synkronisen sanomanvälityksen piirteet kaksisuuntainen synkroninen kanava yhdellä kutsulla asiakas odottaa Andrews Fig. 7.10. 9-25 9-26 Etäproseduurin moduuli Aikapalvelumoduuli julkisten operaatioiden esittely (export) Kutsu 9-27 Andrews Fig. 8.1. 9-28 RPC / Rendezvous call Mname.opname() Etäproseduurikutsu Passiivisten palvelurutiinien etäkäyttö poissulkeminen, synkronointi Kutsu: time = TimeServer.get_time(); call TimeServer.delay(10); Rendezvous Aktiiviset kommunikoivat prosessit Yksi operaatio kerrallaan (kohtaaminen) ei poissulkemista, synkronointi Synkroninen, blokkaava Andrews Fig. 8.1. 9-29 9-30

Rendezvous moduuli module Mname op opname1(formals), opname2(formals); body declarations of shared variables; local procedures and processes; process pname { declarations of local variables; while (true) { statements; in opname1(formals) -> statements; [] opname2(formals) -> statements; ni statements; end mname Kutsu call Mname.opname(arguments) julkisten operaatioiden esittely (export) kohtaamispaikat, jotka toteuttavat operaatiot 9-31 Yleinen muoto in op 1 (formals 1 ) and B 1 -> by Se 11 ; -> S 1; [ ] [ ] op n (formals n ) and B n -> by Se n ; -> S n; ni in op(formals) operaation nimi ~ kohtaamispaikka and B synkronointilauseke (boolean lauseke) [ ] muut vartioidut kohtaamispaikat (FCFS) Ja vuorottamislauseke (by lauseke) kohtaamiseen voi syntyä jonoa (synkronointilauseke ei true) missä järjestyksessä odottavat palvellaan (~prioriteetti) oletus: palvele vanhin pyyntö ensin 9-32 Bounded Buffer Shortest_Job-Next allokointi vrt. Andrews Fig 5.6 vrt. Andrews Fig. 5.4 Andrews Fig. 8.8. Andrews Fig. 8.5. Rio 2004 Poissulkeminen? / Auvo Häkkinen Synkronointi? 9-33 9-34 Klassisia malleja Bounded buffer (tuottaja kuluttaja, suodin) Resurssien allokointi (asiakas palvelija) Lukijat/kirjoittajat (luokan vuorot) SJN-skedulointi (priority wait) Aikaviipaleet ja ajastimet (vuorottamispalvelu) Nukkuva parturi (prosessien kohtaaminen) Aterioivat filosofit (lukkiuma) (hajautettu resurssien jakelu) Arkkitehtuureja liukuhihna, suodin tuottaja kuluttaja asiakas palvelija vertaistoimijat (peer-to-peer,p2p) monipuolisemmat rakenteet: heartbeat yms. ryhmä: keskitetty, rengas, symmetrinen 9-35 9-36

Evaluoi Oikeellisuus Suorituspolkujen analyysi Tilamallit Suorituskyky END JOB Yleisrasite Komponentti Kommunikointi / ryhmän kommunikointi Rinnakkaisuusaste Selvitä aina kuinka järjestelmä käyttäytyy! V(Rio); signal(rio); call Lectures.close(Rio); 9-37 9-38