581332 Rinnakkaisohjelmointi, 4 op, koe 18.12.2009 in EnglishOther side in English

Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot: nimi ja nimikirjoitus, opiskelijanumero.
  1. [11 p] Kriittisen vaiheen ongelma
    1. Anna kooditason esimerkki tilanteesta, jossa kriittisen vaiheen muodostaa kaksi erillistä koodisegmenttiä. Perustele.
    2. Oletetaan, että (i) kriittinen vaihe kestää noin 10-30 konekäskyä, (ii) kriittisen vaiheen suoritukseen käytetään alle 0.001% ohjelman kokonaissuoritusajasta, (iii) säikeitä suoritetaan rinnakkain 8-ytimisessä laitteistossa ja (iv) säikeillä on käytössään yhteinen muisti. Millä tavoin suojaisit kriittisen vaiheen tässä tilanteessa? Perustele.
    3. Oletetaan nyt että edellisen kohdan (b) vaatimusta (iv) muokataan siten, että säikeillä ei olisi käytössään yhteistä muistialuetta vaikka ne suorittavatkin samassa laitteistossa. Millä tavoin suojaisit kriittisen vaiheen tässä tilanteessa? Perustele.
       
  2. [11 p] Lukkiutuminen. Mikä on lukkiutumisongelma? Mitkä neljä ehtoa täytyy olla voimassa, jotta lukkiutuminen voisi tapahtua? Selitä pääpiirteissään Dijkstran algoritmi lukkiutumisen havaitsemiseksi. Mitä tehdään, jos lukkiutuman olemassaolo havaitaan? Miten lukkiutuma voidaan estää ennakolta?
     
  3. [11 p] Kuvaile tuottaja-kuluttaja -ongelma. Tuottajia ja kuluttajia voi kumpiakin olla useita. Puskuri on äärellisen kokoinen. Anna ongelman ratkaisu semaforeja käyttämällä. Selitä, miksi ratkaisusi on oikein.
     
  4. [11 p] Mehiläisparvi ja karhu. 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 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 nukkumaan. Ohessa on annettu karkea Adan suojatuilla olioilla tehty ratkaisu, jossa mehiläiset täyttävät purkkia yksi kerrallaan.

    Muokkaa esimerkkiä siten, että max 50 mehiläistä voi täyttää hunajaa samanaikaisesti (suojatun olion pot ulkopuolella). Esitä mehiläisprosessien (N kpl), karhuprosessin ja suojatun olion pot koodi.
    ada prot obj example