581332 Rinnakkaisohjelmointi, koe 25.9.2012              in EnglishOther side in English

Kokeen perusteella kurssista saa 6 op, jos projekti on tehty, ja 4 op muutoin.
Kirjoita jokaiseen vastauspaperiisi kurssin nimi, pvm, oma nimi, nimikirjoitus ja opiskelijanumero.

  1. [9 p] Kriittisen vaiheen ongelma
    1. Anna kooditason esimerkki kriittisestä vaiheesta. Anna esimerkkiisi liittyvä skenaario, jossa laskennan lopputulos on virheellinen, jos kriittistä vaihetta ei ole suojattu. Selitä, miksi tämän saman skenaarion laskennan tulos on oikein, kun kriittinen vaihe on suojattu.
    2. Millä menetelmällä esimerkkisi kriittinen vaihe on hyvä suojata? Miksi juuri tällä menetelmällä eikä kahdella muulla tuntemallasi menetelmällä. Perustele. Näytä, miten kriittisen vaiheen suojaus toteutetaan kooditasolla.

  2. [9 p] Lukkiutuminen. Sovellus App (4 säiettä, säikeet P, R, S ja T) käyttää kolmea resurssia (A, B ja C), joiden käyttö voi johtaa lukkiutumiseen. Resursseja on kutakin yksi kappale ja kutakin resurssia voi käyttää vain yksi säie kerrallaan.
    1. [4 p] Selitä, mikä on lukkiutumisongelma. Anna lukkiutumiseen johtava skenaario sovelluksessa App. Esitä skenaario sopivalla pseudokooditasolla lukkiutuville prosesseille.
    2. [2 p] Nimeä konkreettinen (todellinen) resurssi kullekin resurssille A, B ja C. Käytä ainakin kahta erilaista resurssityyppiä.
    3. [3 p] Mitkä neljä ehtoa täytyy olla voimassa, jotta lukkiutuminen voisi tapahtua? Näytä, että ne pätevät kohdan (a) lukkiutumisskenaariossa kohdassa (b) antamillesi konkreettisille resursseille (A, B ja C).
       
  3. [9 p] Semaforit. Prosessit P ja Q voivat suorittaa laskentavaiheen A vasta kun prosessi R on päässyt tiettyyn kohtaan t omaa suoritustaan. Prosessi R voi jatkaa suoritustaan kohdan t jälkeen vasta kun P ja Q ovat suorittaneet laskentavaiheen A loppuun.
    1. [6 p] Toteuta tämän synkronointiongelman ratkaisu semaforeilla. Anna pseudokoodi prosesseille P, Q ja R. Selitä kaikkien käyttämiesi semaforien käyttötarkoitus ja anna niiden alkuarvot.
    2. [3 p] Oletetaan edelleen, että edellämainittu prosessien P, Q ja R välinen synkronointiongelma toistuu monta kertaa saman suorituksen aikana. Jos tarvitaan, muokkaa kohdan (a) ratkaisusi sellaiseksi, että se toimii myös tässä tapauksessa. Selitä, miksi synkronointiratkaisusi toimii myös peräkkäisillä suorituskerroilla.

  4. [9 p] Monitori.
    1. [2 p] Miten monitori ratkaisee kriittisen vaiheen ongelman? Mistä kriittinen alue alkaa ja mihin se loppuu?
    2. [3 p] Miten monitori ratkaisee synkronointiongelman? Miten ratkaisu eroaa semaforien käytöstä?
    3. [2 p] Missä eri kohdissa monitorissa suorittavat prosessit voivat joutua odottamaan suoritusvuoroaan?
    4. [2 p] Mitä tarkoittaa käsite monitorin signalointisemantiikka? Anna koodiesimerkki tilanteesta, jossa koodi toimii IRR-semantiikalla, mutta ei signal-and-continue semantiikalla.