Tietokoneen toiminta, 2 ov                                              
Uusintakuulustelu 11.10.2003  (Avoin yo)

Tähän uusintakuulusteluun voivat osallistua vain kesällä 2003 Avoimen yliopiston tietokoneen toiminta -kurssille aktiivisesti osallistuneet (vähintään 8 harjoitustehtäväpistettä) opiskelijat. Arvosana määräytyy tämän tentin ja tehtyjen harjoitustehtävien perusteella. Tentti arvostellaan 27.11.2003 mennessä.

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?
       
  2. [12 p] Java ohjelmia (tavukoodia) voidaan suorittaa ainakin kolmella hyvin erilaisella tavalla. Kerro kustakin tavasta,
    1. miten suoritus tapahtuu sitä käyttäen?
    2. mikä käyttöjärjestelmän tuntema prosessi on suoritusvuorossa k.o. Java ohjelmaa suoritettaessa?
    3. esimerkki tilanteesta, jolloin kyseinen tapa olisi parempi kuin muut vaihtoehdot. Perustele.
    4. esimerkki tilanteesta, jolloin kyseinen tapa olisi huonompi kuin muut vaihtoehdot. Perustele.
    5. sopisiko tämä tapa muita paremmin Java-ohjelmoinnin harjoitustyön suorittamiseen? Miksi?

       
  3. [12 p] Hamming koodi. Oletetaan, että meillä on 4-bittinen data (0xC eli 1011), 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?

     
  4. [12 p]  Ttk-91 koneen konekieli. Kokonaislukuarvoinen taulukko T[100] on määritelty pääohjelmatasolla. Taulukossa on siis 100 alkiota (alkiot 0,...,99). Kokonaislukumuuttujat k ja r on myös määritelty pääohjelmatasolla.
    1. [3 p] Anna konekäskyt, joilla tulostetaan alkion T[44] arvo ja sen osoite.
    2. [3 p] Anna konekäskyt, joilla tulostetaan alkion T[k] arvo. Voit (epärealistisesti) olettaa, että muuttujan k arvo on sallituissa rajoissa.
    3. [3 p] Anna konekäskyt, joilla tulostetaan alkion T[r] arvo. Jos r:n arvo on epäkelpo, kutsu käyttöjärjestelmäpalvelua BadIndex SVC:n avulla (SVC  SP, =BadIndex)
    4. [3 p] Anna ttk-91 symbolisen konekielen konekäskyt, joilla aliohjelmaa Alusta(S, N) käyttäen alustetaan taulukko T. Noudata suositusten mukaista aliohjelmien kutsumekanismia. Parametri S (alustettava taulukko) on viiteparametri ja parametri N (alustettavan taulukon pituus) on arvoparametri.

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