581305-6 Tietokoneen toiminta, 4 op, koe 27.1.2012   

Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot: nimi ja nimikirjoitus, opiskelijanumero ja kurssin nimi. Kuhunkin tehtävään riittää noin yhden sivun vastaus.

Koe arvostellaan myös syksyn 2011 kurssikokeen uusintakuulusteluna.

  1. [9 p] Tiedon esitys.
    1. Millä eri tavoin kokonaislukuja voi esittää muistissa?
    2. Miten liukuluvut esitetään muistissa? Mikä on liukulukujen normeerattu esitysmuoto ja miksi sitä käytetään?
    3. Mitä tarkoittavat käsitteet Little Endian ja Big Endian tiedon talletuksen yhteydessä? Anna kuvaava esimerkki.

  2. [9 p] Konekäskyjen suoritus.
    1. Määrittele käsite "käskyjen suoritussykli". Mitkä ovat sen vaiheet ja mitä vaiheissa tapahtuu? Anna konkreettinen esimerkki, kun suoritusvuorossa on konekäsky "jump methodUpd(r1)".
    2. Oletetaan, että käskyn suoritusaikana tapahtuu jokin virhetilanne. Kuinka tämä havaitaan? Kuinka käyttöjärjestelmä saa kontrollin ja käsittelee virhetilanteen? Mitä sitten tapahtuu? Anna konkreettinen esimerkki, kun suoritusvuorossa on konekäsky "jump methodUpd(r1)".
    3. Oletetaan, että levyohjain on saanut työnsä valmiiksi ja haluaisi ilmoittaa asiasta laiteajurilleen. Kuinka tämä tapahtuu konekäskyjen suoritustasolla? Kuinka laiteajuri saa lopulta suoritusvuoron? Mitä sitten tapahtuu? Anna konkreettinen esimerkki. Tee tarvittavat oletukset I/O:n tyypistä.

       
  3. [9 p] Ohjelman suoritus.
    1. Mikä on prosessi ja mikä on sen esitysmuoto järjestelmässä?
    2. Mitä järjestelmässä tapahtuu konekäskytasolla prosessin vaihdon yhteydessä? Käytä esimerkkinä tilannetta, jossa suorituksessa oleva prosessi P joutuu odottamaan I/O:n päättymistä ja seuraavaksi suoritetaan prosessia Q. Miten ja milloin suoritusvuoro siirtyy prosessille Q?
    3. Milloin ja miten b-kohdan tapauksessa prosessi P pääsee taas takaisin suoritukseen? Miten taataan, että P:n suoritus jatkuu juuri oikeasta kohdasta ja että P:n suoritusympäristö on juuri samanlainen kuin mitä se oli P:n suorituksen keskeytyessä aikaisemmin?


     
  4. [9 p] Titokone, TitoTrainer ja ttk-91. Kokonaislukuarvoinen funktio ffunny(x, y, z) palauttaa arvonaan lausekkeen y+z/x arvon. Parametrit x ja y ovat arvoparametreja ja z on viiteparametri. Kokonaislukuarvoiset muuttujat a, b ja c on määritelty pääohjelmatasolla.
    1. Toteuta ttk-91 symbolisella konekielellä funktiota  ffunny() kutsuva lauseke a=ffunny(10, b, c).
    2. Toteuta ttk-91 symbolisella konekielellä funktiota  ffunny() kutsuva lauseke a=ffunny(a+1, 7654321, a+1).
    3. Toteuta kokonaislukuarvoinen funktio ffunny(x, y, z),

    Noudata suositusten mukaista aliohjelmien (funktioiden) kutsumekanismia.


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