581332 Rinnakkaisohjelmointi, koe 19.11.2010
Other side in English
Kirjoita jokaiseen vastauspaperiisi
kurssin nimi, pvm, oma nimi, nimikirjoitus ja opiskelijanumero.
- [9 p] Kriittisen vaiheen ongelma
- Mikä on kriittisen vaiheen ongelma?
Anna konkreettinen esimerkki tilanteesta, jossa kriittisen vaiheen ongelma ilmenee.
- Milloin kriittisen vaiheen ongelman ratkaisu busy wait -silmukan avulla olisi järkevää ja milloin ei? Perustele. Kuinka ratkaiset ongelman busy wait -silmukan avulla?
- Milloin kriittisen vaiheen ongelman ratkaisu semaforin avulla olisi järkevää ja milloin ei? Perustele. Kuinka ratkaiset ongelman semaforin avulla?
- [9 p] Lukkiutuminen.
- Mikä on lukkiutumisongelma? Anna Aterioivien filosofien ongelmaan pohjautuva konkreettinen esimerkki lukkiutumisesta.
- Mitkä neljä ehtoa täytyy olla voimassa, jotta lukkiutuminen voisi tapahtua? Näytä, että ne pätevät esimerkissäsi.
- Selitä pääpiirteissään Dijkstran algoritmi (DDA) lukkiutumisen havaitsemiseksi.
- Kuinka estäisit lukkiutumisen ennakolta? Anna yksi ratkaisumenetelmä ja näytä, kuinka se toimii Aterioivien filosofien ongelman ratkaisussa.
- [9 p] Monitori.
- Mikä on monitori? Miten monitori ratkaisee kriittisen vaiheen ongelman?
- Missä kaikkialla monitorissa suorittavat prosessit voivat joutua odottamaan suoritusvuoroaan? Anna kustakin tavasta esimerkki, josta selviää miksi/milloin ne joutuvat odottamaan ja miten/milloin ne pääsevät suoritukseen.
- Mitä tarkoittaa käsite monitorin signalointisemantiikka? Miten monitorin signalointisemantiikka vaikuttaa monitorin toteutukseen? Anna konkreettinen pseudokäskytason esimerkki.
- [9 p] Kuvaile tuottaja-kuluttaja -ongelma. Tuottajia ja kuluttajia on kumpiakin useita ja puskurin koko (N) on äärellinen. Anna ongelman ratkaisu semaforeja käyttämällä. Minkälaisia synkronointi ja/tai kommunikointi ongelmia tehtävään liittyy ja kuinka ne on ratkaistu?