581332 Rinnakkaisohjelmointi, 4 op, erilliskoe 25.9.2007

Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot: nimi ja nimikirjoitus, henkilötunnus tai opiskelijanumero, kurssin nimi ja sivunumero.
  1. [9 p] Tarkastellaan allaolevaa Algoritmia 2.10. Oletetaan, että K:n arvo on 10.
     
                 
     
    1. Voiko muuttujan n loppuarvo olla 10? Jos voi, niin anna siihen johtava skenaario. Jos ei voi, niin perustele miksi ei.
    2. Voiko muuttujan n loppuarvo olla 0? Jos voi, niin anna siihen johtava skenaario. Jos ei voi, niin perustele miksi ei.
    3. Voiko muuttujan n loppuarvo olla 1? Jos voi, niin anna siihen johtava skenaario. Jos ei voi, niin perustele miksi ei.
    4. Mikä tässä on varsinainen ongelma ja miten se tulisi korjata, jotta lopputulos olisi joka suorituskerralla 0?
       
  2. [9 p] Lukkiutuminen (deadlock)
    1. [3 p] Anna Aterioivien filosofien ongelmaan semaforeihin perustuva ratkaisu, jossa on lukkiutumisongelma. Anna lukkiutuva skenario.
    2. [6 p] Lukkiutuminen voi tapahtua ainoastaan tiettyjen neljän ehdon vallitessa. Mainitse nämä ehdot. Selitä myös kunkin ehdon kohdalla, kuinka a-kohdan ratkaisua tulisi muuttaa, jotta lukkiutuminen estetään juuri kyseinen ehto rikkomalla.

     
  3. [9 p] Mehiläisparvi semaforissa. 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 semaforien avulla. Esitä mehiläisprosessien (N kpl) ja karhuprosessin koodi. Selvitä vielä sanallisesti, missä tilanteissa tarvitaan poissulkemista ja/tai synkronointia sekä kuinka ne toteutuvat ratkaisussasi.

  4. [9 p] Monitori
    1. Mikä on monitori? Mihin ongelmaan se on ratkaisu?
    2. Mikä on monitorin ehtomuuttuja (condition variable) ja mihin sitä käytetään?
    3. Mitä tarkoittaa käsite "monitorin signalointisemantiikka"? Mikä on immediate resumption requirement (IRR, signal and urgent wait) signalointisemantiikka? Minkä ongelman se ratkaisee?
    4. Anna esimerkki tilanteesta, jossa ongelman ratkaisu olisi perusteltua tehdä semaforeilla mutta ei monitorilla. Perustele.