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

Tietokoneen toiminta, Kevät 2003, LH 4

Nämä tehtävät käsitellään harjoituksissa viikolla 15, 7-11.4.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)
    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?
      (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. 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

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

  5. [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. Parametri Arr on alustettava taulukko, Dim on k.o. taulukon alkioiden lukumäärä ja Val on jokin 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.

  6. 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. Ihan turhaan, ei siitä ole mitään hyötyä.
    5. Ohjelmointia ei voi opetella ilman, että oppii kunnolla konekielistä ohjelmointia.
    6. Se on ainoa konekieli, jolle on simulaattori olemassa.
    7. Koksi on toteutettu ttk-91 koneelle.

    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.


Teemu Kerola