Rendezvous Kohtaaminen Andrews 8 2 10 3 Rendezvous

  • Slides: 15
Download presentation
 Rendezvous Kohtaaminen Andrews 8. 2, 10. 3

Rendezvous Kohtaaminen Andrews 8. 2, 10. 3

Rendezvous Aktiivinen palvelija l l suorituksessa oleva prosessi antaa palvelun vrt: RPC: töpö luo/aktivoi

Rendezvous Aktiivinen palvelija l l suorituksessa oleva prosessi antaa palvelun vrt: RPC: töpö luo/aktivoi prosessin, joka suorittaa palvelun Silloin tällöin aktiivinen palvelija ja asiakas kohtaavat l palvelija suorittaa pyydetyn operaation (asiakas odottaa) l ja palvelija jatkaa muita aktiviteetteja (jos on) Vrt. etäproseduuri. Rendezvous kutsu! l synkronointi ja kommunikointi yhdistetty l l Palvelija suorittaa operaatioita järjestyksessä, yhden operaation kerrallaan Rio 2005/ Auvo Häkkinen, Liisa Marttinen 2

Rendezvous moduuli module Mname op opname 1(formals), opname 2(formals); body declarations of shared variables;

Rendezvous moduuli module Mname op opname 1(formals), opname 2(formals); body declarations of shared variables; local procedures and processes; process pname { declarations of local variables; while (true) { statements; in opname 1(formals) -> statements; [] opname 2(formals) -> statements; ni statements; } } end mname Kutsu julkisten operaatioiden esittely (export) kohtaamispaikat, jotka toteuttavat operaatiot call Mname. opname(arguments) Rio 2005/ Auvo Häkkinen, Liisa Marttinen 3

Syöttölause (palvelija) ~ Aika ja paikka kohtaamiselle in opname(formal identifiers) -> S; ni l

Syöttölause (palvelija) ~ Aika ja paikka kohtaamiselle in opname(formal identifiers) -> S; ni l l palvelija odottaa asiakasta, joka kutsuu (call Mname. opname()) jonka jälkeen palvelija suorittaa lauseosan S opname(…): vahti = kohtaamispaikka l l Jos asiakas valmiina (“paikalla”), niin suorita lauseosa S Jos asiakas ei paikalla, tarkista muut in-lauseen kohtaamispaikat S: vartioidut lauseet l (guarded) asiakasprosessi saa jatkaa (“kohtaaminen ohi”), kun lauseosa S on suoritettu Rio 2005/ Auvo Häkkinen, Liisa Marttinen 4

Yleinen muoto vahti (guard) in op 1(formals 1) and B 1 ->by S 1

Yleinen muoto vahti (guard) in op 1(formals 1) and B 1 ->by S 1 e; 1 -> S 1; []… [ ] opn(formalsn) and Bn ->by Sne; n -> Sn; ni l l l in op(formals) and B []… Palvelija odottaa, jos mitään in-haaraa ei voida suorittaa (ei ole kutsuttu tai ehto Bi estää) operaation nimi ~ kohtaamispaikka 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 Rio 2005/ Auvo Häkkinen, Liisa Marttinen 5

module Bounded. Buffer op deposit (type. T), fetch (type. T); body process Buffer {

module Bounded. Buffer op deposit (type. T), fetch (type. T); body process Buffer { type. T buf [n]; int front = 0, rear = 0, count = 0; while (true) in deposit (item) and count < n -> buf [rear] = item; rear = (rear +1) mod n; count = count +1; [ ] fetch (item) and count > 0 -> item = buf [front]; front = ( front + 1) mod n; count = count +1; ni } 6

Bounded Buffer vrt. Andrews Fig. 5. 4 Poissulkeminen? Synkronointi? Andrews Fig. 8. 5. 7

Bounded Buffer vrt. Andrews Fig. 5. 4 Poissulkeminen? Synkronointi? Andrews Fig. 8. 5. 7

process Producer[i=1 to N] { type. T item; while (true) { … item =

process Producer[i=1 to N] { type. T item; while (true) { … item = add_this_and_that(); call Bounded. Buffer. deposit(item); … } } process Consumer[i=1 to M] { type. T item; while (true) { … call. Bounded. Buffer. fetch(item); do_this_and_that(item); … } } Rio 2005/ Auvo Häkkinen, Liisa Marttinen 8

Aterioivat filosofit, keskitetty ratkaisu 4 0 3 2 1 Andrews Fig. 8. 6. 9

Aterioivat filosofit, keskitetty ratkaisu 4 0 3 2 1 Andrews Fig. 8. 6. 9

Aikapalvelija vrt. Andrews Fig. 8. 1 Rio 2005/ Auvo Häkkinen, Liisa Marttinen Andrews Fig.

Aikapalvelija vrt. Andrews Fig. 8. 1 Rio 2005/ Auvo Häkkinen, Liisa Marttinen Andrews Fig. 8. 7. 10

Shortest_Job-Next allokointi vrt. Andrews Fig 5. 6 Kun resurssi vapaa, niin hyväksytään pyyntö, jolla

Shortest_Job-Next allokointi vrt. Andrews Fig 5. 6 Kun resurssi vapaa, niin hyväksytään pyyntö, jolla pienin aikatarve (time) Andrews Fig. 8. 8. Rio 2005/ Auvo Häkkinen, Liisa Marttinen 11

Merge sitoo out: n jonkin toisen Mergemoduulin sisääntuloon! call out(vi) = kutsutaan toisen Merge-moduulin

Merge sitoo out: n jonkin toisen Mergemoduulin sisääntuloon! call out(vi) = kutsutaan toisen Merge-moduulin in-operaatiota Andrews Fig. 8. 9. 12

Arvojen välittäminen Asymmetrinen ratkaisu Parempi kuin RPC: llä, mutta hankalampi kuin sanomanvälityksellä! Varo lukkiumaa!

Arvojen välittäminen Asymmetrinen ratkaisu Parempi kuin RPC: llä, mutta hankalampi kuin sanomanvälityksellä! Varo lukkiumaa! Andrews Fig. 8. 10. 13

Ada: Rendezvous ja kohtaamispaikat select accept op 1(formals 1) do statements; or … or

Ada: Rendezvous ja kohtaamispaikat select accept op 1(formals 1) do statements; or … or accept opn(formalsn) do statements; end select (s. 375, 399 -401) Vastaavaa Select-or -rakennetta saa käyttää harjoituksissa ja kokeessa. Käytä receive-operaatiota acceptin paikalla. Ks. myös (vaikka ei varsinaisesti kuulukaan kurssiin) l Andrews Fig 8. 17: Bounded buffer with Ada l Andrews Fig 8. 18, Fig 8. 19: Dining philosophers with Ada Rio 2005/ Auvo Häkkinen, Liisa Marttinen 14

Kertauskysymyksiä? Rio 2005/ Auvo Häkkinen, Liisa Marttinen 15

Kertauskysymyksiä? Rio 2005/ Auvo Häkkinen, Liisa Marttinen 15