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

Samankaltaiset tiedostot
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

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

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

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

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

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

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

Oppimistavoitteet kurssilla Rinnakkaisohjelmointi

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

3. Kuljetuskerros 3.1. Kuljetuspalvelu

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

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

3. Kuljetuskerros 3.1. Kuljetuspalvelu

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

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

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

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

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

Hajautettujen sovellusten muodostamistekniikat, TKO_2014 Johdatus kurssiin

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Sovellusarkkitehtuurit

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

3. Kuljetuskerros 3.1. Kuljetuspalvelu End- to- end

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Johdantoa. Andrews, Ch 1

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

Jakso 8 Ohjelman toteutus järjestelmässä

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

Jakso 8 Ohjelman toteutus järjestelmässä

Tietokoneen toiminta, K Tavoitteet (4)

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

Tehtävä 2: Tietoliikenneprotokolla

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

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

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

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

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

Tavoite. Monitorit. Semafori perusmekanismi synkronointiin

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ä

Lukkiutuminen. Taustaa

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

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

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

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

Rajapinta (interface)

Luento 4 Aliohjelmien toteutus

Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1

Käyttöjärjestelmät: prosessit

Ohjelmistoarkkitehtuurit

Jakso 4 Aliohjelmien toteutus

A TIETORAKENTEET JA ALGORITMIT

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

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

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

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

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

Ohjelmoinnin peruskurssien laaja oppimäärä

OSI ja Protokollapino

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

Semaforit ja rinnakkaisuuden hallinta

Semaforit ja rinnakkaisuuden hallinta

Luento 1 Tietokonejärjestelmän rakenne

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

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

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

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

HOJ J2EE & EJB & SOAP &...

Jakso 4 Aliohjelmien toteutus

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä

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

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

Tietokonejärjestelmä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja. TITO-kurssista. John von Neumann ja EDVAC, 1949.

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

Harjoitus 2 (viikko 45)

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Luento 8 Ohjelman toteutus järjestelmässä

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

3. Kuljetuskerros 3.1.

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

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

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Ohjelmoinnin perusteet Y Python

Luento 5. Timo Savola. 28. huhtikuuta 2006

Tutoriaaliläsnäoloista

Käyttöjärjestelmät II

1. Omat operaatiot 1.1

2 Konekieli, aliohjelmat, keskeytykset

Transkriptio:

Etäproseduurikutsu, Remote Procedure Call (RPC) Etäproseduurikutsu Andrews 8.1, 10.3, Stallings 13.3 RPC Toteutus Virhesemantiikka 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 Poissulkeminen moduulin sisällä? julkisten operaatioiden esittely (export) Monitorin tapaan implisiittinen poissulkeminen moduulin sisällä? vain yksi aktiivinen prosessi voi suorittaa Kutsu Vai 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-3 7-4 Aikapalvelin TimeServer module TimeServer op get_time() returns int; # kysy aikaa op delay (int interval); # pyydä herätys body int tod = 0; sem m =1; # mutex sem d[n] = ([n] 0); # omat odotussemaforit queue of (int waketime, int process_id) napq; Aikapalvelin, jolta voi - kysyä kellonaikaa - pyytää herätystä annetun ajan päästä 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ä 7-5 7-6 1

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 end TimeServer 7-7 Andrews Fig. 8.1. 7-8 Toteutus Kutsu: time = TimeServer.get_time(); call TimeServer.delay(10); Andrews Fig. 8.1. 7-9 7-10 Etäproseduurikutsu (RPC) Toiminta: Asiakas normaali proseduurikutsu toteutus: kääntäjä muuttaa 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 Stallings Fig. 13.13. 7-11 7-12 2

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 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-13 7-14 Parametrien järjestely (marshalling) Kuka suorittaa etäproseduurin (etäkoneessa)? 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 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-15 7-16 Hajautettu tiedostopalvelu: File cache (local) Ohjelma MikäTahansa lukee kirjoittaa FileCache: proseduurit read write Välimuisti Onko välimuistissa? Onko tarpeen kirjoittaa levylle? FileServer: operaatiot readblk writeblk Tiedostot levyllä kiinteänkokoisina lohkoina Huomaa: Passiivisia rutiineita - joita etäasiakkaat käyttävät (RPC) - joita paikallinen toteutus kutsuu (stub) - joita suorittaa paikalliset prosessit 7-17 Andrews Fig. 8.2a. 7-18 3

Hajautettu tiedostopalvelu: File server (remote) Andrews Fig. 8.2b. Merge-sort ja Capability RPC sopii asiakas-palvelija sovelluksiin, muu käyttö hankalaa Prosessien välinen kommunikointi ohjelmoitava erikseen RPC ei tue jatkuvaa kommunikointia kutsut aina erillisiä ja edellisistä riippumattomia ohjelmoitava eksplisiittisesti RPC:n kommunikointikanava operaation nimi Miten put-vuo kytketään seuraavan input-vuohon? Dynaaminen nimeäminen capability ~ osoitin kommunikointioperaatioon call Merge[i].initialize(Merge[j].) 7-19 7-20 sidottava toisiinsa sidottava toisiinsa Tätä kutsuu se main-moduuli, joka kytkee ulosmenot sisäänmenoihin! Lomituslajittelu 7-21 call Merge[i].initialize(Merge[j].) Initialize kutsun jälkeen Merge[i].ssä: = Merge[j]. Andrews Fig. 8.3. 7-22 Lomituslajittelu i+1 j i call Merge[i].initialize(Merge[j].) call Merge[i+1].initialize(Merge[j].) sidotaan toisiinsa eli i:n put tulee olemaan j:n ja i+1:n put j:n. 7-23 Vrt. Sanomanvälitys, Fig 7.2: RPC => paljon enemmän kirjoitettavaa Andrews Fig. 8.3. 7-24 4

Suodin: lomita kaksi syöttökanavaa Arvojen välittäminen: kaksi prosessia vaihtaa arvot keskenään Export-operaatio, jota toinen voi kutsua Oikean indeksin laskemiseen Tuloksena on vähän omituisia ohjelmia! Andrews Fig. 7.2. Vrt. Sanomanvälitys, Fig 7.11-7.13 Andrews Fig. 8.4. Kun käytetään sanomanvälitystä! 7-25 7-26 module Exchance[1]... int othervalue; Internet proc deposit(other) process worker call Exchange[2].deposit(20); P(ready); module Exchance[2]... int othervalue; proc deposit(other) process worker othervalue = 20 V(ready); Vertaa: Arvojen vaihto sanomavälityksellä: chan ch1 (int), ch2 (int); process P1 { process P2 { int value =2; int value = 1; send ch2(value); send ch1(value); receive ch1(value); receive ch2(value); othervalue = 10 V(ready); call Exchange[1].deposit(10); P(ready); 7-27 7-28 Virhesemantiikkaa Tiedonsiirto kadonneet sanomat, yms. Virhesemantiikkaa 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-29 7-30 5

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 Esim: CCLU RPC default: MAYBE vast := call P (x, y, z) vast := call P (x, y, z) time 50 vast := call P (x, y, z) zealously vast := call P (x, y, z) zealously time 20 See Bacon97 s384 abandon after 50 ms EXACTLY ONCE retry every 20 ms 7-31 7-32 UNIX, rpc-kirjasto ks. RFC1050 man rpc man rpcgen man portmap Kertauskysymyksiä? 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 c Andrews ch 8.5 7-33 7-34 6