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

Samankaltaiset tiedostot
Jaetun muistin muuntaminen viestinvälitykseksi

Stabiloivat synkronoijat ja nimeäminen

Algoritmit 1. Demot Timo Männikkö

Stabilointi. Marja Hassinen. p.1/48

Konsensusongelma hajautetuissa järjestelmissä. Niko Välimäki Hajautetut algoritmit -seminaari

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet

Algoritmit 1. Demot Timo Männikkö

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

Tehtävä 2: Tietoliikenneprotokolla

Tarkennamme geneeristä painamiskorotusalgoritmia

Stabilointi. arvosana. arvostelija. Marja Hassinen

Algoritmit 2. Luento 13 Ti Timo Männikkö

Itsestabilointi: perusmääritelmiä ja klassisia tuloksia

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

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 12 To Timo Männikkö

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

Konsensusongelma hajautetuissa järjestelmissä

Hajautetut algoritmit. seminaari syksyllä 2007 vastuuhenkilö Jyrki Kivinen toinen vetäjä Timo Karvi

Zeon PDF Driver Trial

Kela Kanta-palvelut Terveydenhuollon todistusten välitys Toiminnalliset prosessit

f(n) = Ω(g(n)) jos ja vain jos g(n) = O(f(n))

Kombinatorinen optimointi

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.

3. Muuttujat ja operaatiot 3.1

Stabiloivat synkronoijat ja nimeäminen

1. Johdanto. Spesioinnin ja verioinnin perusteet. Päivi Kuuppelomäki

Paikallinen stabilointi

δ : (Q {q acc, q rej }) (Γ k {, }) Q (Γ k {, }) {L, R}.

Ongelma(t): Mikä on Turingin kone? Miten Turingin kone liittyy funktioihin ja algoritmeihin? Miten Turingin kone liittyy tietokoneisiin?

1 + b t (i, j). Olkoon b t (i, j) todennäköisyys, että B t (i, j) = 1. Siis operaation access(j) odotusarvoinen kustannus ajanhetkellä t olisi.

Luottamuksellinen sähköposti Trafissa

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

Algoritmit 1. Luento 3 Ti Timo Männikkö

Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja

Algoritmit 1. Luento 1 Ti Timo Männikkö

vaihtoehtoja TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 13. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

2 Funktion derivaatta

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

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

Algoritmit 1. Luento 13 Ti Timo Männikkö

Ehto- ja toistolauseet

Harjoitus 3 (viikko 39)

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

Algoritmi on periaatteellisella tasolla seuraava:

Gaussin ja Jordanin eliminointimenetelmä

Rinnakkaistietokoneet luento S

Esimerkki 1: Kahviautomaatti.

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria

3.4 Peruutus (backtracking)

Algoritmit 2. Luento 7 Ti Timo Männikkö

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

Ohjelmoinnin peruskurssi Y1

Lineaarinen optimointitehtävä

13 Lyhimmät painotetut polut

Algoritmit 1. Demot Timo Männikkö

Ohje luottamuksellista tietoa sisältävien sähköpostiviestien lähettämiseen ja vastaanottamiseen

Graafisen käyttöliittymän ohjelmointi Syksy 2013

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

(p j b (i, j) + p i b (j, i)) (p j b (i, j) + p i (1 b (i, j)) p i. tähän. Palaamme sanakirjaongelmaan vielä tasoitetun analyysin yhteydessä.

Ohjelmoinnin perusteet Y Python

Valitaan alkio x 1 A B ja merkitään A 1 = A { x 1 }. Perinnöllisyyden nojalla A 1 I.

Tehtävän V.1 ratkaisuehdotus Tietorakenteet, syksy 2003

Formalisoimme nyt edellä kuvatun laskennan.

811312A Tietorakenteet ja algoritmit, , Harjoitus 7, ratkaisu

8. Näppäimistöltä lukeminen 8.1

58131 Tietorakenteet (kevät 2009) Harjoitus 9, ratkaisuja (Antti Laaksonen)

2 Konekieli, aliohjelmat, keskeytykset

Ohjelmoinnin perusteet Y Python

Algoritmit 1. Luento 5 Ti Timo Männikkö

Kuluttajat mukaan verkkolaskujen vastaanottajiksi

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, , vastauksia

Sähköisten aineistojen välityspalvelu (Liite 2)

Transaktiot - kertausta

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

Tietorakenteet, laskuharjoitus 3, ratkaisuja

Yhteydettömän kieliopin jäsennysongelma

Julkinen. Suomen Pankin ja Finanssivalvonnan suojattu sähköposti: ulkoisen käyttäjän ohje

4. Luennon sisältö. Lineaarisen optimointitehtävän ratkaiseminen Simplex-menetelmä

7.4 Sormenjälkitekniikka

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Algoritmit 2. Luento 2 To Timo Männikkö

12. Javan toistorakenteet 12.1

Algoritmit 2. Demot Timo Männikkö

Algoritmit 2. Luento 6 To Timo Männikkö

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

Nopea kertolasku, Karatsuban algoritmi

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

4. Lue ja arvioi vastauksia

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys

Algoritmit 1. Luento 2 Ke Timo Männikkö

Olkoon S(n) kutsun merge-sort(a, p, q) tilavaativuus kun p q + 1 = n. Oletetaan merge toteutetuksi vakiotyötilassa (ei-triviaalia mutta mahdollista).

Algoritmit 2. Demot Timo Männikkö

Algoritmit 2. Luento 14 Ke Timo Männikkö

811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta

8. Näppäimistöltä lukeminen 8.1

Transkriptio:

Jaetun muistin muuntaminen viestin välitykseksi Otto Räsänen 15. lokakuuta 2007

1 Motivaatio 2 Valtuuden välitys Peruskäsitteitä 3 Kolme algoritmia Valtuuden välitys käyttäen laskuria ilman ylärajaa Valtuuden välitys, kun jonojen pituudella on yläraja Valtuuden välitys käyttäen satunnaisia tunnistenumeroita 4 Jaetun muistin simulointi Jaetun muistin simulointi käyttäen itsestabiloituvaa valtuuden välitystä

Miksi jaettu muisti halutaan pystyä muuntamaan viestin välitykseksi? Monet itsestabiloituvat algoritmit, kuten Dijkstran algoritmi, käyttävät jaettua muistia. Suunnittelu helpompaa, jos käytetään jaettua muistia. Käytännöllistä suunnitella algoritmi yhteen järjestelmään ja muuntaa se toimimaan toisissa.

Valtuuden välitys Kaksi suoritinta. Vain toisella voi olla yhdellä ajan hetkellä valtuus. Valtuus siirretään suorittimelta toiselle käyttäen viestin välitystä. Ratkaisee saman ongelman kuin keskinäinen poissulkeminen. Voidaan käyttää myös tiedon siirtoon.

Valtuuden hallussapito Lähettäjällä on valtuus, kun se luo uuden tunnistenumeron. Lähettää samaa viestiä uudelleen, kunnes saa kuittauksen samalla tunnistenumerolla. Vastaanottajalla on valtuus, kun se vastaanottaa uuden tunnistenumeron. Kuittaa jokaiseen viestiin viimeisimmän valtuuden tunnistenumerolla.

Turvallinen konfiguraatio Konfiguraatio: Sisältää suorittimien tilat sekä jonoissa matkalla olevat viestit. Turvallinen konfiguraatio: suorittimien laskurien arvot sekä viestien tunnistenumerot yhtä suuret. Itsestabiloituva algoritmi pääsee turvalliseen konfiguraatioon mistä tahansa alkutilasta. Turvallisesta k:sta alkaen järjestelmä suorittaa vain laillisia toimintoja.

Sender: 01 upon timeout 02 send(counter) 03 upon message arrival 04 begin 05 receive(msgcounter) 06 if MsgCounter! counter then (* token arrives *) 07 begin (* send new token *) 08 counter := MsgCounter + 1 09 send(counter) 10 end 11 else send(counter) 12 end Receiver: 13 upon message arrival 14 begin 15 receive(msgcounter) 16 if MsgCounter " counter then (* token arrives *) 17 counter := MsgCounter 18 send(counter) 19 end

Itsestabiloituvuus Kun järjestelmä on turvallisessa konfiguraatiossa, niin seuraavan laskenta-askeleen jälkeinen konfiguraatio on myös turvallinen. Kaikista konfiguraatioista päädytään turvalliseen konfiguraatioon, kunhan suoritus on reilu.

Ongelmia Jonojen pituudelle ei aseteta mitään ylärajaa. Siten laskurillakaan ei voi olla suurinta arvoa. Tästä seuraa, että algoritmin vaatima muistin määrä kasvaa jatkuvasti.

Edellisen algoritmin variaatio Oletetaan, että jonojen pituudella yläraja. Merkitään ylärajaa vakiolla cap. Kasvatetaan laskuria modulo cap + 1. Ennen pitkää valitaan sellainen tunnistenumero, jota ei vielä ole käytössä. (Kuten Dijkstran algoritmissa.) Algoritmi on itsestabiloituva.

Sender: 01 upon timeout 02 send(label) 03 upon message arrival 04 begin 05 receive(msglabel) 06 if MsgLabel = label then (* token arrives *) 07 begin (* send new token *) 08 label := ChooseLabel(MsgLabel) 09 send(label) 10 end 11 else send(label) 12 end Receiver: 13 upon message arrival 14 begin 15 receive(msglabel) 16 if MsgLabel! label then (* token arrives *) 17 label := MsgLabel 18 send(label) 19 end

Satunnaisalgoritmi Arvotaan tunnistenumero, jonka pitää poiketa edellisestä. Erilaisia tunnistenumeroita tarvitaan vähintään 3. Algoritmi stabiloituu todennäköisyydellä 1, kun suoritus reilu. Äärellisen pitkässä suorituksessa turvallista konfiguraatiota ei välttämättä saavuteta.

Itsestabiloituvuus Jonossa peräkkäin olevia viestejä, joilla on sama tunnistenumero, kutsutaan segmentiksi. Lähetetään samaa viestiä niin kauan, kunnes tulee kuittaus samalla tunnistenumerolla. Kelpaamattomat kuittaukset poistuvat jonosta, joten segmenttien lukumäärä vähenee. Turvallinen konfiguraatio saavutetaan O(n log n 2 2m ) kierroksessa, missä n on viestien määrä jonoissa ja m segmenttien määrä suorituksen alussa.

Kommunikointi käyttäen jaettua muistia Kaksi suoritinta, P i ja P j, jakavat kaksi yhdensuuntaista rekisteriä. Luku- ja kirjoitusoperaatiot atomisia: yhden askeleen aikana suoritetaan vain yksi operaatio. Suoritin P i kirjoittaa rekisteriin r ij ja lukee rekisteristä r ji. P j käyttää rekistereitä toiseen suuntaan.

Tiedon siirto käyttäen valtuuden välitystä Sovitaan, kumpi suorittimista toimii lähettäjänä ja kumpi vastaanottajana. Valtuuden mukana tietoa siirtyy kumpaankin suuntaan, joten kahden suorittimen välillä vain yksi instanssi algoritmista. Tarvitaan kuitenkin niin monta instanssia kuin on naapureita.

Paikalliset muuttujat Suorittimella P i on paikallinen muuttuja R ij, johon tallennetaan rekisteriin r ij viimeksi kirjoitettu arvo. Vain rekisteriin kirjoittava suoritin ylläpitää viimeisintä arvoa muuttujassa. Viimeisin arvo lähetetään valtuuden mukana lukijalle. Suoritin P i lähettää siis R ij :n arvon P j :lle, ja P j vastaavasti R ji :n arvon P i :lle.

Simulointi käytännössä Rekisteriin r ij kirjoittaminen Suoritin P i kirjoittaa arvon paikalliseen muuttujaansa R ij. Rekisteristä r ij lukeminen Suoritin P j vastaanottaa valtuuden. Suoritin P j vastaanottaa valtuuden uudelleen. Lukuoperaation tulos on tämän valtuuden yhteydessä vastaanotettu R ij :n arvo.

Kaksivaiheinen lukuoperaatio Lukuoperaation aikana suoritin ei jatka simuloitavan ohjelman suorittamista. Valtuuden välitystä kuitenkin jatketaan muiden suorittimien kanssa. Valtuus vastaanotettava kahdesti, jotta luettu arvo ei voisi olla vanhempi, kuin rekisteriin ennen lukuhetkeä kirjoitettu arvo.

Esimerkki Pi 1 2 3 Kirjoittaa Pj (1) 3 Lukee