581332 Rinnakkaisohjelmointi, koe 14.6.2013
Other side in English
Kokeen perusteella kurssista saa 6 op, jos 2 op projekti on tehty, ja 4 op muutoin.
Jos olet tehnyt 2 op projektin luentokurssin yhteydessä, mainitse asiasta ja kerro minä vuonna projektisi on tehty.
Kirjoita jokaiseen vastauspaperiisi
kurssin nimi, pvm, oma nimi, nimikirjoitus ja opiskelijanumero.
- [9 p] Kriittisen vaiheen ongelma
- 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. Miksi tulos on nyt oikein kaikissa mahdollisissa skenaarioissa?
- 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 pseudokooditasolla käyttämälläsi menetelmällä.
- [9 p] Lukkiutuminen
- [2 p] Mikä on lukkiutumisongelma? Anna joku konkreettinen (pseudokoodi) esimerkki lukkiutumisesta.
- [3 p] Miten lukkiutuminen voidaan havaita? Mitä tehdään, jos lukkiutuminen havaitaan?
- [2 p] Selitä Pankkiirin algoritmin (Banker's Algorithm) pääperiaatteet lukkiutumisen estämiseksi ennakolta. Kuinka se toimisi kohdan (a) esimerkissäsi?
- [2 p] Anna joku muu konkreettinen menetelmä kuin Pankkiirin algoritmi lukkiutumisen estämiseksi ennakolta. Mihin periaatteeseen ratkaisu perustuu? Kuinka se toimisi kohdan (a) esimerkissäsi?
- [9 p] Monitori
- Miten kriittisen vaiheen ongelman ratkaisu tehdään monitorissa? Miten ratkaisu eroaa semaforiratkaisusta?
- Miten synkronointiongelman ratkaisu tehdään monitorissa? Miten ratkaisu eroaa semaforiratkaisusta?
- Mitä tarkoittaa käsite "monitorin signalointisemantiikka"? Miten se vaikuttaa (i) monitorin toteutukseen ja (ii) monitoria kutsuvan rutiinin toteutukseen?
- [9 p] Tuottaja-kuluttaja -ongelma. Tuottajia ja kuluttajia on kumpiakin yksi kappale. Puskurin koko on ääretön.
- [2 p] Kuvaile ongelma. Erityisesti kerro, mitä synkronointi- ja kommunikointiongelmia tähän liittyy.
- [2 p] Mitä "äärettömän suuri" puskuri käytännössä tarkoittaa ja kuinka se käytännössä toteutetaan? Miten tämä "äärettömän suuri" puskuri vaikuttaa ongelman ratkaisulogiikkaan (verrattuna äärellisen kokoiseen puskuriin)?
- [5 p] Anna ongelman ratkaisu semaforien avulla.
Esitä tuottajan ja kuluttajan pseudokoodi. Määrittele selkeästi kaikki käyttämäsi semaforit ja muut tietorakenteet alkuarvoineen. Selitä, miksi ratkaisusi on oikein.