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

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

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

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

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ä. Rinnakkaisuuden tarve. Kommunikointiin tarvitaan. Ympäristö Suunnittelun yksinkertaistaminen Suorituskyky Luotettavuus

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

Yhteenvetoa. Ongelmakenttä

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

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

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

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

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

Oppimistavoitteet kurssilla Rinnakkaisohjelmointi

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

3. Kuljetuskerros 3.1. Kuljetuspalvelu

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

3. Kuljetuskerros 3.1. Kuljetuspalvelu

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

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.

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

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

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

Sovellusarkkitehtuurit

3. Kuljetuskerros 3.1. Kuljetuspalvelu End- to- end

Tehtävä 2: Tietoliikenneprotokolla

Ohjelmistoarkkitehtuurit

Tavoite. Monitorit. Semafori perusmekanismi synkronointiin

Verkko-ohjemointia. TCP vs. UDP Socket, ServerSocket Datagrammit RMI

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

Hajautettujen sovellusten muodostamistekniikat, TKO_2014 Johdatus kurssiin

Johdantoa. Andrews, Ch 1

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

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

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

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

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

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1

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

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Jakso 8 Ohjelman toteutus järjestelmässä

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

Rajapinta (interface)

Lukkiutuminen. Taustaa

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

Luento 8 Ohjelman toteutus järjestelmässä

Luento 8 Ohjelman toteutus järjestelmässä. Prosessi Prosessin esitysmuoto järjestelmässä Käyttöjärjestelmä KJ-prosessit

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Jakso 8 Ohjelman toteutus järjestelmässä

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

Ohjelmoinnin peruskurssien laaja oppimäärä

Käyttöjärjestelmät: prosessit

Semaforit ja rinnakkaisuuden hallinta

Semaforit ja rinnakkaisuuden hallinta

A TIETORAKENTEET JA ALGORITMIT

Luento 4 Aliohjelmien toteutus

Jakso 8 Ohjelman toteutus järjestelmässä. Prosessi Prosessin esitysmuoto järjestelmässä Käyttöjärjestelmä KJ-prosessit

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

useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero

HOJ J2EE & EJB & SOAP &...

JavaRMI 1 JAVA RMI. Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko

Prosessi perinteisesti

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

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

HOJ RPC = Remote Procedure Call (ja Common Object Request Broker Architecture)

3. Kuljetuskerros 3.1.

Monimutkaisempi stop and wait -protokolla

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

Ohjelmistojen mallintaminen, sekvenssikaaviot

Käännös, linkitys ja lataus

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

Ohjelmoinnin peruskurssien laaja oppimäärä

OSI ja Protokollapino

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

Jakso 4 Aliohjelmien toteutus

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

Prosessi (4) Jakso 8 Ohjelman toteutus järjestelmässä. Prosessi. Prosessin vaihto (4) Prosessin elinkaari (9)

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

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

Verilogvs. VHDL. Janne Koljonen University of Vaasa

Tutoriaaliläsnäoloista

Käyttöjärjestelmät II

Sisältöä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja TITO-kurssista. Tietokonejärjestelmä

Tietoliikenne II (2 ov)

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

kynnysarvo (threshold)

kynnysarvo (threshold)

Luento 8 Ohjelman toteutus järjestelmässä

Tyyppiluokat II konstruktoriluokat, funktionaaliset riippuvuudet. TIES341 Funktio-ohjelmointi 2 Kevät 2006

Tietoliikenne II (2 ov)

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

Käyttöjärjestelmät II

Prosessi (4) Luento 8 Ohjelman toteutus järjestelmässä. Prosessi. Prosessin vaihto (4)

Transkriptio:

Etäproseduurikutsu RPC Toteutus Virhesemantiikka Andrews 8.1, 10.3, Stallings 13.3 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 7-2

Etäproseduurin moduuli julkisten operaatioiden esittely (export) Kutsu 7-3 Poissulkeminen moduulin sisällä? monitorin tapaan implisiittinen poissulkeminen moduulin sisällä? vain yksi aktiivinen prosessi voi suorittaa usea moduulin prosessi voi olla samaan aikaan suorituksessa => poissulkemisesta huolehdittava eksplisiittisesti kurssilla oletetaan, että tämä tapa on käytössä On nykyisin yleisempi! poissulkeminen esim. semaforeilla tai paikallisilla monitoreilla tai rendezvousia käyttäen. 7-4

Aikapalvelin module TimeServer op get_time() returns int; op delay (int interval); body int tod = 0; sem m =1; # mutex sem d[n] = ([n] 0); # omat odotussemaforit queue of (int waketime, int process_id) napq; proc get_time () returns time { time = tod; } proc delay (int interval); int waketime = tod + interval; P(m); insert (waketime, myid) oikeaan paikkaan napq-jonoon; V(m); P(d[myid]; # jää odottamaan herätystä }

process Clock { # sisäinen prosessi käynnistä ajastin; while (true) { odota keskeytystä ja käynnistä ajastin uudelleen; tod = tod + 1; # taas yksi tikitys lisää P(m); while (tod <= smallest waketime on napq) { remove (waketime, id) from napq; V(d[id]; # herätä prosessi } V(m); } } } Aikapalvelumoduuli Andrews Fig. 8.1.

Kutsu: time = TimeServer.get_time(); call TimeServer.delay(10); Andrews Fig. 8.1. Toteutus 7-10

Etäproseduurikutsu (RPC) Stallings Fig. 13.13. 7-11 Toiminta: Asiakas normaali proseduurikutsu toteutus: kääntäjä muutti töpön kutsuksi Asiakkaan töpö / tynkä (stub) kirjastorutiini kokoaa parametrit sanomaan molempien koneiden ymmärtämässä muodossa (marshalling) kutsuu KJ:n palvelua Asiakkaan KJ vastaa töpöjen välisestä sanomanvälityksestä kanavan luonti, sanoman lähetys ajastimet, järjestysnumerot, kuittaukset, uudelleenlähetykset 7-12

Palvelijan KJ (etäkone) vastaa töpöjen välisestä sanomanvälityksestä sanoman vastaanotto, vastauksen lähetys ajastimet, järjestysnumerot, kuittaukset, uudelleenlähetykset käynnistää / luo prosessin palvelemaan suorittaa töpön Palvelijan töpö (etäkone) purkaa parametrit kutsupinoon tekee normaalin proseduurikutsun kokoaa vastaussanoman molempien ymmärtämään muotoon kutsuu KJ:n sanomanvälityspalvelua Asiakkaan töpö purkaa vastauksen ja sijoittaa asiakkaan muuttujiin 7-13 Etäpalvelun ohjelmoija määrittelee rajapinnat esittele julkiset operaatiot moduulin otsakeosassa Kääntäjä generoi tarvittavat töpöt kutsu ja kutsuttava rutiini käännetään toisistaan riippumatta voivat olla toteutettu eri kielillä Nimipalvelu (portmapper, rmiregistry) proseduurin nimi kone ja palvelurajapinta? palvelun tarjoaja rekisteröi (bind) palvelun nimipalveluun export asiakas kysyy palvelun tiedot nimipalvelijalta (lookup) import 7-14

Parametrien järjestely (marshalling) Parametrit koottava sanomaan ei yhteistä muistia kopioi kaikki parametrit, ei voi käyttää viiteparametreja Ongelmia perustietotyyppien esitysmuodot yhteiskäyttöiset muuttujat taulukot linkitetyt tietorakenteet verkot ohjelmoijan itse määrittelemät tyypit kirjoita omat järjestelyrutiinit 7-15 Kuka suorittaa etäproseduurin (etäkoneessa)? Yksi odotteleva palvelijaprosessi silmukka, odota kutsua töpön receive()-operaatiossa kun kutsuttu, palvele ja lähetä vastaus send()-operaatiolla vain yksi kutsu kerrallaan, ei poissulkemistarvetta Luo uusi prosessi suorittamaan rinnakkaisuus yleisrasite poissulkeminen Yksi prosessi, jolla monta valmista säiettä server pool, allokoi kutsulle olemassaoleva säie poissulkeminen 7-16

Hajautettu tiedostopalvelu: File cache (local) Huomaa: Passiivisia rutiineita - joita etäasiakkaat käyttävät (RPC) - joita paikallinen toteutus kutsuu (stub) - joita suorittaa paikalliset prosessit Andrews Fig. 8.2a. Hajautettu tiedostopalvelu: File server (remote) Andrews Fig. 8.2b.

Merge-sort ja Capability RPC sopii asiakas-palvelija sovelluksiin, muu käyttö hankalaa RPC ei tue jatkuvaa kommunikointia kutsut aina erillisiä ja edellisistä riippumattomia ohjelmoitava eksplisiittisesti RPC:n kommunikointikanava operaation nimi Miten output-vuo kytketään seuraavan input-vuohon? Dynaaminen nimeäminen capability ~ osoitin kommunikointioperaatioon call Merge[i].initialize(Merge[j].in2) 7-19 Initialize kutsun jälkeen Merge[i].ssä: out = Merge[j].in2 Andrews Fig. 8.3. 7-20

Vrt. Sanomanvälitys, Fig 7.2 Andrews Fig. 8.3. 7-21 Arvojen välittäminen: kaksi prosessia Vrt. Sanomanvälitys, Fig 7.11-7.13 Andrews Fig. 8.4. 7-22

Virhesemantiikkaa 7-23 Virhesemantiikkaa Tiedonsiirto kadonneet sanomat, yms. Palvelijaprosessi (etä-) paikallinen virhetilanne (ei tarvetta raportoida) pitkä palveluaika (esim. jonotuksen aiheuttama viive) Asiakasprosessi ongelman havaitseminen: ajastin toipuminen? Erillinen suoritus erilliset virheet Eivät riipu suoraan toisistaan 7-24

Suoritussemantiikka ~ toipumispolitiikka töpöissä exactly-once toteutus? ajastimen laukeaminen käytä sama sanomanumero uudestaan uudelleenkutsussa at-least-once yritä uudelleen kunnes ok at-most-once onnistui: tehty täsmälleen kerran virhe: no operation (tieto asiakkaalle), ei uudelleen yritystä maybe ei vastausta: suoritettu tai sitten ei 7-25 Esim: CCLU RPC default: MAYBE vast := call P (x, y, z) abandon after 50 ms vast := call P (x, y, z) timeout 50 vast := call P (x, y, z) zealously EXACTLY ONCE retry every 20 ms vast := call P (x, y, z) zealously timeout 20 See Bacon97 s384 7-26

UNIX, rpc-kirjasto ks. RFC1050 man rpc man rpcgen man portmap Java: Remote Method Invocation java.rmi, java.rmi.server, java.rmi.registry sovelluksen osat interface (moduulin otsake) server class rekisteröi: Naming.bind() client class etsi palvelu rekisteristä: Naming.lookup() lue opastussivut Andrews ch 8.5 7-27 Kertauskysymyksiä? 7-28