38
Yhteenvetoa

Yhteenvetoa

  • Upload
    dobry

  • View
    36

  • Download
    0

Embed Size (px)

DESCRIPTION

 Yhteenvetoa. Ongelmakenttä. Rinnakkaisuuden tarve Ympäristö Suunnittelun yksinkertaistaminen Suorituskyky Luotettavuus Kommunikointiin tarvitaan Yhteisiä muuttujia (data) Kommunikointikanavia one-to-one many-to-many. Ratkottava. Poissulkeminen atominen käyttö ei lukkiumaa - PowerPoint PPT Presentation

Citation preview

Page 1: Yhteenvetoa

Yhteenvetoa

Page 2: Yhteenvetoa

9 - 2Rio 2004 / Auvo Häkkinen

Ongelmakenttä

Rinnakkaisuuden tarve Ympäristö Suunnittelun yksinkertaistaminen Suorituskyky Luotettavuus

Kommunikointiin tarvitaan Yhteisiä muuttujia (data) Kommunikointikanavia

one-to-one many-to-many

Page 3: Yhteenvetoa

9 - 3Rio 2004 / Auvo Häkkinen

Ratkottava

Poissulkeminen atominen käyttö ei lukkiumaa ei elohiirtä (livelock) ei nälkiintymistä (suoritus päättyy)

Synkronointi yksittäiset erilliset tapahtumat, tilan muutokset yhden prosessin odotus, ryhmän odotus (puomi)

oikea vuoronantaminen (esim. ei etuilua)

Page 4: Yhteenvetoa

9 - 4Rio 2004 / Auvo Häkkinen

Mekanismit

Yhteinen muisti yhteiset muuttujat, yhteiset proseduurit lukkomuuttujat semaforit monitorit

Hajautettu ympäristö ei yhteistä muistia sanomanvälitys, send/receive (rinnakkainen toiminta) etäproseduurikutsu (hetkeksi käynnistetty toiminta) rendezvous (rinnakkainen toiminta, synkronointi)

Page 5: Yhteenvetoa

9 - 5Rio 2004 / Auvo Häkkinen

Lukkomuuttujat Atominen konekielen käsky test-and-set

Aktiivinen odotus Älä käytä, ellet tiedä miksi käytät!

Page 6: Yhteenvetoa

9 - 6Rio 2004 / Auvo Häkkinen

Lukkomuuttujat, Spin Locks

Boolean-muuttuja lock lock==true kriittinen alue varattu lock==false kriittinen alue vapaa

Entry protocol

while (lock) ; # aktiivinen odotus, “pörrää”

# check again if (!lock) # busy loop

lock=true;

Exit protocol

lock=false;

Page 7: Yhteenvetoa

9 - 7Rio 2004 / Auvo Häkkinen

Semaforit

P() aka WAIT() aka Down() jos kriittinen alue vapaa, lukitse se ja jatka eteenpäin jos kriittinen alue varattu, odota

V() aka SIGNAL() aka Up() jos joku odotusjonossa, päästä joku etenemään

muuten vapauta kriittinen alueatomisia

semafori S

P(S)

V(S)

S.arvo

S.jono

public

public

private

private

alkuarvo

Page 8: Yhteenvetoa

9 - 8Rio 2004 / Auvo Häkkinen

Semaforit P(sem) + V(sem): poissulkeminen, synkronointi

Jaettu binäärisemafori (split binary semaphore)

kaksi semaforia (tai useampi), joista vain yksi kerrallaan 1 kontrolli hajautettavissa useammalle prosessille

Baton passing (‘viestikapulan välitys’)

jätä poissulkemissemafori kiinni, herätä odottaja

suoritettava prosessi vaihtuu, ei salli etuilua

herätetty herättää seuraavan, jne.

Oma jono ja yksityiset semaforit suoritusvuorojen säätely (ei aina FCFS) jonotus jonkun prioriteetin perusteella (tarve järjestää)

Page 9: Yhteenvetoa

9 - 9Rio 2004 / Auvo Häkkinen

Poissulkeminen semaforia käyttäen

sem mutex=1; # vain perinteinen muuttujan nimi

process CS [i=1 to N] { # rinnakkaisuus! while (true){

ei kriittistä koodia;

ei kriittistä koodia; }}

yksi semafori kullekin erilliselle kriittiselle alueellehuomaa oikea alkuarvo

P(mutex); # varaa

< critical section > # käytä (exclusive!)

V(mutex); # vapauta

Page 10: Yhteenvetoa

9 - 10Rio 2004 / Auvo Häkkinen

Synkronointi semaforia käyttäen

sem A_Ready = 0; 0 ”ei ole tapahtunut”, 1 ”on tapahtunut”

Kumpi ehtii ensin? Oikea alkuarvo?

Tuottaja

tuota A…

V(A_ready);

Kuluttaja

P(A_ready);

kuluta A…

Page 11: Yhteenvetoa

9 - 11Rio 2004 / Auvo Häkkinen

Andrews Fig. 4.3: Producers and consumers using semaphores.(split binary semaphores)

Page 12: Yhteenvetoa

9 - 12Rio 2004 / Auvo Häkkinen

Andrews Fig. 4.13: A readers / writers solution using passing the baton.

Lukijat ensin

Page 13: Yhteenvetoa

9 - 13Rio 2004 / Auvo Häkkinen

Andrews Fig. 4.14: Shortest job next allocation using semaphores.

Page 14: Yhteenvetoa

9 - 14Rio 2004 / Auvo Häkkinen

Monitorit

wait(ehtomja) + signal(ehtomja): synkronointi

Condition passing odotuksen syynä ollut ehto jätetään muuttamatta

(vaikkei enää ole voimassa), herätä odottaja

suoritettava prosessi vaihtuu, ei salli etuilua

Covering condition odotuksen syynä oleva ehto ei enää voimassa,

herätä kaikki odottajat herätetyt tarkistavat vuorollaan saako jatkaa

Yksityinen ehtomuuttuja suoritusvuorojen säätely (ei aina FCFS, tai SJN)

Page 15: Yhteenvetoa

9 - 15Rio 2004 / Auvo Häkkinen

Stallings Fig. 5.21: Structure of

a Monitor.

Proseduureissa voi käyttää paikallisia muuttujia,

kullakin prosessilla niistä oma kopio (pinossa).

Monitorin muuttujat yhteiskäytössä.

Vain yksi prosessi kerrallaan suorittaa monitorin koodia.

Page 16: Yhteenvetoa

9 - 16Rio 2004 / Auvo Häkkinen

Ehtomuuttujat ja operaatiot

cond cv ei arvoa - vain jono Blocked prosesseja (paikka odotukselle)

wait(cv) laita prosessi jonoon odottamaan operaatiota signal() prosessi joutuu aina jonoon!

signal(cv) jos jono tyhjä, ”no operation”, ehtomuuttuja ”ei muista” jos jonossa prosesseja, herätä jonon ensimmäinen

empty(cv) palauta true, jos jono on tyhjä

vrt. semafori!

Page 17: Yhteenvetoa

9 - 17Rio 2004 / Auvo Häkkinen

Lisää operaatioita

wait (cv, rank) odota arvon mukaan kasvavassa järjestyksessä (priority wait)

minrank(cv) palauta jonon ensimmäisen prosessin arvo

signal_all(cv) herätä kaikki ehtomuuttujassa cv odottavat prosessit S&C: while ( ! empty(cv)) signal(cv); S&W: ei kovin hyvin määritelty miksei?

vrt. semafori!

Page 18: Yhteenvetoa

9 - 18Rio 2004 / Auvo Häkkinen

Prioriteetin mukaan jonotus (Priority Wait)

Andrews Fig. 5.6.

Condition passing:

Pidä resurssi varattuna,

anna varattuna seuraavalle prosessille!

Ei etuilua!

vrt. 4.14

Page 19: Yhteenvetoa

9 - 19Rio 2004 / Auvo Häkkinen

”Kattava herätys” (Covering Condition)

Andrews Fig. 5.7.

Herätä kaikki odottajat - tarkistakoot itse,

onko jatkamislupa edelleen voimassa!

Page 20: Yhteenvetoa

9 - 20Rio 2004 / Auvo Häkkinen

Priority Wait

Andrews Fig. 5.8.

Herätä vain ne, jotka voivat jatkaa!

Page 21: Yhteenvetoa

9 - 21Rio 2004 / Auvo Häkkinen

Sanomatsend chan(msg) + receive chan(msg)

Palvelut, joissa yksi säie (prosessi) Ei poissulkemistarvetta Yhtäaikainen odottaminen

pyyntö odottaa (ei prosessi)

Palvelut, joissa monta säiettä (prosessia) Poissulkeminen, synkronointi (semaforit tai monitori) Yhtäaikainen odottaminen

prosessi odottaa

send asynkroninen, receive blokkaava

Page 22: Yhteenvetoa

9 - 22Rio 2004 / Auvo Häkkinen

Kanavat (Andrews)

Yhteinen ’postilaatikko’ jono sanomia, FIFO kaikki kanavan sanomat rakenteeltaan samanlaisia

chan ch(type1 id1, …, typen idn) ch: kanavan nimi typei idi: 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

Page 23: Yhteenvetoa

9 - 23Rio 2004 / Auvo Häkkinen

Operaatiot

send kanava(lauseke1, … , lauseken) lähetä sanoma kanavaan

receive kanava(muuttuja1 , … , muuttujan) 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!

Page 24: Yhteenvetoa

9 - 24Rio 2004 / Auvo Häkkinen

Andrews Fig. 7.7.

Resurssin varaus, Palvelija

Page 25: Yhteenvetoa

9 - 25Rio 2004 / Auvo Häkkinen

Tiedosto-palvelijat

ja asiakkaat

Andrews Fig. 7.10.

Page 26: Yhteenvetoa

9 - 26Rio 2004 / Auvo Häkkinen

Etäproseduurikutsu,Remote Procedure Call (RPC)

Palvelu etäkoneessa, ei yhteistä muistia

Asiakkaat pyytävät palveluaprosedurikutsumekanismilla

Toteutuksen yksityiskohdat KJ:n palvelua taustalla sanomanvälitys

RPC yhdistää monitorin ja synkronisen sanomanvälityksen piirteet kaksisuuntainen synkroninen kanava yhdellä kutsulla asiakas odottaa

Page 27: Yhteenvetoa

9 - 27Rio 2004 / Auvo Häkkinen

julkisten operaatioiden

esittely (export)

Etäproseduurin moduuli

Kutsu

Page 28: Yhteenvetoa

9 - 28Rio 2004 / Auvo Häkkinen

Aikapalvelumoduuli

Andrews Fig. 8.1.

Page 29: Yhteenvetoa

9 - 29Rio 2004 / Auvo HäkkinenAndrews Fig. 8.1.

Kutsu:

time = TimeServer.get_time();

call TimeServer.delay(10);

Page 30: Yhteenvetoa

9 - 30Rio 2004 / Auvo Häkkinen

RPC / Rendezvouscall Mname.opname()

Etäproseduurikutsu Passiivisten palvelurutiinien etäkäyttö poissulkeminen, synkronointi

Rendezvous Aktiiviset kommunikoivat prosessit Yksi operaatio kerrallaan (kohtaaminen) ei poissulkemista, synkronointi

Synkroninen, blokkaava

Page 31: Yhteenvetoa

9 - 31Rio 2004 / Auvo Häkkinen

module Mname op opname1(formals), opname2(formals);

body declarations of shared variables;

local procedures and processes;

process pname { declarations of local variables; while (true) { statements;

in opname1(formals) -> statements;

[] opname2(formals) -> statements;

nistatements;

} }end mname

julkisten operaatioiden

esittely (export)

kohtaamispaikat, jotka

toteuttavat operaatiot

Rendezvous moduuli

Kutsu call Mname.opname(arguments)

Page 32: Yhteenvetoa

9 - 32Rio 2004 / Auvo Häkkinen

Yleinen muoto

in op1(formals1) and B1 -> S1 ;

[ ] …[ ] opn(formalsn) and Bn -> Sn ;

ni

in op(formals) operaation nimi ~ kohtaamispaikka and B synkronointilauseke (boolean lauseke) [ ] … muut vartioidut kohtaamispaikat (FCFS)

by e1 -> S1;

by en -> Sn;

Ja vuorottamislauseke (by lauseke)• kohtaamiseen voi syntyä jonoa (synkronointilauseke ei true) missä järjestyksessä odottavat palvellaan (~prioriteetti)• oletus: palvele vanhin pyyntö ensin

Page 33: Yhteenvetoa

9 - 33Rio 2004 / Auvo HäkkinenAndrews Fig. 8.5.

Bounded Buffer

vrt. Andrews Fig. 5.4

Poissulkeminen? Synkronointi?

Page 34: Yhteenvetoa

9 - 34Rio 2004 / Auvo Häkkinen

Andrews Fig. 8.8.

Shortest_Job-Next allokointi

vrt. Andrews Fig 5.6

Page 35: Yhteenvetoa

9 - 35Rio 2004 / Auvo Häkkinen

Klassisia malleja

Bounded buffer (tuottaja – kuluttaja, suodin)

Resurssien allokointi (asiakas – palvelija)

Lukijat/kirjoittajat (luokan vuorot)

SJN-skedulointi (priority wait)

Aikaviipaleet ja ajastimet (vuorottamispalvelu)

Nukkuva parturi (prosessien kohtaaminen)

Aterioivat filosofit (lukkiuma) (hajautettu resurssien jakelu)

Page 36: Yhteenvetoa

9 - 36Rio 2004 / Auvo Häkkinen

Arkkitehtuureja

liukuhihna, suodintuottaja – kuluttajaasiakas – palvelijavertaistoimijat (peer-to-peer,P2P)monipuolisemmat rakenteet: heartbeat yms.ryhmä: keskitetty, rengas, symmetrinen

Page 37: Yhteenvetoa

9 - 37Rio 2004 / Auvo Häkkinen

Evaluoi

Oikeellisuus Suorituspolkujen analyysi Tilamallit

Suorituskyky Yleisrasite Komponentti Kommunikointi / ryhmän kommunikointi Rinnakkaisuusaste

Selvitä aina kuinka järjestelmä käyttäytyy!

Page 38: Yhteenvetoa

9 - 38Rio 2004 / Auvo Häkkinen

V(Rio);signal(Rio);

call Lectures.close(Rio);

END JOBEND JOBEND JOBEND JOB