Tietokoneen toiminta, kevät 2003

Harjoitus 4

Käsitellään harjoitusryhmissä tiistaina 3.6.2003.

Varaudu harjoituksiin etukäteen tutustumalla käsiteltävään asiaan ja yrittämällä itse tehdä tehtäviä niin paljon kuin mahdollista. Harjoitustilaisuudessa tehtävät sitten 'viimeistellään' ryhmissä.

  1. Järjestelmätietojen suojaus ja yhteiskäyttö?
    1. Miten voidaan estää tilanne, jossa käyttäjän ohjelma vahingossa (tahallaan) kirjoittaa käyttöjärjestelmän muistialueelle?
    2. Miten voidaan estää tilanne, jossa käyttöjärjestelmän ohjelma vahingossa (tahallaan) kirjoittaa sellaiselle käyttöjärjestelmän muistialueelle, johon sen ei pitäisi päästä käsiksi lainkaan?
    3. Miten sallitaan tilanne, että käyttäjän ohjelma käyttää tilapäisesti sellaista käyttöjärjestelmän muistialuetta, johon sillä normaalisti ei olisi pääsyoikeutta?
    4. Miten voidaan estää I/O-laitetta keskeyttämästä käyttöjärjestelmäohjelman tärkeää toimintoa, kun I/O-laite ei edes tiedä mikä ohjelma on kulloinkin suorituksessa saati sitten sitä, milloin jotain tärkeää on tekeillä?

  2. Ttk-91-koneen konekäskyn osoiteosa on vain 16-bittinen. Tämä asettaa rajoituksia käskyssä olevien vakioiden koolle.
    1. Mikä on suurin positiivinen luku, joka voidaan esittää käskyssä vakiona?
    2. Mikä on pienin negatiivinen luku, joka voidaan esittää käskyssä vakiona?
    3. Miten tulee toimia, jos tarvitaankin suurempaa vakiota? Esimerkiksi lukua 500000?
    4. Entä miten tulisi menetellä, jos tarvitaan suurta vakiota indeksoidun osoitusmoodin kanssa? Esimerkiksi, jos halutaan lukea data osoitteesta (R1)+666666?

  3. Tiedon esitys.
    1. Mikä on desimaalijärjestelmän luvun 43.234 binääriesitys?
    2. Mitä desimaalijärjestelmän lukua binääriluku 101010.1010 vastaa?
    3. Mikä on desimaalilukujen +23 ja -75 esitys seuraavissa 16 bitin Big-Endian esitysmuodoissa:
      1. etumerkillinen (sign and magnitude)
      2. kahden komplementti (two's complement)
      3. yhden komplementti (one's complement)
      4. 32767 vakiolisäys (biased by 32767)
    4. Mikä on desimaaliluvun 33.125 IEEE-liukulukustandardin mukainen esitys?

  4. Hamming-koodi.
    1. Näytä, miten virheenkorjaava Hamming-koodi havaitsee ja korjaa virheen, kun 3. bitti vasemmalta lukien on muuttunut 7-bittisessä datassa 011 0100.
      (Näissä 7 bitissä on mukana sekä varsinainen data että tarkistusbitit)
    2. Montako piuhaa (johdinta, bittiä) tarvitaan 32-bittisen dataväylän turvaamiseksi virheenkorjaavaa Hamming-koodia käyttäen?
      (Haluamme siis pystyä kerralla siirtämään 32 bittiä todellista dataa tarkistusbittien lisäksi)
    3. Miksi Hamming-koodin käyttö ei ole hyvä ratkaisu paikallisverkkojen tiedonsiirron turvaamiseen?

  5. Välimuisti. Oletetaan, että tiedon saantiaika (1 sana) välimuistista on 2 ns ja tavallisesta muistista 10 ns. 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?

  6. 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 MAR ja MBR prosessin suoritinympäristöön vai ei? Miksi