581332-8 Rinnakkaisohjelmistot Erilliskuulustelu 10.6.2005
Kirjoita jokaiseen vastauspaperiisi nimikirjoituksesi ja nimen selvennys sekä kokeen nimi että päivämäärä. Vastausohjeita:

  1. Vastaa lyhyesti seuraaviin kysymyksiin. (15 p)
    1. Tarkastellaan seuraavaa ohjelmaa
             int  x= 0, y =4;
             co  while (x!=y)  x=x+1;
             //    while (x!=y)  y=y-1;
             oc 
      Päättyykö ohjelman suoritus aina /joskus/ ei koskaan? Perustele vastauksesi. (5 p)
    2. Miten etäproseduuri eroaa tavallisesta proseduurista? Mitä etäproseduuria kutsuttaessa tapahtuu kutsuvalle prosessille ja kutsutulle proseduurille? (4 p)
    3. Mihin ns. pankkiirin algoritmia käytetään? Mikä on pankkiirin algoritmin perusidea? Mitä tapahtuu asiakkaalle, jos pankkiiri ei suostu asiakkaan pyyntöön? Mitä tapahtuu, jos resurssimanageri antaa resurssiyksikön, vaikka pankkiirin algoritmin mukaan ei pitäisi? (6 p)
  2. 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.

  3. 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.

  4. 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.