Yliopiston etusivulle Suomeksi På svenska In English
Helsingin yliopisto Tietojenkäsittelytieteen laitos
 

Tietojenkäsittelytieteen laitos

Suomeksi In English Laskuharjoitus

Rinnakkaisohjelmointi, S2006, LH 5

Nämä tehtävät käsitellään harjoituksissa viikolla 48, 27.11.-1.12.2006.
  1. Tehtävä 6.6 oppikirjasta.
     
  2. Tee laskuharjoitusten 4 tehtävä 3 uudelleen siten, että prosessien synkronointiin käytetään semaforeja.
     
  3. Tarkastellaan kirjan algoritmia 6.21 (s. 144). Huomaa typo algoritmissa.
    1. Osoita, että lukijoilla on etusija kirjoittajiin nähden.
    2. 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?
    3. Muokkaa algoritmia siten, että kirjoittajilla on etusija lukijoihin nähden. Miksi näin tehtäisiin?

     
  4. Tarkastellaan kirjan algoritmia 6.21 (s. 144). Huomaa typo algoritmissa.
    1. 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?
    2. Muokkaa algoritmia siten, että lukijoiden ja kirjoittajien etusija vuorottelee. Miksi näin tehtäisiin?

     
  5. 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