Tietokoneen toiminta, Kevät 2011, Harjoitus 5

Nämä tehtävät tehdään etukäteen ja käsitellään harjoituksissa 5. kurssiviikolla 14.2. - 18.2.2011.

Harjoitukset pohjautuvat verkkoluentoihin 8 ja 9.
Jos haluatte mieluummin käyttää Authorware versioita, niin ne saa verkkoluentojen koostesivulta.

Opintopiirien loppuraportin tehtävät ja palautusohjeet on nyt julkaistu kurssin opintopiirisivulla. Jos haluatte opintopiirillenne keskustelupalstan tai wikin moodleen, niin ottakaa yhteyttä luennoijaan sähköpostilla.

Tehtävät:

  1. Oletetaan, että TTK-91 -koneelle on tehty käyttöjärjestelmä. Käyttöjärjestelmään kuuluu yhtenä osa-alueena prosessien hallinta. Oletetaan, että kellolaitekeskeytyksen takia ollaan päädytty tilanteeseen, jossa suoritusvuorossa olevaa prosessia vaihdetaan.
    1. Miten ja mihin aikaisemmin suorituksessa olleen prosessin tiedot talletetaan? Mitkä tiedot täytyy ottaa talteen (esim. SP, IR, MAR, MBR, TR, jne)?
    2. Miten ja mistä uuden prosessin tiedot saadaan suorittimelle? Mistä käskystä uuden prosessin suoritus alkaa? Miten suoritusvuoro vaihtuu uudelle prosessille?
    3. Mikä on suorittimen tila (käyttäjä, etuoikeutettu) alkaen juuri ennen kellolaitekeskeytyshetkeä siihen asti kun uuden prosessin ensimmäisen käsky suoritetaan?

  2. Prosessin tilat. Luennolla 8 [Stal06, Ch 8.2] esitettiin prosessin elinkaarimalli, jossa prosessilla on 5 erilaista tilaa. Anna kullekin allaolevalle tilanteelle luonteeltaan kaksi (2) erilaista tapahtumaesimerkkiä. Mainitse myös, mikä (esim. mikä prosessi) aiheutti tilasiirtymän ja mitä tilanmuutoksessa tapahtuu käyttöjärjestelmän tietorakenteissa?
    1. Prosessi P siirtyy "luonti" tilasta "odottaa" tilaan.
    2. Prosessi P siirtyy "suorituksessa" tilasta "odottaa" tilaan.
    3. Prosessi P siirtyy "valmis suoritukseen" tilasta "suorituksessa" tilaan.
    4. Prosessi P siirtyy "suorituksessa" tilasta "valmis suoritukseen" tilaan.
    5. Prosessi P siirtyy "valmistunut tai tapettu" tilaan.
  3. Muistiinkuvattu I/O. Esimerkissä driver.k91 on kuvattu laiteajuri suoraa I/O toteutusta käyttäen.
    1. Miten laiteajuri tietää, että laite on tulostanut annetun luvun?
    2. Mitä laiteajuri tekee sillä aikaa kun laite on tulostamassa lukua? Kauanko tähän voi kulua aikaa?
    3. Miten laite (laiteohjain) kertoo laiteajurille, että laitteelle annettu tehtävä on suoritettu?
    4. Miten varsinainen (laiteajuria kutsunut) sovellusohjelma saa tietää, että laitteelle annettu tehtävä on suoritettu? 
  4. Oletetaan, että levyn pyörimisnopeus on 7200 rpm, siinä on yksi luku/kirjoituspää per levypinta, sylintereiden (uraa per levypinta) lukumäärä on 2000, joka uralla on 50 sektoria ja sektorin koko on 0.5 KB. Otaksumme (epärealistisesti), että hakuvarren siirtoaika on lineaarinen urien lukumäärän suhteen ja että se on 0.02 ms per ura. Otaksumme (epärealistisesti), että luettavan tiedoston jokaisen sektorin sijainti on täysin satunnainen levyllä, mistä saadaan todennäköisyyslaskentaa käyttäen keskimääräiseksi ylitettävien urien lukumääräksi 667. Otaksumme edelleen (epärealistisesti), että tiedosto luetaan levyltä yksi sektori kerrallaan. Kauanko kestää 333.33 KB tiedoston lukeminen levyltä keskimäärin? Entä 24 MB tiedoston lukeminen?
  5. Tee tason D TitoTrainer tehtävät d-210, d-220, d-350 ja d-400.
    (Voit samantien toki tehdä kaikki muutkin d-tason tehtävät.)


Tiina.Niklander@cs.helsinki.fi