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



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

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

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

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

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

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

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

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

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

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

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

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

Oppimistavoitteet kurssilla Rinnakkaisohjelmointi

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

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

Semaforit ja rinnakkaisuuden hallinta

Semaforit ja rinnakkaisuuden hallinta

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

Johdantoa. Andrews, Ch 1

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

Lukkiutuminen. Taustaa

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

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

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

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.

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

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

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

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

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

Verilogvs. VHDL. Janne Koljonen University of Vaasa

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

Ohjelmoinnin peruskurssien laaja oppimäärä

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

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

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

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

Prosessi perinteisesti

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

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

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

3. Kuljetuskerros 3.1. Kuljetuspalvelu

Tavoite. Monitorit. Semafori perusmekanismi synkronointiin

OSI ja Protokollapino

2 Konekieli, aliohjelmat, keskeytykset

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen,

7.4 Sormenjälkitekniikka

11. Javan valintarakenteet 11.1

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

11. Javan valintarakenteet 11.1

TIES530 TIES530. Moniprosessorijärjestelmät. Moniprosessorijärjestelmät. Miksi moniprosessorijärjestelmä?

A TIETORAKENTEET JA ALGORITMIT

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmointiharjoituksia Arduino-ympäristössä

Sovellusarkkitehtuurit

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Graafisen käyttöliittymän ohjelmointi Syksy 2013

T Harjoitustyöluento

5/20: Algoritmirakenteita III

Monimutkaisempi stop and wait -protokolla

Käyttöjärjestelmän rakenne

Tietotyypit ja operaattorit

Sisältöä SÄIKEET, SMP

T Harjoitustyöluento

Rinnakkaisohjelmointi, Syksy 2006

Processes and threads

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

3. Kuljetuskerros 3.1. Kuljetuspalvelu

kynnysarvo (threshold)

kynnysarvo (threshold)

Kielioppia: toisin kuin Javassa

Siltojen haitat. Yleisesti edut selvästi suuremmat kuin haitat 2/19/ Kytkin (switch) Erittäin suorituskykyisiä, moniporttisia siltoja

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

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

////// VENETIETO.FI \\\\\\ //// Autopilotti 2014 \\\\ #include <EEPROM.h> #include <SoftwareSerial.h> SoftwareSerial gps(10, 0); // RX, TX -pinnit

Tietorakenteet ja algoritmit - syksy

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

Dynaaminen muisti. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät 2017.

Verkkokerroksen palvelut. 4. Verkkokerros. Virtuaalipiiri (virtual circuit) connection-oriented ~ connectionless. tavoitteet.

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

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

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

Väylät. Tietokoneen rakenne. Stallings: Ch 3 Mitä väylällä liikkuu? Väylän ominaisuuksia PCI-väylä PCI Express. Luento 2-1

Transkriptio:

OSA II: Hajautettu ympäristö Ei yhteistä muistia 6-1 Sisältö, osa II Sanomanvälitys Etäproseduurikutsu Rendezvous 6-2

Sanomanvälitys Käsitteistöä Kanavat Asiakkaat ja Palvelijat Kommunikointitapoja Andrews 7.1-7.6, Stallings 5.6, 13.1-13.2 Käsitteistöä 6-4

Kommunikointi Prosessi A Prosessi B X=f(..); send X to B... receive X from A Y=f(X);... X: 10 X: 510 KJ:n Ydin ydin send DC DC receive KJ:n kanava ydin 6-5 Käyttö Sanomanvälitys prosessien välinen tiedonvälitys synkronointi: vuorot / ajoitus Käyttäjätason operaatiot lähetys send (receiver-id, msg) vastaanotto receive([sender-id,] msg) Matkassa myös KJ:n lisäämä tieto ainakin: sender-id, receiver-id, sanoma,... Toteutus? pistokkeet: UDP/TCP, 6-6

Odotussemantiikka Send jatka heti, kun KJ kopioinut puskuriinsa tai odota kunnes vastaanottaja saanut sanoman Receive odota kunnes KJ kopioinut prosessin muuttujiin tai jos kanava tyhjä, jatka välittömästi jos ei sanomaa ~ no operation Blocking, non-blocking 6-7 Synkronointi send receive blocking nonblocking blocking synkroninen asynkroninen nonblocking asynkroninen asynkroninen 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-8

Kanavat 6-9 Sitominen Lähettäjä Kanava Vastaanottaja 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-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. inchar module buffer bound invert B outchar 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 Rx input B Tx inchar outchar output module echo 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 Yhteiskäyttöinen kanava (globaali) esittely prosessien ulkopuolella (~ sitominen) Andrews Fig. 7.1. Suodin: lomita kaksi syöttökanavaa Prosessien sitominen? Rinnakkaisuus? Andrews Fig. 7.2.

Asiakkaat ja Palvelija 6-17 Kommunikointitapoja Osapuolet yksittäinen prosessi ryhmä nimetty partneri kuka tahansa 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-18

Asiakkaat ja yhden palvelun palvelija yhteinen pyyntökanava, yksityiset vastauskanavat Andrews Fig. 7.4. 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 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

Asiakkaat ja monen palvelun palvelija Andrews Fig. 7.5. Aterioivat filosofit, yksi syöttökanava 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); 6-22

type activity = enum(thinking, HUNGRY, EATING); activity state[5] = ([4] THINKING); 4 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 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 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! 6-25 Monitori vs. Palvelija Andrews Table 7.1. 6-26

Resurssin varaus, Monitori Condition passing Vrt. resurssinvarauksen yleinen malli, ch 4.5 Andrews Fig. 7.6. Resurssin varaus, Palvelija Andrews Fig. 7.7.

Kommunikointitapoja 6-29 Jutustelun jatkuvuus / ylläpito Useita asiakkaita, useita palvelijoita 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-30

Tiedostopalvelijat ja asiakkaat Andrews Fig. 7.10. 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? 6-32

Keskitetty ratkaisu Andrews Fig. 7.11. Symmetrinen ratkaisu looginen vs. fyysinen rakenne Andrews Fig. 7.12.

Rengasratkaisu Huom: ratkaisussa virhe Andrews Fig. 7.13. 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? 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? Ei OK! Toimivatko edelliset min/max esimerkit? Andrews pp. 319-320

Tarkistuskysymyksiä? 6-39