Helsingin yliopisto - Tietojenkäsittelytieteen laitos
Harjoitukset (näyttö layout) (tulostus layout) (kämmen layout)

Tietokoneen toiminta, Syksy 2003, LH 4

Nämä tehtävät käsitellään harjoituksissa viikolla 48, 24-28.11.2003.
  1. Tiedon muuttumattomuus, 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. Bitit on numeroitu oikealta vasemmalle, kuten luennolla esitettiin. Ei siis vasemmalta oikealle, kuten Häkkisen monisteessa! o)
    2. Entä kuinka muuttumattomuuden tarkistus tapahtuu siirrettävälle 16 - bitin lohkolle 01010011 01010101. (Näissä 16 bitissä ei ole mukana tarkistubittejä!) 
    3. Montako piuhaa (johdinta, bittiä) tarvitaan 32-bittisen data-väylän turvaamiseksi virheenkorjaavaa Hamming-koodia käyttäen? Entä 64-bittinen väylä?
      (Haluamme siis pystyä kerralla siirtämään 32 bittiä todellista dataa tarkistusbittien lisäksi)
    4. Miksi Hamming-koodin käyttö ei ole hyvä ratkaisu paikallisverkkojen tiedonsiirron turvaamiseen?

  2. 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?

  3. 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? MBR, MAR, TR, PC, SP, FP, BASE, LIMIT, välimuistin tiedot, ...?
    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?

  4. [2 htp] Määrittele kuusialkioinen taulukko Taulu[0..5] pääohjelmatasolla. Toteuta sitten seuraavat tehtävät TTK-91 koneen symbolisella konekielellä ja suorita ohjelmasi Koksissa.
    1. Tee aliohjelma Init(Arr, Dim, Val), joka alustaa parametrina annetun taulukon Arr siten, että kunkin alkion Arr[i] arvoksi tulee luku Val+i+1000. Parametri Arr on alustettava taulukko, Dim on k.o. taulukon alkioiden lukumäärä ja Val on kokonaisluku. Arr on viiteparametri. Dim ja Val ovat arvoparametreja.
      (Huomaa, että viiteparametrina annetun taulukon käyttö on vähän vaikeata, koska et voi käyttää tavallista indeksoitua osoitusmuotoa taulukon alkioiden yhteydessä.)
    2. Alusta taulukko Taulu aliohjelmaa Init käyttäen (Val = 100).
    3. Tulosta taulukon Taulu alkion Taulu[4] arvo ja osoite.

    Noudata luennolla ja harjoituksissa esitettyjen suositusten mukaista aliohjelmien (funktioiden) toteutustapaa ja kutsumekanismia.

  5. Kertaustehtävien tekemismekaniikka. Tee yksi kertaustehtävä ryhmätyön määrittelyssä annetulla menetelmällä. Käytä kysymystä "Miksi Titossa käytetään ttk-91 symbolista konekieltä?" ja vastausvaihtoehtoja
    1. Se on hauskaa.
    2. Parempaakaan konekieltä ei ole keksitty.
    3. Ttk-91 konekieli on helpompaa kuin todellisten koneiden konekieli.
    4. Ohjelmointia ei voi opetella ilman, että oppii kunnolla konekielistä ohjelmointia.
    5. Se on ainoa konekieli, jolle on simulaattori olemassa.

    Keksi itse sopivat vastauselitykstykset kuhunkin vaihtoehtoon. Jos haluat, voit myös keksiä muita vaihtoehtoja. Valitse kysymykseen sopiva aihealue ja vastausvaihtoehtojen oikein/väärin luokittelu. Tämän tehtävän voi hyvin tehdä ryhmätyöparin kanssa.

    Jos jollakin ei vielä ole ryhmätyöparia, niin lähettäkää sähköpostia minulle. Ryhmittelen sitten loput parit ja ilmoitan niistä sähköpostitse.

Varaudu esittämään kaikki Koksiin liittyvät tehtävät mikrotietokoneella harjoitustilaisuudessa. Pidä mukanasi levykettä harjoitusta varten tekemiesi ohjelmien tallettamiseen.
Teemu Kerola