581332-8
Rinnakkaisohjelmistot Erilliskuulustelu
10.6.2005
Kirjoita
jokaiseen vastauspaperiisi nimikirjoituksesi ja nimen selvennys sekä
kokeen nimi että päivämäärä.
Vastausohjeita:
int x= 0, y =4; co while (x!=y) x=x+1; // while (x!=y) y=y-1; ocPäättyykö ohjelman suoritus aina /joskus/ ei koskaan? Perustele vastauksesi. (5 p)
Museokäynti semaforeilla tahdistettuna (15 p)
Museoon järjestetään vain opastettuja
kiertokäyntejä. Museoon halukkaat odottavat sisä-pihalla,
kunnes opas saapuu ja aloittaa uuden kierroksen. Kuitenkin, jos
ryhmän koko on pienempi kuin 10, niin opas jää
odottamaan lisää vierailijoita. Museokierroksen jälkeen
vierailijat poistuvat museosta muihin puuhiinsa ja opas varautuu
opastamaan seuraavaa ryhmää. Oletetaan, että museossa
kävijät ja opas ovat prosesseja ja niiden synkronointiin
käytetään semaforeja. Kirjoita prosessien toimintoja
synkronoivat tarpeelliset koodit opasprosessille ja
vierailijaprosesseilla.
Mehiläisparvi monitorissa (15 p)
Mehiläisparvi
ruokkii loukkuun joutunutta karhua keräämällä
sille hunajaa. Karhun elämä loukossa on vain syömistä
ja odottelua. Mehiläiset kuljettavat hunajaa purnukkaan annos
kerrallaan. Kun purnukka on täynnä (H annosta), viimeisen
annoksen tuonut mehiläinen herättää karhun
ennenkuin poistuu paikalta. Seuraavat paikalle saapuvat mehiläiset
jäävät odottamaan purnukan tyhjenemistä. Kun
karhu on tyhjentänyt purkin, se päästää
mehiläiset töihin ja käy itse nukkumaan.
Ohjelmoi
purnukan täyttö ja tyhjentäminen monitoriin ja esitä
mehiläisprosessien (N kpl) ja karhuprosessin koodi. Selvitä
vielä sanallisesti missä tilanteissa tarvitaan
poissulkemista ja synkronointia ja kuinka ne toteutuvat
ratkaisussasi.
Tahdistusta sanomilla (15 p)
Laskenta on jaettu
rinnakkaisuuden saavuttamiseksi N:lle eri prosessille. Niihin on
ohjelmoitu vikasietoisuutta varten joukko tahdistuspisteitä:
jos jotain mene pieleen, voidaan jatkaa myöhemmin jostain
tahdistuspisteestä. Aina kun prosessin suoritus saapuu
tahdistuspisteeseen, se tallettaa sen hetkiset tilatietonsa levylle.
Tallettamisensa se saa tehdä vasta, kun kaikki muutkin
prosessit ovat saaneet tahdistusta edeltävät vaiheet
valmiiksi ja päässeet omaan tahdistuspisteeseen. Suoritus
saa jatkua laskennan seuraavaan vaiheeseen vasta, kun kaikki ovat
saaneet tallettamisensa valmiiksi.
Prosessien välinen
kommunikointi perustuu sanomanvälitykseen. Esittele
kommunikoinnissa tarvittavat kanavat ja kirjoita tahdistukseen
tarvittavat koodin osat.