Helsingin yliopisto
Tietojenkäsittelytieteen laitos

Rinnakkaisohjelmistot,syksy 2004, Harjoitus 5

29.11.-3.12.2004

Andrews: 5.1-5.2 Monitors (ks. myös 5.4-5.5 pthreads-kirjasto ja Java), 7.1-7.5 Message Passing, Stallings 5.6 Message Passing

Tehtävien tavoitteena on tutustua monitori-rakenteen toteutukseen ja käyttöön. Kurssin monitoriin perustuvissa tehtävissä oletetaan, että operaatio signal() on tyyppiä signal-and-continue.


1 - LUKIJAT JA KIRJOITTAJAT MONITORIIN

Kirjoita monitor-rakennetta käyttäen lukijat/kirjoittajat -ongelman ratkaisu (ks. kirjan kuva 5.5), joka antaa kirjoittajille korkeamman prioriteetin, ts. kun kirjoittaja on tullut paikalle, niin lukijoita ei enää lasketa lukemaan. Esitä myös monitoria käyttävien lukija- ja kirjoittajaprosessien koodit.

2 - PURNUKAN KäYTTÖ MONITORIIN

Mehiläisparvi ruokkii loukkuun joutunutta karhua keräämällä sille hunajaa. Karhun elämä loukossa on vain syömistä ja odottelua. Mehiläiset kuljettavat hunajaa purnukkaan annos kerrallaan. Kun purnukka on täynnä (H annosta), viimeisen annoksen tuonut mehiläinen herättää karhun ennenkuin poistuu paikalta. Seuraavat paikalle saapuvat mehiläiset jäävät odottamaan purnukan tyhjenemistä. Kun karhu on tyhjentänyt purkin, se päästää mehiläiset töihin ja käy itse nukkumaan.

Ohjelmoi purnukan täyttö ja tyhjentäminen monitoriin ja esitä mehiläisprosessien (N kpl) ja karhuprosessin koodi. Selvitä vielä sanallisesti missä tilanteissa tarvitaan poissulkemista ja synkronointia ja kuinka ne toteutuvat ratkaisussasi.

3 - MUISTINJAKELU MONITORIIN

Harjoituskerran 3 tehtävässä 5 jaettiin muistia asiakkaan haluamia määriä. Toteuta monitori-rakennetta käyttäen muistinjakeluratkaisu, jossa

a) muistia jaetaan pyytäjälle heti, kun sitä on saatavilla riittävä määrä (vaikka joku iso pyyntö olisikin jonossa / jäisikin jonoon) ja ratkaisu perustuu "covering condition" -tekniikkaan.

b) kuten a-kohta, mutta ratkaisu perustuu "condition passing" -tekniikkaan ja

c) muistia jaetaan FCFS -periaatteella ja ratkaisu perustuu "condition passing" -tekniikkaan.

4 - NUKKUVA PARTURI MONITORIIN

Nukkuvan parturin monitor-ratkaisu on esitetty kirjan kuvassa 5.10.

a) Mitkä while-lauseet voisivat olla if-lauseita? Perustele. Minkä vuoksi kirjan ratkaisussa ko. kohdissa on kuitenkin while-lauseet? Vihje: huomaa, että monitor-proseduurin toiminta on suurimmaksi osaksi keskeytymätöntä.

b) Esitä parturiongelmalle yksinkertaisin mahdollinen perusratkaisu ts. oleta signal-and-continue -semantiikka, ja että partureita ja tuoleja on vain yksi (ks. kirjan kuva 5.9). Perustele tekemäsi muutokset.

c) Laajenna parturiliikettä: yleistä kuvan 5.10 ratkaisua siten, että parturiliikkeessä toimii useita partureita samaan aikaan.

5 - PROSESSIEN TAHDISTUS SANOMANVäLITYKSELLä

Laskenta on jaettu rinnakkaisuuden saavuttamiseksi N:lle eri prosessille. Niihin on ohjelmoitu vikasietoisuutta varten joukko tahdistuspisteitä: jos jotain menee pieleen, voidaan myöhemmin jatkaa jostain tahdistuspisteestaä.

Aina kun prosessin suoritus saapuu tahdistuspisteeseen, se tallettaa sen hetkiset tilatietonsa levylle. Tallettamisensa se saa tehdä vasta kun, kaikki muutkin prosessit ovat saaneet tahdistusta edeltävät vaiheet valmiiksi ja päässeet omaan tahdoistuspisteeseensä. Suoritus saa jatkua laskennan seuraavaan vaiheeseen vasta, kun kaikki ovat saaneet tallettamisensa valmiiksi. Prosessien välinen kommunikointi perustuu sanomanvälitykseen.

Esittele kommunikoinnissa tarvittavat kanavat ja kirjoita tahdistukseen tarvittavat koodin osat.

Se, joka ei koskaan epäile, ei tiedä mitään.

Liisa Marttinen

[an error occurred while processing this directive]