581332-8 Rinnakkaisohjelmistot

Erilliskuulustelu 18.8.2006
Kirjoita jokaiseen vastauspaperiisi nimikirjoituksesi ja nimen selvennys sekä kokeen nimi että päivämäärä.

  1. Vastaa lyhyesti seuraaviin kysymyksiin [15p]
    1. Mitä tarkoittaa, että tietty toimenpidesarja on suoritettava "atomisena"? Käytä esimerkkinä toimenpidesarjaa < x = x+1; y = y+1; >. (3 p)
    2. Mitä tarkoittaa lukkiutuminen (deadlock)? Miten se eroaa nälkiintymisestä (starvation)? Lukkiutuminen on mahdollista vain tiettyjen ehtojen ollessa voimassa. Mitkä nämä ehdot ovat? Selitä, mitä kukin ehto tarkoittaa resurssien jakelussa. (6 p)
    3. Miten etä proseduuri eroaa tavallisesta proseduurista? Mitä etäproseduuria kutsuttaessa tapahtuu kutsuvalle prosessille ja kutsutulle proseduurille? (3 p)
    4. Miten monitorin signal-operaatiolle määritellyt toimintatavat "Signal and Wait" ja "Signal and Continue" eroavat toisistaan? Miksi tällaisia täsmennyksiä on tarpeen määritellä ? (3 p)

  2. Semaforilla tahdistettu karuselli [15 p]
    Huvipuistossa on N asiakasprosessia ja yksi karuselliprosessi. Asiakkaat ajelevat kerta toisensa jälkeen karusellissa, johon mahtuu kerrallaan C asiakasta (C on pienempi kuin N). Karuselli käynnistyy kuitenkin vasta, kun se on täynnä . Kunkin ajokerran jälkeen kaikki kyydissä olleet poistuvat karusellista muihin puuhiin (kenties palatakseen karuselliin myöhemmin) ja karuselli täyttyy taas seuraavista huvittelijoista.

    Kirjoita asiakasprosessien ja karuselliprosessin koodien keskeiset osat, kun prosessien koordinointiin käytetään semaforeja. Karusellissa istuminen on asiakkaan koodissa pelkkää odotusta.

  3. Monitoroitu purnukka [15 p]
    Mehiläisparvi ruokkii loukkuun joutunutta karhua keräämällä sille hunajaa. Karhun elämä loukussa 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, ja mehiläiset jäävät odottamaan purnukan tyhjenemistä. Kun karhu on tyhjentänyt purkin, se päästää mehiläiset taas töihin ja käy itse nukkumaan.

    Ohjelmoi purnukan käyttöä synkronoivat osat monitoriin sekä esitä niiden lisäksi mehiläisprosessien (N kpl) ja karhuprosessin koodi.

  4. Sanomanvä litystä ja yhteinen pankkitili [15 p]
    Pankkitili on usean henkilön käytössä, joista jokainen voi tallettaa tilille tai nostaa tililtä rahaa. Tili ei saa koskaan mennä negatiiviseksi. Koodaa palvelin, joka huolehtii tilin käytöstä. Asiakkaat voivat pyytää joko jonkun rahasumman talletusta tai rahasumman nostoa. Jos tilillä ei ole tarpeeksi rahaa, niin pyyntöä viivytetään. Asiakkaat ja palvelin käyttävät sanomanvälitystä kommunikointiin.

Muistin virkistämiseksi =>