581332 Rinnakkaisohjelmointi, koe 19.11.2010                              in EnglishOther side in English
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. Milloin kriittisen vaiheen ongelman ratkaisu busy wait -silmukan avulla olisi järkevää ja milloin ei? Perustele. Kuinka ratkaiset ongelman busy wait -silmukan avulla?
    3. Milloin kriittisen vaiheen ongelman ratkaisu semaforin avulla olisi järkevää ja milloin ei? Perustele. Kuinka ratkaiset ongelman semaforin avulla?
       
  2. [9 p] Lukkiutuminen.
    1. Mikä on lukkiutumisongelma? Anna Aterioivien filosofien ongelmaan pohjautuva konkreettinen esimerkki lukkiutumisesta.
    2. Mitkä neljä ehtoa täytyy olla voimassa, jotta lukkiutuminen voisi tapahtua? Näytä, että ne pätevät esimerkissäsi.
    3. Selitä pääpiirteissään Dijkstran algoritmi (DDA) lukkiutumisen havaitsemiseksi.
    4. Kuinka estäisit lukkiutumisen ennakolta? Anna yksi ratkaisumenetelmä ja näytä, kuinka se toimii Aterioivien filosofien ongelman ratkaisussa. 
       
  3. [9 p] Monitori.
    1. Mikä on monitori? Miten monitori ratkaisee kriittisen vaiheen ongelman?
    2. Missä kaikkialla monitorissa suorittavat prosessit voivat joutua odottamaan suoritusvuoroaan? Anna kustakin tavasta esimerkki, josta selviää miksi/milloin ne joutuvat odottamaan ja miten/milloin ne pääsevät suoritukseen.
    3. Mitä tarkoittaa käsite monitorin signalointisemantiikka? Miten monitorin signalointisemantiikka vaikuttaa monitorin toteutukseen? Anna konkreettinen pseudokäskytason esimerkki.
       
  4. [9 p] Kuvaile tuottaja-kuluttaja -ongelma. Tuottajia ja kuluttajia on kumpiakin useita ja puskurin koko (N) on äärellinen. Anna ongelman ratkaisu semaforeja käyttämällä. Minkälaisia synkronointi ja/tai kommunikointi ongelmia tehtävään liittyy ja kuinka ne on ratkaistu?