Tietokoneen toiminta (avoin yliopisto), 2 ov             Kurssikuulustelu 8.9.2003  

Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot: oma nimi, opiskelijanumero (tai henkilötunnus),
  kurssin nimi, nimikirjoitus ja sivunumero.
  1. [12 p] Konekäskyjen suoritus.
    1. [2 p] Millä tavoin suoritin (processor) suorittaa konekäskyn?
    2. [2 p] Miten suoritin tietää, mikä konekäsky on kulloinkin suoritusvuorossa?
    3. [3 p] Mitä ovat keskeytykset (exception, interrupt) ja minkä tyyppisiä keskeytyksiä on olemassa?
    4. [2 p] Miten keskeytykset käsitellään suorittimella?
    5. [3 p] Mitä tarkoittaa käsite "etuoikeutettu tila" (supervisor state, priviledged state) ja miten se vaikuttaa käskyjen suoritukseen? Anna esimerkki käskystä, jonka yhteydessä etuoikeutetulla tilalla on merkitystä.

  2. [12 p] Hamming koodi. Oletetaan, että meillä on 4-bittinen data (0xD eli 1101), joka suojataan Hamming koodin avulla. Oletetaan, että bitit numeroidaan oikealta vasemmalle (kuten luennolla esitettiin). Käytössä on parillinen pariteetti.
    1. [2 p] Montako pariteettibittiä tarvitaan suojaamaan näitä neljää data-bittiä?
    2. [4 p] Anna Hamming koodilla suojattu kyseisen datan esitysmuoto (pariteettibitteineen).
    3. [2 p] Oletetaan nyt, että kolmas (3) bitti oikealta (kyseisessä datassa pariteettibitteineen) on tiedon siirron aikana muuttunut. Havaitaanko virhe Hamming koodin avulla? Voidaanko se korjata? Miten tai miksi ei? Näytä yksityiskohtaisesti.
    4. [2 p] Oletetaan nyt, että sekä toinen (2) että kolmas (3) bitti oikealta ovat molemmat muuttuneet tiedon siirron aikana. Havaitaanko virhe Hamming koodin avulla? Voidaanko se korjata? Miten tai miksi ei? Näytä yksityiskohtaisesti.
    5. [2 p] Jos databittejä olisi 16, niin montako pariteettibittiä tarvittaisiin?

  3. [12 p]  I/O:n toteutus. Käsitellään tässä käyttäjätason prosessia P, joka kirjoittaa 20000 sanan datasegmentin kovalevylle. Käytössä on suoraa I/O:ta (direct I/O) käyttävä toteutus.
    1. [2 p] Mitkä kaikki laitteiston osat osallistuvat I/O:n toteuttamiseen?
    2. [2 p] Mitkä kaikki prosessit osallistuvat I/O:n toteuttamiseen? Missä laitteiston osassa kukin prosessi on (suorittamassa koodiaan)?
    3. [4 p] Mitä kaikkea järjestelmässä tapahtuu siitä hetkestä alkaen kun P aloittaa I/O:n, siihen hetkeen asti, kun P jatkaa suoritustaan I/O:n jälkeen?
    4. [2 p] Miten tilanne (kohdat a-c) muuttuisi, jos käytössä olisikin epäsuora I/O (indirect I/O)?
    5. [2 p] Miten tilanne (kohdat a-c) muuttuisi, jos käytössä olisikin DMA-perustainen I/O?

  4. [12 p]  Muuttujat X, Y, I ja N oletetaan määritellyksi pääohjelmatasolla. Jokonaislukuarvoinen Funktio Random(Low, High) palauttaa arvonaan satunnaisen kokonaisluvun suljetulta väliltä [Low, High].Low ja High ovat molemmat kokonaislukuarvoisia arvoparametreja. Lisäksi, meillä on korkean tason kielen switch-lauseke:
    		switch (i) {                     //-- i:n arvojoukko 0, 1, 2, ..., 10  
    			case 0:  x = 60; break;
    			case 1:  x = 91; break;
    			case 2:  x = 72; y = 82; break;
    			case 3:  x = 33; break;
    			case 5:  x = 14; break;
    			case 6:  x = 46; break;
    			case 9:  x = 89; y = 99; break;
    			default: x = 0; break;
    			}
    
    1. [3 p] Toteuta kyseinen switch-lauseke ttk-91 symbolisella konekielellä.
    2. [1 p] Miten switch -lausekkeen toteutukseen voisi vaikuttaa tieto siitä, että 90% tapauksista i:n arvo on 6? Miten tämä näkyy switch lauseen symbolisen konekielen esityksessä?
    3. [1 p] Miten switch -lausekkeen toteutukseen voisi vaikuttaa tieto siitä, että 90% tapauksista i:n arvo on 7? Miten tämä näkyy switch lauseen symbolisen konekielen esityksessä?
    4. [2 p] Miten em. switch-lauseke voidaan toteuttaa symbolisella konekielellä hyppytaulukkoa (jump table) käyttäen? Anna vastaus symbolisellä konekielellä.
    5. [1 p] Mitä etua hyppytaulukon käytöstä on tavalliseen toteutukseen (ei hyppytaulukkoa) verrattuna?
    6. [4 p] Toteuta silmukka, jossa tulostetaan N kappaletta satunnaislukuja väliltä [1, X] ja jossa satunnaisluvut generoidaan funktiota Random käyttäen.
Noudata luennolla ja harjoituksissa esitettyjen suositusten mukaista aliohjelmien (funktioiden) toteutustapaa ja kutsumekanismia.

TTK-91 konekielen käskyt ovat: NOP, STORE, LOAD, IN, OUT, ADD, SUB, MUL, DIV, MOD, AND, OR, XOR, SHL, SHR, COMP, JUMP, JNEG, JZER, JPOS, JNNEG, JNZER, JNPOS, JLES, JEQU, JGRE, JNLES, JNEQU, JNGRE, CALL, EXIT, PUSH, POP, PUSHR, POPR, SVC