Harjoitukset
Tietokoneen toiminta, Ks2003, LH 4
Nämä tehtävät tehdään harjoituksissa 29.8.2003.
Tee tehtävät yksi kerrallaan haluamassasi järjestyksessä. Tarvittaessa pyydä
apua paikalla olevilta ohjaajilta. Halutessasi voit tehdä tehtäviä pienessä
ryhmässä, mutta kaikkien tulee silti kirjoittaa omat vastauksensa ja tehdä omat
ohjelmansa omalla koneellaan. Saatuasi valmiiksi jonkun tehtävän (joukon tehtäviä),
voit pyytää ohjaajaa tarkistamaan suorituksesi.
Ennen pois lähtöäsi varmista vielä, että ohjaajat ovat kirjanneet kaikki
tekemäsi tehtävät. Harjoitustehtäviä voi toki tehdä vielä kotonakin,
mutta kurssin läpipääsyyn ja arvosanaan vaikuttavat vain harjoitustilanteessa
kirjatut tehtävät. Kurssin suoritus edellyttää aktiivisuutta myös
harjoitustehtävien suhteen.
- Hamming koodi.
- Näytä, miten virheenkorjaava Hamming koodi havaitsee ja korjaa virheen
kun 7-bittisessä datassa "011 0100" kolmas bitti vasemmalta
lukien muuttuu virheelliseksi dataksi "010 0100".
Näissä 7 bitissä on mukana sekä varsinainen data että tarkistusbitit.
- 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?
- 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] Jump table. Pitkät valintalauseet (switch-lauseet) voivat hidastaa
ohjelman suoritusta huomattavasti, jos usein suoritettavassa silmukassa joka
kerta valitaan yksi kerrallaan oikea case-tapaus esimerkiksi 60 eri mahdollisuuden
joukosta. Tähän menee keskimäärin 30 vertailua ja kuhunkin vertailuun ainakin
2 konekäskyä!
Jos valinta-arvot ovat kokonaislukuarvoisia, nollasta alkavia ja muodostavat
(liki) yhtenäisen arvoalueen, niin usean if-then-else -vertailun asemesta
voidaan käyttää hyppytaulua (jump table). Hyppytaulun avulla päästää oikeaan
case-tapaukseen aina suoraan muutamalla konekäskyllä. Hyppytaulu sisältää
monta hyppykäskyä (yksi per case-tapaus), joista valintamuuttujan perusteella
valitaan indeksoitua osoitusmoodia käyttäen oikea hyppykäsky. Esimerkiksi,
jos rekisteri R3 sisältää valinta-arvon ja hyppytaulun osoite on JTBL, niin
oikeaan case-tapaukseen (siihen liittyvään hyppykäskyyn) päästään konekäskyn
"JUMP JTBL(R3)" avulla.
- Anna (Koksissa suorituskelpoinen) ttk-91 esimerkki hyppytaulun käytöstä,
kun case-tapauksia on 10.
- Miten em. valintalause toteutetaan, jos hyppytaulussa onkin hyppykäskyjen
asemesta ainoastaan case-tapausten osoitteet? Anna toteutus samalle esimerkille
kuin kohdassa (a).
- Milloin toteutustapa (a) on parempi kuin (b)? Miksi?
- Milloin toteutustapa (b) on parempi kuin (a)? Miksi?
- Jos kukin case-tapaus vaatii 10 konekäskyä ja case-tapauksia on 60,
niin kuinka paljon (%) hyppytaulun käyttö nopettaa valintalauseen suoritusta
(verrattuna usean peräkkäisen vertailun toteutukseen)? Eroavatko em. toteutustavat
(kohdat a ja b) tässä suhteessa? Käytä nopeusmittana suoritettujen
käskyjen lukumäärää.
- 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