581332 Rinnakkaisohjelmointi, koe 13.8.2010         in EnglishOther side in English

Kirjoita jokaiseen vastauspaperiisi kurssin nimi, pvm, oma nimi, nimikirjoitus ja opiskelijanumero.
  1. [18 p] Kriittisen vaiheen ongelma. Tarkastellaan tilannetta, jossa 5 prosessia on samanaikaisesti suorittamassa koodialuetta, johon sisältyy (korkean tason kielen) koodinpätkä "X = X+1". Kokonaislukuarvoinen muuttuja X on yhteisessä muistissa ja sen alkuarvo on nolla (0). Koodinpätkän "X = X+1" tarkoituksena on pitää kirjaa koodialueen suorittaneiden prosessien lukumäärästä. Oletetaan aluksi, että koodinpätkää "X=X+1" ei ole suojattu kriittisenä vaiheena.
    1. Mitkä kaikki X:n arvot ovat mahdollisia laskennan loputtua?
    2. Anna konekäskytason skenaario, missä muuttujan X loppuarvo on yksi (1).
    3. Anna konekäskytason skenaario, jossa tämä kriittisen vaiheen ongelma ei ilmene. Mikä on muuttujan X loppuarvo tässä tapauksessa? Mitä se käytännössä tarkoittaa, kun ohjelma toimii oikein tässä skenariossa?
    4. Miten suojaisit tämän kriittisen vaiheen yhden suorittimen ympäristössä? Perustele. Miksi juuri tälla tavoin eikä jollain muulla tavalla?
    5. Miten suojaisit tämän kriittisen vaiheen usean suorittimen ympäristössä? Perustele. Miksi juuri tälla tavoin eikä jollain muulla tavalla?
    6. Oletetaan nyt, että laskenta on hajautettu. Mitä se (hajautettu laskenta) tarkoittaa käytännössä? Miten koodinpätkä "X = X+1" pitäisi nyt toteuttaa ja kuinka sen kriittinen vaihe tulisi nyt suojata?
       
  2. [9 p] Ohjelmassa on N säiettä ja laskenta koostuu useasta erillisestä vaiheesta (vaiheet 1, 2, ..., i, i+1, ...). Kunkin säikeen pitää saada suoritettua nykyinen laskennan vaihe (vaihe i) loppuun, ennen kuin mikään niistä voi jatkaa suoritusta seuraavasta vaiheesta (vaihe i+1). Sama synkronointiongelma toistuu nyt uuden vaiheen (vaihe i+1) kanssa.

    Anna tämän synkronointiongelman ratkaisu monitoria käyttämällä. Selitä, miksi ratkaisusi on oikein. Huomaa, että ainoastaan synkronointiongelman ratkaisun tulee olla monitorissa ja itse laskenta tapahtuu monitorin ulkopuolella. Tee tarvittavat oletukset monitoristasi.
     

  3. [9 p] Tuottaja-kuluttaja -ongelma. Tuottajia ja kuluttajia on kumpiakin useita (K). Puskurin koko on rajallinen (N). Kuvaile ongelma ja anna sille semaforien käyttöön perustuva ratkaisu. Tee tarvittavat oletukset semaforeistasi. Minkälaisia synkronointi ja/tai kommunikointiongelmia tähän ongelmaan liittyy ja kuinka ne on ratkaistu?