Tietokoneen toiminta, kevät 2001

Harjoitus 5

Käsitellään harjoitusryhmissä keskiviikkona 30.5.2001.

  1. Pariteettibittien käyttö
    1. Millaisia bittivirheitä pariteettibitti huomaa?
    2. Poikittais- ja pitkittäispariteetissa jokaisen 7 bitin tavun perässä on pariteettibitti. Tämän lisäksi aina 7 peräkkäistä tavua tarkistetaan vielä ns. poikittaispariteetilla:
              1 0 0 0 1 0 0 P
              0 1 1 1 0 1 0 P
              1 0 0 1 0 1 1 P
              0 1 0 1 0 0 1 P
              1 0 1 0 1 1 0 P
              0 0 1 0 1 1 0 P
              1 1 1 0 0 1 0 P
              P P P P P P P P
      
      Millaisia bittivirheitä nyt huomataan? Löytyykö virhekombinaatioita, joita ei huomata?

    3. Hamming-koodi
      1. Kirjainmerkkien A ja B ASCII-koodit ovat kymmenjärjestelmässä 65 ja 66. Esitä merkkijono AB biteillä Hamming-koodia käyttäen.
      2. Oletetaan, että 7. bitti vasemmalta on muuttunut. Näytä, miten Hamming-koodi havaitsee ja korjaa muuttuneen bitin. Entä miten käy, jos kaksi bittiä muuttuu?
      3. Miksi Hamming-koodin käyttö ei ole hyvä ratkaisu langattomien verkkojen tiedonsiirron turvaamiseen?

    4. Välimuisti. Oletetaan, että tiedon (1 sana) saantiaika välimuistista on 2ns ja tavallisesta muistista 10 ns per sana. Välimuistin lohkon (rivin) koko on neljä sanaa. Oletetaan, että välimuistia käytettäessä 97% muistiviitteistä löytyy välimuistista. Voit (epärealistisesti) olettaa, että välimuistista löytyy aina tilaa uudelle lohkolle ja että tiedon siirtoaika MBR:stä rekisteriin on nolla.
      1. Jos välimuistia ei käytetä, niin kauanko keskimääräisesti kestää datan (1 sana) lukeminen rekisteriin?
      2. Jos välimuistia käytetään, niin kauanko keskimääräisesti kestää datan (1 sana) lukeminen rekisteriin?
      3. Miten prosessi tietää, löytyikö tieto välimuistista vai ei?
      4. Miten sovelluksen käyttäjä (ihminen) tietää, löytyikö tieto välimuistista vai ei?
      5. Miten käyttäjä (ohjelmoija) voi vaikuttaa välimuistin tehokkuuteen?

    5. Prosessi.
      1. Mitä tapahtuu, jos Ready-to-Run jono on tyhjä?
      2. Voiko samasta ohjelmasta olla monta prosessia yhtä aikaa Ready-to-Run jonossa? Miten tai miksi ei?
      3. Kumpi kestää kauemmin, aliohjelman kutsu vai prosessin vaihto? Miksi?
      4. Kuuluuko välimuistin sisältö prosessin suoritinympäristöön vai ei? Miksi?
      5. Kuuluvatko R6 ja R7 prosessin suoritinympäristöön vai ei? Miksi?
      6. Kuuluvatko PC ja IR prosessin suoritinympäristöön vai ei? Miksi?
      7. Kuuluvatko MAR ja MBR prosessin suoritinympäristöön vai ei? Miksi?

    6. Selitä yksityiskohtaisesti, kuinka prosessori ja käyttöjärjestelmä toimivat, kun suorituksessa olevan prosessin aikaviipale täyttyy. Selostuksestasi tulee siis käydä ilmi vastaukset ainakin seuraaviin kysymyksiin:
      1. Mistä CPU tietää, että viipale on täysi?
      2. Miten CPU saadaan suorittamaan käyttöjärjestelmää?
      3. Miten CPU otetaan pois vanhalta prosessilta?
      4. Miten se annetaan uudelle prosessille? Mille?
      5. Anna esimerkkejä tilanteista, jolloin on järkevää, että keskeytyksen käsittelyn jälkeen jatketaan eri käyttäjäprosessia (user process) kuin mikä oli suoritusvuorossa keskeytyksen tapahtuessa. Anna myös esimerkkejä tilanteista, jolloin keskeytyksen jälkeen on järkevää jatkaa saman prosessin suoritusta.

    7. Oletamme, että virtuaalimuistijärjestelmässä
      • sivun koko on 1 kB (1024 tavua)
      • ohjelman osoiteavaruus on 1 MB (1024 x 1024)
      • käytetään tavuosoitteita.
      1. Miten monta alkiota on sivutaulussa? Miten monta sivutilaa on keskusmuistissa?
      2. CPU suorittaa ohjelmaa, joka viittaa muuttujaan osoitteessa 2060. Selvitä miten tämän muuttujan todellinen muistiosoite saadaan, kun viitattu sivu sijaitsee viittaushetkellä keskusmuistin sivutilassa 10.
      3. Mitä tapahtuu, jos ko. sivu ei ole muistissa? Miten sivun puuttuminen havaitaan?