in EnglishOther side in English

581332 Rinnakkaisohjelmointi (4 op), erilliskuulustelu 2.6.2009

Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot: nimi ja nimikirjoitus, opiskelijanumero, kurssin nimi ja sivunumero.
  1. [9 p] Kriittisen vaiheen ongelma
    1. Anna esimerkki tilanteesta, jossa kriittisen vaiheen ongelma olisi hyvä ratkaista keskeytykset estämällä, mutta ei busy-wait -odotuksella (esim. test-and-set käskyn avulla) eikä semaforeilla. Perustele.
    2. Anna esimerkki tilanteesta, jossa kriittisen vaiheen ongelma olisi hyvä ratkaista busy-wait -odotuksella, mutta ei keskeytyksiä estämällä eikä semaforeilla. Perustele.
    3. Anna esimerkki tilanteesta, jossa kriittisen vaiheen ongelma olisi hyvä ratkaista semaforeilla, mutta ei busy-wait -odotuksella eikä keskeytyksiä estämällä. Perustele.
       
       
  2. [9 p] Lukkiutuminen (deadlock)
    1. [3 p] Anna Aterioivien filosofien ongelmaan semaforeihin perustuva ratkaisu, jossa on lukkiutumisongelma. Anna lukkiutuva skenario. Perustele, miksi skenario lukkiutuu.
    2. [6 p] Lukkiutuminen voi tapahtua ainoastaan tiettyjen neljän ehdon vallitessa. Mainitse nämä ehdot ja kuinka ne toteutuvat a-kohdan ratkaisussasi. 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, karhu ja semaforit. Mehiläisparvi (N mehiläistä) ruokkii loukkuun joutunutta karhua keräämällä sille hunajaa. Karhun elämä loukossa on vain syömistä ja odottelua. Mehiläiset keräävät hunajaa ja laittavat hunaja-annoksensa purkkiin yksi annos kerrallaan. Kun purnukka on täynnä (H annosta), viimeisen annoksen laittanut mehiläinen herättää karhun syömään ennenkuin poistuu paikalta. Hunajaa tuovat mehiläiset jäävät tällöin odottamaan purnukan tyhjenemistä. Kun karhu on tyhjentänyt purkin, se päästää mehiläiset taas täyttämään purkkia ja käy itse taas nukkumaan.

    Ohjelmoi purnukan täytön ja tyhjentämisen synkronoinnin ratkaisu semaforien avulla. Esitä mehiläisprosessien (N kpl) and karhuprosessin pseudokoodit. Selvitä vielä sanallisesti, missä tilanteissa tarvitaan poissulkemista ja/tai synkronointia sekä kuinka ne toteutuvat ratkaisussasi. Tee tarvittavat oletukset semaforien piirteistä ja kirjoita ne näkyville.
     
  4. [9 p] Mehiläisparvi, karhu ja IRR monitori. Mehiläisparvi (N mehiläistä) ruokkii loukkuun joutunutta karhua keräämällä sille hunajaa. Karhun elämä loukossa on vain syömistä ja odottelua. Mehiläiset keräävät hunajaa ja laittavat hunaja-annoksensa purkkiin yksi annos kerrallaan. Kun purnukka on täynnä (H annosta), viimeisen annoksen laittanut mehiläinen herättää karhun syömään ennenkuin poistuu paikalta. Hunajaa tuovat mehiläiset jäävät tällöin odottamaan purnukan tyhjenemistä. Kun karhu on tyhjentänyt purkin, se päästää mehiläiset taas täyttämään purkkia ja käy itse taas nukkumaan.

    Ohjelmoi purnukan täytön ja tyhjentämisen synkronoinnin ratkaisu IRR (E<S<W) signalointisemantiikkaa käyttävän monitorin avulla. Monitori sisältää siis vain synkronointiongelman ratkaisun - hunajan kerääminen, purkin täyttäminen ja tyhjentäminen tapahtuvat monitorin ulkopuolella. Esitä mehiläisprosessien (N kpl), karhuprosessin ja monitorin pseudokoodi. Selvitä vielä sanallisesti, missä tilanteissa tarvitaan poissulkemista ja/tai synkronointia sekä kuinka ne toteutuvat ratkaisussasi. Kerro myös, mikä osa ratkaisuasi perustuu nimenomaan IRR signalointisemantiikkaan. Tee tarvittavat oletukset muista monitorin piirteistä ja kirjoita ne näkyville.