Käyttöjärjestelmät (8 op), erilliskoe 13.9.2016                in EnglishOther side in English

Kirjoita jokaiseen vastauspaperiisi kurssin nimi, pvm, oma nimi, nimikirjoitus ja opiskelijanumero. Tämä koe on tavallinen erilliskoe. Vastaa kaikkiin kysymyksiin. Kuhunkin tehtävään riittää 1-2 sivun vastaus. Kokeen arvostelu tapahtuu vasta 18.9.2016 jälkeen.

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

  2. [6 p] Lukkiutuminen
    1. [3 p] Kuinka prosessien lukkiutuminen voidaan havaita. Kuinka näin havaitusta lukkiutumisesta voi toipua?
    2. [3 p] Lukkiutuminen voidaan ennakolta estää varaamalla resurssit aina tietyssä järjestyksessä. Miksi tämä menetelmä varmasti estää lukkiutumiset? Mikä ongelma tässä lukkiutumisongelman ratkaisussa on?

  3. [6 p] Virtuaalimuisti
    1. [3 p] Miten yksitasoisen sivuttavan virtuaalimuistin osoitteenmuunnos tapahtuu laitteisto- ja ohjelmistotasolla? Kuinka kauan osoitteenmuunnos kestää eri tapauksissa? Älä unohda TLB:tä.
    2. [3 p] Mitä virtuaalimuistiin liittyvän ongelman Page Fault Frequency (PFF) algoritmi ratkaisee? Kuinka ratkaisu pääpiirteissään toimii?

  4. [6 p] Shortest Process Next (SPN) vuoronantomenetelmä
    1. [2 p] Minkä ongelman SPN tarkalleen ottaen ratkaisee? Mihin ominaisuuteen sana "Shortest" viittaa SPN:n yhteydessä?
    2. [2 p] Kuinka se toimii pääpiirteittäin? Miksi se on parempi kuin FIFO?
    3. [2 p] Miten tiedetään, mikä on ”shortest process”, jos pituustietoa ei ole annettu? Miten se lasketaan?

  5. [6 p] Tosiaikajärjestelmien vuoronanto (real time scheduling)
    1. [2 p] Miksi tosiaikajärjestelmissä ei voi yleensä käyttää samoja vuoronantomenetelmiä (esim. FIFO tai prioriteettipohjaiset ratkaisut) kuin tavallisissa järjestelmissä?
    2. [2 p] Rate Monotonic Scheduling (RMS) on kuitenkin prioriteettipohjainen vuoronanto menetelmä nimenomaan tosiaikajärjestelmiin. Milloin sitä voidaan käyttää ja kuinka se toimii? Kuinka prioriteetit määräytyvät?
    3. [2 p] Mikä on realiaikajärjestelmissä joskus esiintyvä prioritetin kääntymisongelma (priority inversion)? Kuinka se voidaan ratkaista?

  6. [6 p] Levyjen hallinta
    1. [2 p] Minkä levyjen hallintaan liittyvän ongelman SCAN (hissi) algoritmi ratkaisee?
      Kuinka SCAN pääpiirteissään toimii?
    2. [2 p] Miksi C-SCAN (Circular SCAN) on parempi kuin SCAN? Minkä SCAN-algoritmiin liittyvän ongelman se ratkaisee? Kuinka ratkaisu toimii?
    3. [2 p] Minkä C-SCAN'iin liittyvän ongelman Linuxin Anticipatory Scheduler algoritmi ratkaisee? Miten se ratkaisu pääpiirteissään toimii?