581305-6 Tietokoneen toiminta, 2 ov, erilliskoe 25.1.2002

Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot: oma nimesi, henkilötunnus, kokeen tai kurssin nimi, nimikirjoitus ja sivunumero.
  1. [15 p] Suoritin (processor)
    1. [4 p] Mitkä ovat suorittimen suoritusaikaiset tilat (processor state)?
    2. [4 p] Miten ja milloin suorittimen tila muuttuu? Käsittele kukin mahdollinen tilasiirtymä erikseen.
      Kerro kustakin tilasiirtymästä esimerkkitapahtuma, joka voisi aiheuttaa kyseisen tilasiirtymän.
    3. [4 p] Miten suorittimen tilat ja suoritettava prosessi liittyvät toisiinsa? Missä suorittimen tilassa suoritin on prosessin suoritusaikana? Missä suorittimen tilassa suoritin on prosessin odottaessa I/O:n päättymistä?
    4. [3 p] Miten suorittimen tilat ja keskeytykset (interrupt, exception) liittyvät toisiinsa? Mitä suorittimen tilalle tapahtuu keskeytysten yhteydessä?


  2. [15 p] Tiedon muuttumattomuuden valvonta.
    1. [4 p] Mitä tarkoittaa käsite pariteettibitti? Anna esimerkki, jossa käytetään paritettibittiä tiedon muuttumattomuuden valvonnassa. Anna myös esimerkki tiedon muuttumattomuuden valvontaan liittyvästä tilanteesta, jossa pariteettibitin käyttö ei ole riittävä (mutta Hamming-koodin käyttö olisi riittävä). Perustele molemmat esimerkkisi.
    2. [4 p] Mitä tarkoittaa käsite Hamming-koodi? Anna esimerkki, jossa käytetään Hamming-koodia tiedon muuttumattomuuden valvonnassa. Anna myös esimerkki tiedon muuttumattomuuden valvontaan liittyvästä tilanteesta, jossa Hamming-koodin käyttö ei ole riittävä. Perustele molemmat esimerkkisi.
    3. [7 p] Oletetaan, että (i) lähetetään 8-bittinen merkkikoodi 0xA4 (eli A416 eli '€') koneen sisäistä väylää pitkin, ja (ii) kyseinen 8-bittinen data suojataan virheen korjaavalla Hamming-koodilla.
      1. [2 p] Kuinka monta ylimääräistä bittiä tarvitaan? Miten ne sijaitsevat? Mitkä ovat niiden arvot?
      2. [3 p] Miten Hamming-koodia käytetään korjaamaan tilanne, jossa kyseinen merkki on muuttunut matkalla merkiksi 0xA5 (eli A516 eli '¥')?
      3. [2 p] Anna kyseisen Hamming-koodilla turvatun merkin siirtoon liittyvä esimerkki, jossa kolmen bitin muuttuminen tiedonsiirron aikana jää havaitsematta. Kerro, miksi virhettä ei havaita.

  3. [15 p] Java. Oletetaan, että ohjelma MyProg on kirjoitettu Javalla ja että se suoritetaan järjestelmässä tulkitsemalla.
    1. [3 p] Mitä on ohjelmalle MyProg tehdään ennen sen varsinaisen suorituksen alkua? Mikä on MyProg'in esitysmuoto suoritusaikana ja miten siihen päästään?
    2. [3 p] Miten ohjelman MyProg suoritus lopulta tapahtuu suoritusaikana? Minkälainen käyttöjärjestelmän tuntema prosessi (tai prosessit) on suoritusvuorossa ohjelman MyProg suoritusaikana?
    3. [3 p] Jotkut väittävät Java-ohjelmien suorittamisen tulkitsemalla olevan hitaampaa kuin vastaavien C-kielisten kännettyjen ohjelmien suorittamisen kyseisessä ympäristössä. Anna hyvin perusteltu vastaus tähän väitteeseen.
    4. [3 p] Miten tilanne kohtiin (a) ja (b) muuttuu, jos käytetään JIT-käännöstä?
    5. [3 p] Miten tilanne kohtiin (a) ja (b) muuttuu, jos käytetään Java-suoritinta?


  4. [15 p]  Ttk-91 koneen konekieli. Kokonaislukuarvoinen kaksi-ulotteinen taulukko G[3,4] on määritelty pääohjelmatasolla. Taulukossa on siis 12 alkiota (alkiot G[0,0], ..., G[2,3]). Kokonaislukumuuttujat i ja j on myös määritelty pääohjelmatasolla. Taulukko on talletettu riveittäin.
    1. [5 p] Anna konekäskyt, joilla tulostetaan alkion G[2,2] arvo.
    2. [5 p] Anna konekäskyt, joilla tulostetaan alkion G[i,j] arvo. Voit (epärealistisesti) olettaa, että muuttujien i ja j arvot ovat sallituissa rajoissa.
    3. [5 p] Anna konekäskyt, joilla alustetaan taulukko G siten, että G[i,j] = i+j kaikille G:n alkioille.

 


    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