Käyttöjärjestelmät (8 op), erilliskoe 15.9.2015

Kirjoita jokaiseen vastauspaperiisi kurssin nimi, pvm, oma nimi, nimikirjoitus ja opiskelijanumero.
Kuhunkin tehtävään riittää 1 sivun vastaus.
Tämä koe on tavallinen erilliskoe, sen koealue on koko kurssi ja arvosana määräytyy ainoastaan kokeen perusteella.

  1. [6 p] Prosessien välinen synkronointi
    1. [3 p] Selitä, mikä on lukijat/kirjoittajat ongelma. Mitä synkronointiongelmia siihen sisältyy? Mitä kommunikointiongelmia siihen sisältyy? Kuka odottaa ja ketä ja milloin?
    2. [3 p] Meillä on 80 merkin puskuri B, johon prosessi P aika ajoin kirjoittaa ja josta prosessi Q aika ajoin lukee. Jos B on täynnä, P:n täytyy odottaa kunnes sinne tulee tilaa. Jos B on tyhjä, Q:n täytyy odottaa kunnes sinne tulee merkkejä. Toteuta P:n ja Q:n välinen synkronointi semaforien avulla.

  2. [6 p] Lukkiutuminen
    1. [2 p] Anna konkreettinen esimerkki, jossa prosessit P, Q ja R lukkiutuvat. Määrittele prosessien mahdollisesti käyttämät resurssit ja anna lukkiutumiseen johtava skenaario pseudokoodina.
    2. [2 p] Mitkä neljä ehtoa tulee olla voimassa, jotta lukkiutuminen voi ylipäätänsä tapahtua?
      Näytä, että nuo ehdot pätevät edellisen kohdan esimerkissäsi.
    3. [2 p] Millä tavoin resurssien varausjärjestystä muuttamalla voit varmistaa, että lukkiutumista ei voi tapahtua. Miksi antamasi ratkaisu takaa, että lukkiutumista ei voi tapahtua? Kuinka tämä ratkaisu toteutetaan ensimmäisen kohdan esimerkissäsi pseudokooditasolla?

  3. [6 p] Virtuaalimuisti
    1. [3 p] Minkä ongelman kello-algoritmi (Clock) ratkaisee ja kuinka se pääpiirteissään toimii?
    2. [3 p] Minkä ongelman Page Fault Frequency -algoritmi (PFF) ratkaisee ja kuinka se pääpiirteissään toimii?

  4. [6 p] Vuoronanto (skedulointi)
    1. [3 p] Miksi aikaviipalevuoronanto (RR, Round Robin) ei ole oikein hyvä reaaliaikajärjestelmien vuoronantoon? Anna joku reaaliaikajärjestelmään sopiva vuoronantoalgoritmi, kerro miksi se on parempi kuin RR ja kuvaa sen toiminnan pääperiaatteet.
    2. [3 p] Miksi aikaviipalevuoronanto (RR, Round Robin) ei ole oikein hyvä moniprosessorijärjestelmän vuoronantoon? Anna joku moniprosessorijärjestelmään sopiva vuoronantoalgoritmi, kerro miksi se on parempi kuin RR ja kuvaa sen toiminnan pääperiaatteet.

  5. [6 p] Tiedostojen hallinta
    1. [4 p] Mikä on indeksoitu sarjallinen tiedosto (ISF) ja kuinka se eroaa sarjallisesta tiedostosta (SF)? Milloinka ISF:ää kannattaa käyttää SF:n asemesta? Missä tapauksessa ISF:n käyttö on hitaampaa kuin SF:n käyttö? Kuinka monta indeksiä ISF:ssä on ja kuinka suuria ne ovat?
    2. [2 p] Anna konkreettinen esimerkki tilanteesta, jossa ISF on parempi kuin SF, kun käytössä on 1000000 tietueen tiedosto. Miten indeksiä käytetään ja mitä hyötyä sillä saavutetaan?

  6. [6 p] Etäproseduurin kutsu (RPC, Remote Procedure Call)
    1. [2 p] Mikä on RPC? Miten se eroaa tavallisesta aliohjelman (proseduurin, metodin) kutsusta? Mitä yhteistä sillä on tavallisen aliohjelmakutsun kanssa?
    2. [2 p] Kuinka RPC toteutetaan? Minkälaisessa tilanteessa RPC:tä on hyvä käyttää ja minkälaiseen tilanteeseen se ei sovi?
    3. [2 p] Mikä on asynkroninen RPC ja miten sen käyttö eroaa normaalista synkronisesta RPC:stä? Mitä hyötyä siitä voisi olla synkroniseen RPC:hen verrattuna?