581332 Rinnakkaisohjelmistot

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

Vastausohjeita:

  1. Lukkiutumisesta ja vähän nälkiintymisestä [15p]
    1. Mitä tarkoitetaan lukkiutumisella (deadlock) ja nälkiintymisellä (starvation)? Anna aterioiviin filosofeihin perustuvat esimerkit lukkiutumisesta ja nälkiintymisestä. (5p)
    2. Mitkä ovat lukkiutumistilanteen syntymiselle välttämättömät ja riittävät ehdot ja miten kukin näistä ehdoista täyttyy aterioivien filosofien ongelmassa? (5p)
    3. Miten filosofien tapauksessa lukkiutuminen voitaisiin estää muuttamalla haarukoiden käyttösääntöjä? Tarkastele kutakin sääntöä erikseen. (5p)

  2. Semaforilla tahdistettu ruokinta [15p]
    Lintuemo ruokkii pesässä olevia poikasiaan. Se täyttää ensin pesän keskellä olevan kuopan pienillä madoilla ja kutsuu sitten poikaset syömään. Itse se menee lepäämään. Kuoppaan mahtuu H annosta. Poikaset syövät vuorotellen, kukin ottaa kerralla yhden annoksen ja kuopan tyhjentänyt poikanen herättää emon hakemaan lisää ruokaa.
    Kirjoita koodit emoprosessille ja poikasprosesseille, kun toimintojen koordinointiin käytetään semaforeja.

  3. Monitoroitu silta [15p]
    Kahden kylän A ja B välissä olevan joen yli kulkee niin kapea silta, että autot voivat ajaa sitä pitkin vain yhteen suuntaan kerrallaan. Kun sillalla kulkee autoja A:sta B:hen, niin B:stä A:han haluavien täytyy odottaa. Silta ei myöskään ole kovin vankka, joten sillalla saa olla korkeintaan 10 autoa yhdellä kertaa. Kirjoita koodi sillan käyttöä valvovalle monitorille Silta. Laadi myös koodit autoprosesseille. Käytä 'Signal and Continue' -semantiikkaa. Pyri tekemään ratkaisustasi mahdollisimman reilu. Samalta suunnalta tulevien autojen tulee päästä sillalle saapumisjärjestyksessä eikä kumpikaan suunta saisi vallata siltaa vain yhden suunnan liikenteelle.
    Oikein toimivasta ratkaisusta saa maksimissaan 10 p, reiluuden huomioonottaminen tuo lisää 1-5 p.

  4. Rekiajelua sanomien tahdistamana [15p]
    Kyläjuhlassa lapsille on järjestetty rekiajelua järven jäällä. Lapsia on paljon (n kpl) ja lapset haluavat rekiajelulle yhä uudestaan ja uudestaan. Rekeen mahtuu kerrallaan vain 8 lasta. Reki lähtee liikkeelle vasta, kun se on täynnä lapsia.Aina yhden ajelukierroksen jälkeen reessä olevat lapset poistuvat ja uudet lapset tulevat tilalle.
    1. Esitä kaaviokuvana, kuinka toiminnan toteuttavat prosessit, reen kuljettajaprosessi ja lapsiprosessit, kommunikoivat tahdistaakseen toimintansa oikein, kun prosessien kommunikointiin ja toimintojen tahdistamiseen käytetään sanomanvälitystä. (3p)
    2. Kirjoita koodit reen kuljettajaprosessille ja lapsiprosesseille. Määrittele myös tarvittavat kanavat. (7 p)
    3. Entä, jos rekiä onkin kaksi ja ne kulkevat niin kapeaa uraa, etteivät voi ohittaa toisiaan eli rekien järjestys säilyy koko ajan. Molempiin rekiin mahtuu sama määrä lapsia ja ne lähtevät liikkeelle vasta, kun reki on täynnä. Mitä muutoksia prosessien kommunikointiin ja koodiin tarvitaan, jotta prosessien yhteistoiminta sujuisi? (5p)