Rinnakkaisohjelmointi, S2006, LH 5
Nämä tehtävät käsitellään harjoituksissa viikolla 48, 27.11.-1.12.2006.- Tehtävä 6.6 oppikirjasta.
- Tee laskuharjoitusten 4 tehtävä 3
uudelleen siten, että prosessien synkronointiin käytetään semaforeja.
- Tarkastellaan kirjan algoritmia 6.21 (s. 144). Huomaa typo algoritmissa.
- Osoita, että lukijoilla on etusija kirjoittajiin nähden.
- Toimiiko algoritmi, jos kaikki kolme semaforia toteutettaisiin busy-wait -semaforeina tavanomaisten suspend-wait -semaforien asemesta? Missä tilanteissa busy-wait -semaforeja tulisi/ei tulisi käyttää suspend-wait -semaforien asemesta?
- Muokkaa algoritmia siten, että kirjoittajilla on etusija lukijoihin nähden. Miksi näin tehtäisiin?
- Tarkastellaan kirjan algoritmia 6.21 (s. 144). Huomaa typo algoritmissa.
- Muokkaa algoritmia siten, että viimeinen kirjoittaja herättää kaikki odottavat lukijat. Huomaa, että myös lukijoiden entry-protokollaa tulee muokata. Miksi näin tehtäisiin?
- Muokkaa algoritmia siten, että lukijoiden ja kirjoittajien etusija vuorottelee. Miksi näin tehtäisiin?
- Tee symmetrinen ratkaisu Aterioivien filosofien ongelmaan. Kaikki filosofit noudattavat siis samaa algoritmia,
joka ei ole mitenkään sidoksissa filosofin numeroon.
(Oppikirjan Alg. 6.12 on toimiva epäsymmetrinen ratkaisu, koska filosofi 4
toimii eri algoritmin mukaisesti kuin muut.) Osoita, että ratkaisusi ei
lukkiinnu ja että filosofit eivät nälkiinny eivätkä odottele turhaan. [Andr00]
- Vihje 1: kolikon heitto ensimmäiseksi otettavan haarukan valitsemiseksi
- Vihje 2: ylimääräiset muuttujat, joiden avulla nopeasti ajatteleva filosofi ei pääse etuilemaan
Teemu Kerola 22.11.2006 16:44