• Ei tuloksia

Jaetun muistin muuntaminen viestin v¨alitykseksi

N/A
N/A
Info
Lataa
Protected

Academic year: 2022

Jaa "Jaetun muistin muuntaminen viestin v¨alitykseksi"

Copied!
19
0
0

Kokoteksti

(1)

Jaetun muistin muuntaminen viestin v¨ alitykseksi

Otto R¨as¨anen

15. lokakuuta 2007

(2)

1 Motivaatio

2 Valtuuden v¨alitys Perusk¨asitteit¨a

3 Kolme algoritmia

Valtuuden v¨alitys k¨aytt¨aen laskuria ilman yl¨arajaa Valtuuden v¨alitys, kun jonojen pituudella on yl¨araja Valtuuden v¨alitys k¨aytt¨aen satunnaisia tunnistenumeroita

4 Jaetun muistin simulointi

Jaetun muistin simulointi k¨aytt¨aen itsestabiloituvaa valtuuden v¨alityst¨a

(3)

Miksi jaettu muisti halutaan pysty¨ a muuntamaan viestin v¨ alitykseksi?

Monet itsestabiloituvat algoritmit, kuten Dijkstran algoritmi, k¨aytt¨av¨at jaettua muistia.

Suunnittelu helpompaa, jos k¨aytet¨a¨an jaettua muistia.

K¨ayt¨ann¨ollist¨a suunnitella algoritmi yhteen j¨arjestelm¨a¨an ja muuntaa se toimimaan toisissa.

(4)

Valtuuden v¨ alitys

Kaksi suoritinta. Vain toisella voi olla yhdell¨a ajan hetkell¨a valtuus.

Valtuus siirret¨a¨an suorittimelta toiselle k¨aytt¨aen viestin v¨alityst¨a.

Ratkaisee saman ongelman kuin keskin¨ainen poissulkeminen.

Voidaan k¨aytt¨a¨a my¨os tiedon siirtoon.

(5)

Valtuuden hallussapito

L¨ahett¨aj¨all¨a on valtuus, kun se luo uuden tunnistenumeron.

L¨ahett¨a¨a samaa viesti¨a uudelleen, kunnes saa kuittauksen samalla tunnistenumerolla.

Vastaanottajalla on valtuus, kun se vastaanottaa ”uuden”

tunnistenumeron.

Kuittaa jokaiseen viestiin viimeisimm¨an valtuuden tunnistenumerolla.

(6)

Turvallinen konfiguraatio

Konfiguraatio: Sis¨alt¨a¨a suorittimien tilat sek¨a jonoissa matkalla olevat viestit.

Turvallinen konfiguraatio: suorittimien laskurien arvot sek¨a viestien tunnistenumerot yht¨a suuret.

Itsestabiloituva algoritmi p¨a¨asee turvalliseen konfiguraatioon mist¨a tahansa alkutilasta.

Turvallisesta k:sta alkaen j¨arjestelm¨a suorittaa vain ”laillisia”

toimintoja.

(7)

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

(8)

Itsestabiloituvuus

Kun j¨arjestelm¨a on turvallisessa konfiguraatiossa, niin seuraavan laskenta-askeleen j¨alkeinen konfiguraatio on my¨os turvallinen.

Kaikista konfiguraatioista p¨a¨adyt¨a¨an turvalliseen konfiguraatioon, kunhan suoritus on reilu.

(9)

Ongelmia

Jonojen pituudelle ei aseteta mit¨a¨an yl¨arajaa.

Siten laskurillakaan ei voi olla suurinta arvoa.

T¨ast¨a seuraa, ett¨a algoritmin vaatima muistin m¨a¨ar¨a kasvaa jatkuvasti.

(10)

Edellisen algoritmin variaatio

Oletetaan, ett¨a jonojen pituudella yl¨araja. Merkit¨a¨an yl¨arajaa vakiolla cap.

Kasvatetaan laskuria modulocap+ 1.

Ennen pitk¨a¨a valitaan sellainen tunnistenumero, jota ei viel¨a ole k¨ayt¨oss¨a. (Kuten Dijkstran algoritmissa.)

Algoritmi on itsestabiloituva.

(11)

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

(12)

Satunnaisalgoritmi

Arvotaan tunnistenumero, jonka pit¨a¨a poiketa edellisest¨a.

Erilaisia tunnistenumeroita tarvitaan v¨ahint¨a¨an 3.

Algoritmi stabiloituu todenn¨ak¨oisyydell¨a 1, kun suoritus reilu.

A¨¨arellisen pitk¨ass¨a suorituksessa turvallista konfiguraatiota ei v¨altt¨am¨att¨a saavuteta.

(13)

Itsestabiloituvuus

Jonossa per¨akk¨ain olevia viestej¨a, joilla on sama tunnistenumero, kutsutaan segmentiksi.

L¨ahetet¨a¨an samaa viesti¨a niin kauan, kunnes tulee kuittaus samalla tunnistenumerolla.

Kelpaamattomat kuittaukset ”poistuvat” jonosta, joten segmenttien lukum¨a¨ar¨a v¨ahenee.

Turvallinen konfiguraatio saavutetaan O(nlogn·22m) kierroksessa, miss¨a n on viestien m¨a¨ar¨a jonoissa ja m segmenttien m¨a¨ar¨a suorituksen alussa.

(14)

Kommunikointi k¨ aytt¨ aen jaettua muistia

Kaksi suoritinta, Pi ja Pj, jakavat kaksi yhdensuuntaista rekisteri¨a.

Luku- ja kirjoitusoperaatiot atomisia: yhden askeleen aikana suoritetaan vain yksi operaatio.

Suoritin Pi kirjoittaa rekisteriinrij ja lukee rekisterist¨arji. Pj k¨aytt¨a¨a rekistereit¨a toiseen suuntaan.

(15)

Tiedon siirto k¨ aytt¨ aen valtuuden v¨ alityst¨ a

Sovitaan, kumpi suorittimista toimii l¨ahett¨aj¨an¨a ja kumpi vastaanottajana.

Valtuuden mukana tietoa siirtyy kumpaankin suuntaan, joten kahden suorittimen v¨alill¨a vain yksi instanssi algoritmista.

Tarvitaan kuitenkin niin monta instanssia kuin on naapureita.

(16)

Paikalliset muuttujat

Suorittimella Pi on paikallinen muuttujaRij, johon tallennetaan rekisteriinrij viimeksi kirjoitettu arvo.

Vain rekisteriin kirjoittava suoritin yll¨apit¨a¨a viimeisint¨a arvoa muuttujassa.

Viimeisin arvo l¨ahetet¨a¨an valtuuden mukana lukijalle.

Suoritin Pi l¨ahett¨a¨a siisRij:n arvonPj:lle, jaPj vastaavasti Rji:n arvonPi:lle.

(17)

Simulointi k¨ ayt¨ ann¨ oss¨ a

Rekisteriinrij kirjoittaminen

Suoritin Pi kirjoittaa arvon paikalliseen muuttujaansaRij.

Rekisterist¨a rij lukeminen

Suoritin Pj vastaanottaa valtuuden.

Suoritin Pj vastaanottaa valtuuden uudelleen. Lukuoperaation tulos on t¨am¨an valtuuden yhteydess¨a vastaanotettuRij:n arvo.

(18)

Kaksivaiheinen lukuoperaatio

Lukuoperaation aikana suoritin ei jatka simuloitavan ohjelman suorittamista.

Valtuuden v¨alityst¨a kuitenkin jatketaan muiden suorittimien kanssa.

Valtuus vastaanotettava kahdesti, jotta luettu arvo ei voisi olla vanhempi, kuin rekisteriin ennen lukuhetke¨a kirjoitettu arvo.

(19)

Esimerkki

Pi

Pj

1 2 3

(1) 3

Kirjoittaa

Lukee

Viittaukset

LIITTYVÄT TIEDOSTOT

Seuraava algoritmi (jota kaikki prosessorit suorittavat) valitsee johtajan k¨ aytt¨ aen odotusarvoisesti alle kolme viestint¨ akierrosta prosessorien lukum¨ a¨ ar¨ ast¨

Kaik- ki olivat sit¨a mielt¨a, ett¨a he oppivat paremmin kirjan teht¨avien avulla.. My¨os heikot oppilaat pitiv¨at tietokoneharjoituksia se- kavina ja, kuten edell¨a

Kokei- lumateriaalia k¨ aytt¨ av¨ a opettaja ei k¨ aytt¨ anyt lis¨ an¨ a suomalaista kirjaa ja opettajan selitykset ven¨ al¨ aisen monisteen teoriaselvityksiin olivat v¨ altt¨

Pidet¨a¨an tunnettuna, ett¨a jokainen suljettu jana on nollamittainen (t¨am¨a todistet- tiin luentoesimerkiss¨a 8.2.4 yksikk¨ojanalle ja todistus on yleisesti olennaisesti

Teht¨ av¨ at 1-3 ovat verryttely¨ a, teht¨ av¨ at 4-5 puolestaan liittyv¨ at luennolla k¨ aytyyn asiaan.. Venn-diagrammeja apuna k¨ aytt¨ aen totea seuraavien joukko-opin

Jos jatkuvan funktion kuvaajalle piirretyt tangentit ovat nousevia suoria tietyll¨ a v¨ alill¨ a, on funktio t¨ all¨ a v¨ alill¨ a aidosti kasvava. K¨ a¨ ant¨ aen, jos funktio

b) K¨ aytt¨ aen vuoden 2004 kokonaisvienti¨ a kantalukuna saadaan viennin prosentuaa- linen jakauma toimialoittain viimeiseen

Vastaus: Dieselk¨ aytt¨ oinen auto on edullisempi ajet- taessa v¨ ahint¨ a¨ an 9980 km