Yliopiston etusivulle Suomeksi På svenska In English
Helsingin yliopisto Tietojenkäsittelytieteen laitos
 

Tietojenkäsittelytieteen laitos

Suomeksi In English Laskuharjoitus

Rinnakkaisohjelmointi, S2006, LH 4

Nämä tehtävät käsitellään harjoituksissa viikolla 47, 20-24.11.2006.

Liittyy tehtäviin 2-4:
Ohjelma PlusMinus. Meillä on yhteisessä muistissa 6 muuttujaa: X1, X2, X3, X4, Ctrl ja Sum. Kaikkien alkuarvo on nolla. Meillä on viisi laskentaprosessia, jotka suorittavat 50 kertaa loopin, jonka kriittinen vaihe on:

  • Jos muuttujan Ctrl arvo on pariton, vähennä kustakin Xi'stä luku 1. Muutoin lisää niihin luku 2.
  • Lopuksi lisää 1 muuttujaan Ctrl ja laske muuttujien Xi summa muuttujaan Sum.
Kun laskentaprosessit ovat lopettaneet, tulostetaan kaikkien kuuden muuttujan arvot.

Kun toteutat tämä BACI'lla, käytä synkronointiin ainoastaan (muita) yhteisiä muuttujia. Mahdolliset odotukset voi toteuttaa busy-wait -tyyppisinä looppeina: while (xx != 1) {};.
Lopulta BACI'n prosessien hallinta antaa vuoron myös muille prosesseille, eli odotus ei ole ikuista, jos joku muu prosessi on suorituskelpoinen.
  1. Tehtävät 5.1 ja 5.3 oppikirjasta.
     
  2. Tee BACI'lla ohjelmasta PlusMinus versio, jossa kriittisen vaiheen suojaus ei toimi. Miten tämä ilmenee?
     
  3. Tee BACI'lla ohjelmasta PlusMinus versio, jossa kriittisen vaiheen suojaus toimii oikein. Miten tiedät, että ohjelmasi toimii oikein? Perustele.
     
  4. Tee BACI'lla ohjelmasta PlusMinus versio, joka voi lukkiintua. Mikä siinä on oleellisesti väärin eli missä on vika? Miten lukkiintuminen ilmenee BACI-ohjelmassasi eli miten tiedät ohjelmasi lukkiutuneen?
     
  5. Näytä, että lukkiutumisen neljä ehtoa täyttyvät risteysesimerkissä (ks. Fig. 6.1 [Stall05], tai luento 6 kalvo 5).
     
  6. Tarkastellaan lukkiutumisen välttämistä pankkiirin (Banker) algoritmin avulla (ks. Fig. 16.11 [Bacon93], tai luento 6 kalvot 33-34)
    1. Prosessi P2 pyytää vapaana olevaa resurssia R5. Voiko sen antaa ilman lukkiutumisvaaraa?
    2. Prosessi P4 pyytää vapaana olevaa resurssia R5. Voiko sen antaa ilman lukkiutumisvaaraa?

     

Teemu Kerola 23.11.2006 9:07