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

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

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

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

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

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

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

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

Yhteenvetoa. Ongelmakenttä

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

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

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

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

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

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

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

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 I: Yhteisten muuttujien käyttö Prosessit samassa koneessa. Sisältöä. Poissulkeminen. Halutut ominaisuudet 2-1. Rinnakkaiset, atomiset operaatiot

Oppimistavoitteet kurssilla Rinnakkaisohjelmointi

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)

Johdantoa. Andrews, Ch 1

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

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

Lukkiutuminen. Taustaa

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

Semaforit ja rinnakkaisuuden hallinta

Semaforit ja rinnakkaisuuden hallinta

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

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

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

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

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

Prosessi perinteisesti

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

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

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

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

Käyttöjärjestelmät II

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ä:

Käyttöjärjestelmät II

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

3. Kuljetuskerros 3.1. Kuljetuspalvelu

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

Verilogvs. VHDL. Janne Koljonen University of Vaasa

Sisältöä luento 18. Hajautettu prosessointi. Stallings, Luvut Esimerkkejä: homogeenisia hajautettuja arkkitehtuureja

Hajautettu prosessointi. Stallings, Luvut Sisältöä luento 18

11. Javan valintarakenteet 11.1

11. Javan valintarakenteet 11.1

A TIETORAKENTEET JA ALGORITMIT

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

kynnysarvo (threshold) varoitusarvo = tästä lähtien syytä varoa ruuhkaa aluksi 64 K RTT

Jaetun muistin muuntaminen viestin välitykseksi. 15. lokakuuta 2007

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

OSI ja Protokollapino

kynnysarvo (threshold)

7.4 Sormenjälkitekniikka

kynnysarvo (threshold)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

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

Ohjelmoinnin peruskurssien laaja oppimäärä

1.1 Pino (stack) Koodiluonnos. Graafinen esitys ...

Rakenteiset tietotyypit Moniulotteiset taulukot

C++11 lambdat: [](){} Matti Rintala

» 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

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmistoarkkitehtuurit

2 Konekieli, aliohjelmat, keskeytykset

Ohjelmointiharjoituksia Arduino-ympäristössä

T Harjoitustyöluento

Sisältöä SÄIKEET, SMP

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

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

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

3. Kuljetuskerros 3.1. Kuljetuspalvelu

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Siltojen haitat Yleisesti edut selvästi suuremmat kuin haitat

14. Hyvä ohjelmointitapa 14.1

Integrointi. Ohjelmistotekniikka kevät 2003

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

Processes and threads

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

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

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Kielioppia: toisin kuin Javassa

13. Loogiset operaatiot 13.1

13. Loogiset operaatiot 13.1

Tavoite. Monitorit. Semafori perusmekanismi synkronointiin

T Harjoitustyöluento

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen,

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Transkriptio:

Sisältö, osa II OSA II: Sanomanvälitys Etäproseduurikutsu Hajautettu ympäristö Ei yhteistä muistia Rendezvous 6-1 6-2 Sanomanvälitys Käsitteistöä Käsitteistöä Kanavat Asiakkaat ja Palvelijat Kommunikointitapoja Andrews 7.1-7.6, Stallings 5.6, 13.1-13.2 6-4 Kommunikointi Sanomanvälitys Prosessi A X=f(..); send X to B... Prosessi B receive X from A Y=f(X);... Käyttö prosessien välinen tiedonvälitys synkronointi: vuorot / ajoitus Käyttäjätason operaatiot lähetys send (receiver-id, msg) vastaanotto receive([sender-id,] msg) X: 10 X: 510 KJ:n Ydin ydin send DC DC receive KJ:n kanava ydin Matkassa myös KJ:n lisäämä tieto ainakin: sender-id, receiver-id, sanoma,... Toteutus? pistokkeet: UDP/TCP, 6-5 6-6

Odotussemantiikka Send jatka heti, kun KJ kopioinut puskuriinsa tai odota kunnes vastaanottaja saanut sanoman Synkronointi receive blocking nonblocking send blocking nonblocking synkroninen asynkroninen asynkroninen asynkroninen Receive odota kunnes KJ kopioinut prosessin muuttujiin tai jos kanava tyhjä, jatka välittömästi jos ei sanomaa ~ no operation Blocking, non-blocking Synkroninen lähettäjä tietää, että vastaanottaja on saanut sanoman toimintojen suoritusjärjestys selvä Asynkroninen toimintojen tarkka suoritusjärjestys epäselvä Andrews: asynkroninen tiedonvälitys send non-blocking, receive blocking 6-7 6-8 Sitominen Lähettäjä Kanava Vastaanottaja Kanavat Kanava tiedonsiirtoyhteys prosessien välillä (point-to-point väylä) Sanomat send kanavaan, jonka tuntee yksi unicast (yksittäislähetys) tai useampi prosessi multicast (monilähetys) broadcast (yleislähetys) 6-9 6-10 Sitomistapoja one-to-one (kaksi prosessia, yksi kummankin tuntema kanava) many-to-one (asiakkaat-palvelija) one-to-many, many-to-many (asiakas - palvelut, ryhmäkommunikointi) Andrews (tämä kurssi) one-to-one tai many-to-one luotettava, järjestyksen säilyttävä sanomanvälitys prosessi(parien) sitominen: nimetty kanava ei monilähetystä ei yleislähetystä Huom: esimerkit eivät ota kantaa sitomiseen 6-11 Explisiittinen sitominen (Sloman, Kramer fig 3.9, 3.10) GROUP MODULE buffer; ENTRYPORT inchar: char REPLY signaltype; EXITPORT outchar: char REPLY signaltype; USE bound, invert; CREATE bound, invert; LINK inchar TO bound.getchar; invert.getchar TO bound.putchar; invert.outchar TO outchar; END. GROUP MODULE echo; CONST status=177560#8; vector=100#8; USE serial-input, serial-output, buffer; CREATE Rx: serial-input(status,vector); Tx: serial-output(status+4, vector+4) B: buffer; LINK Rx.input TO B.inchar; B.outchar TO Tx.output; Rio END. 2004 / Auvo Häkkinen inchar Rx input module buffer bound inchar B B outchar invert module echo output Tx outchar 6-12

Kanavat (Andrews) 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 6-13 Operaatiot send kanava(lauseke 1,, lauseke n ) lähetä sanoma kanavaan 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! 6-14 Suodin: Merkit riveiksi Suodin: lomita kaksi syöttökanavaa Yhteiskäyttöinen kanava (globaali) esittely prosessien ulkopuolella (~ sitominen) Andrews Fig. 7.1. Prosessien sitominen? Rinnakkaisuus? Andrews Fig. 7.2. Kommunikointitapoja Osapuolet yksittäinen prosessi ryhmä nimetty partneri kuka tahansa Asiakkaat ja Palvelija Tarpeita kahdenkeskinen, peer to peer: A B monilähetys, yleislähetys asiakkaat palvelija, kuka tahansa FileServer asiakas palvelu mikä tahansa palvelijaprosessi muut palvelijaprosessit palvelevat toisia prosesseja 6-17 6-18

Asiakkaat ja yhden palvelun palvelija Asiakkaat ja monen palvelun palvelija Pyyntökanava Asiakkaiden tuntema julkinen kanava käytännössä: IP-osoite ja porttinumero Yksi pyyntökanava sanoma kanavaan tulkitse tyyppi, valitse palvelu tai dedikoitu kanava kullekin palvelulle valitse palvelu lähetä sopivaan kanavaan yhteinen pyyntökanava, yksityiset vastauskanavat Andrews Fig. 7.4. Vastauskanava Palvelijan tuntema (staattinen) Jokaisella asiakkaalla oma yksityinen kerro oma identiteetti pyyntösanomassa Asiakas kertoo pyynnössä (dynaaminen) käytännössä: oma IP-osoite ja porttinumero [Tällä kurssilla] 6-20 Aterioivat filosofit, yksi syöttökanava Asiakkaat ja monen palvelun palvelija type optype = enum(req, REL); chan phone(int, optype), reply[5]( ); process philosofer[i=0 to 4] { while (true) { think(); send phone(i, REQ); receive reply[i](); eat(); send phone(i, REL); Keskitetty resurssien hallinta: "public phone number", many-to-one "secret phone number", one-to-one process secretary { while (true) { receive phone(philo, what); switch (what) { case REQ: { state[philo]=hungry; consider_allocation_to(philo); case REL: { state[philo]=thinking; consider_allocation_to(philo-1); consider_allocation_to(philo+1); Andrews Fig. 7.5. 6-22 type activity = enum(thinking, HUNGRY, EATING); activity state[5] = ([4] THINKING); procedure consider_allocation_to(int i) { if ( state[i] == HUNGRY) if (state[i-1]!=eating AND state[i+1]!=eating) { state[i] = EATING; send reply[i](); 3 2 4 1 0 6-23 Aterioivat filosofit, dedikoidut kanavat chan request(int), release(int), reply[5]( ); sem mutex=1; process philosofer[i=0 to 4] { while (true) { think(); send request(i); receive reply[i](); eat(); send release(i); Miten odottaa yhtä aikaa kahdesta eri kanavasta? process secretary { co while (true) { receive request(philo); P(mutex); state[philo]=hungry; consider_allocation_to(philo); V(mutex); // while (true) { receive release(philo); P(mutex); state[philo]=thinking; consider_allocation_to(philo-1); consider_allocation_to(philo+1); V(mutex); oc Huomaa rinnakkaisuus! 6-24

Monitori vs. Palvelija Monitori vs. Palvelija proseduurikutsu vs. kanava & sanoma poissulkeminen monitori: implisiittisesti, ei semaforeja! palvelija: palvele yksi asiakas kerrallaan, uudet pyyntösanomat jäävät kanavaan synkronointi monitori: jos ei saa edetä, wait(ehtomuuttuja) kutsunut prosessi nukahtaa palvelija: jos ei saa edetä, laita sisäiseen jonoon palvelija ei voi nukahtaa! Andrews Table 7.1. 6-25 6-26 Resurssin varaus, Monitori Resurssin varaus, Palvelija Condition passing Vrt. resurssinvarauksen yleinen malli, ch 4.5 Andrews Fig. 7.6. Andrews Fig. 7.7. Jutustelun jatkuvuus / ylläpito Useita asiakkaita, useita palvelijoita Kommunikointitapoja Esim: Tiedostopalvelija yksi ulospäin näkyvä palvelu (tdstojen käyttö) yksi palvelijaprosessi kullekin asiakkaalle Sitominen asiakas mikä tahansa prosessi Tarve prosessi haluaa tehdä sarjan peräkkäisiä tiedosto-operaatioita (open( ), read(), ), sama palvelijaprosessi palvelee 6-29 6-30

Tiedostopalvelijat ja asiakkaat Vertaistoimijat (Interactive Peers) Esim. Arvojen välittäminen n prosessia kullakin paikallinen arvo v etsi globaali min(v), max(v) Tiedonvälitys Keskitetty? Symmetrinen? Rengas? Rinnakkaisuus? Tiedonvälityksen tehokkuus? Andrews Fig. 7.10. 6-32 Keskitetty ratkaisu Symmetrinen ratkaisu Andrews Fig. 7.11. looginen vs. fyysinen rakenne Andrews Fig. 7.12. Rengasratkaisu Huom: ratkaisussa virhe Mikä paras? Keskitetty 2 *(n-1) sanomaa (yleislähetyksenä n) Symmetrinen Yksi samanlainen ohjelmakoodi, eri datat n*(n-1) sanomaa Rengas Huomaa koodissa oleva virhe! 2*n -1 sanomaa Rinnakkaisuus? Tiedonvälityksen tehokkuus? Andrews Fig. 7.13. 6-36

Synkroninen sanomanvälitys synch-send() send() ja receive() kohtaavat kommunikoivien prosessien synkronointi naapuri tietää naapurinsa tilan ei tarvitse välttämättä KJ:n apupuskureita rajoittaa rinnakkaisuutta Varo lukkiumaa algoritmit, jotka toimivat asynkronisen kommunikoinnin yhteydessä eivät ehkä enää toimikkaan! toimivatko edelliset min/max esimerkit? 6-37 Rinnakkaisuus? Toimivatko edelliset min/max esimerkit? Ei OK! Andrews pp. 319-320 Tarkistuskysymyksiä? 6-39