581332 Rinnakkaisohjelmointi, koe 13.4.2010

Kirjoita jokaiseen vastauspaperiisi kurssin nimi, pvm, oma nimi, nimikirjoitus ja opiskelijanumero.
  1. [9 p] Kriittisen vaiheen ongelma
    1. Mikä on kriittisen vaiheen ongelma?
      Anna konkreettinen esimerkki tilanteesta, jossa kriittisen vaiheen ongelma ilmenee.
    2. Miksi kriittisen vaiheen ongelman ratkaisu yhden suorittimen ympäristöön ei välttämättä toimi usean suorittimen ympäristössä. Perustele.
    3. Miksi kriittisen vaiheen ongelman ratkaisu usean suorittimen ympäristöön ei välttämättä ole hyvä yhden suorittimen ympäristössä. Perustele.
       
  2. [9 p] Lukkiutuminen. Mikä on lukkiutumisongelma? Anna Aterioivien filosofien ongelmaan pohjautuva konkreettinen esimerkki lukkiutumisesta. Mitkä neljä ehtoa täytyy olla voimassa, jotta lukkiutuminen voisi tapahtua? Näytä, että ne pätevät esimerkissäsi. Selitä pääpiirteissään Dijkstran algoritmi lukkiutumisen havaitsemiseksi.
     
  3. [9 p] Luolasto. Luolaston sisäänkäynti on yhdessä päässä ja uloskäynti toisessa päässä. Luolaston vierailijat pääsevät sisään 10 henkilön ryhmissä. Uudet vierailijat odottavat kunnes vierailijoita on tasan 10 kpl, jonka jälkeen he pääsevät oman oppaansa johdolla sisään. He tutustuvat luolastoon itsenäisesti ja opas odottaa heitä luolaston loppupäässä matkamuistomyymälässä. Kun kaikki ovat valmiita poistumaan luolastosta, opas päästää heidät ulos ja menee sisäänkäynnille keräämään uuden ryhmän. Voit olettaa, että kaikki vierailijat lopulta haluavat pois luolastosta eikä kukaan eksy matkalla.

    Oletetaan, että oppaat ja vierailijat ovat prosesseja, joiden synkronointiin käytetään semaforeja. Kirjoita prosessien toimintaa kuvaavat tarpeelliset pseudokoodit oppaille ja vierailijoille. Tee tarvittavat oletukset käyttämistäsi semaforeista ja semaforioperaatioista.
     
  4. [9 p] Monitori. Mikä on monitori? Miten monitori ratkaisee kriittisen vaiheen ongelman? Missä eri kohdissa monitorissa suorittavat prosessit voivat joutua odottamaan suoritusvuoroaan? Mitä tarkoittaa käsite monitorin signalointisemantiikka? Miten monitorin signalointisemantiikka vaikuttaa monitorin toteutukseen? Miten monitorin signalointisemantiikka tulee ottaa huomioon monitoria kutsuvissa ohjelmissa?