Tietokoneen toiminta, Kevät 2003, LH 4
Nämä tehtävät käsitellään harjoituksissa viikolla 15, 7-11.4.2003.- Tiedon muuttumattomuus, Hamming koodi.
- 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)
- Entä kuinka muuttumattomuuden tarkistus tapahtuu siirrettävälle 16 - bitin lohkolle 01010011 01010101. (Näissä 16 bitissä ei ole mukana tarkistubittejä!)
- 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) - Miksi Hamming-koodin käyttö ei ole hyvä ratkaisu paikallisverkkojen tiedonsiirron turvaamiseen?
- 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.
- Jos välimuistia ei käytetä, niin kauanko keskimääräisesti kestää datan (1 sana) lukeminen rekisteriin?
- Jos välimuistia käytetään, niin kauanko keskimääräisesti kestää datan (1 sana) lukeminen rekisteriin?
- Miten prosessi tietää, löytyikö tieto välimuistista vai ei?
- Miten sovelluksen käyttäjä (ihminen) tietää, löytyikö tieto välimuistista vai ei?
- Miten käyttäjä (ohjelmoija) voi vaikuttaa välimuistin tehokkuuteen?
- Prosessi.
- Mitä tapahtuu, jos Ready-to-Run jono on tyhjä?
- Voiko samasta ohjelmasta olla monta prosessia yhtä aikaa Ready-to-Run jonossa? Miten tai miksi ei?
- Kumpi kestää kauemmin, aliohjelman kutsu vai prosessin vaihto? Miksi?
- Kuuluuko välimuistin sisältö prosessin suoritinympäristöön vai ei? Miksi?
- Kuuluvatko MAR ja MBR prosessin suoritinympäristöön vai ei? Miksi
- 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.
- Miten ja mihin aikaisemmin suorituksessa olleen prosessin tiedot talletetaan? Mitkä tiedot täytyy ottaa talteen?
- Miten ja mistä uuden prosessin tiedot saadaan suorittimelle? Mistä käskystä uuden prosessin suoritus alkaa? Miten suoritusvuoro vaihtuu uudelle prosessille?
- Mikä on suorittimen tila (käyttäjä, etuoikeutettu) alkaen juuri ennen
kellolaitekeskeytyshetkeä siihen asti kun uuden prosessin ensimmäisen
käsky suoritetaan?
- [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.
- 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ä.) - Alusta taulukko Taulu aliohjelmaa Init käyttäen (Val = 100).
- Tulosta taulukon Taulu alkion Taulu[4] arvo ja osoite.
Noudata luennolla ja harjoituksissa esitettyjen suositusten mukaista aliohjelmien (funktioiden) toteutustapaa ja kutsumekanismia.
- 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.
- 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
- Se on hauskaa.
- Parempaakaan konekieltä ei ole keksitty.
- Ttk-91 konekieli on helpompaa kuin todellisten koneiden konekieli.
- Ihan turhaan, ei siitä ole mitään hyötyä.
- Ohjelmointia ei voi opetella ilman, että oppii kunnolla konekielistä ohjelmointia.
- Se on ainoa konekieli, jolle on simulaattori olemassa.
- 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