Tietokoneen toiminta, kurssikuulustelu 10.12.2008   

Kirjoita jokaiseen vastauspaperiin: nimi ja nimikirjoitus, opiskelijanumero, kurssin nimi ja sivunumero.
Mainitse, jos olet palauttanut oppimispäiväkirjan, joka tulisi ottaa huomioon arvostelussa.
  1. [9 p] Ohjelma, käyttöjärjestelmä ja laitteisto.
    1. Missä muodossa käyttöjärjestelmä näkee järjestelmässä olevan ohjelman Prog? Missä muodossa laitteisto näkee sen?
    2. Kuinka käyttöjärjestelmä antaa suoritusvuoron ohjelmalle Prog? Mitä silloin tapahtuu konekäskytasolla?
    3. Mitä ohjelman Prog suoritukselle tapahtuu käyttöjärjestelmän tasolla, jos ohjelma Prog haluaa välillä lukea jonkin syötteen näppäimistöltä? Esim. ohjelma Prog tulostaa ensin kehotteen "Anna luku? ", jonka jälkeen käyttäjä naputtelee numeron "5" ja painaa enteriä. Miten ohjelma Prog odottaa syötettävää lukua, kuinka kauan se odottaa ja missä se odottaa? Miten odottaminen päättyy?
       
  2. [9 p] Konekäskyjen suoritus.
    1. Miten etuoikeutettu (privileged) suoritustila eroaa tavallisesta (user mode) suoritustilasta?
    2. Milloin ja miten suoritustila vaihtuu tavallisen ja etuoikeutettun suoritustilan välillä?
    3. Mikä on keskeytys (interrupt)? Mainitse ainakin kolme erilaista keskeytystyyppiä.
    4. Kuinka keskeytysten käsittely on toteutettu suorittimen (konekäskyjen suorituksen) tasolla?
       
  3. [9 p] Java
    1. Miten Java-ohjelmasta saadaan tavukoodinen esitysmuoto?
    2. Miten tavukoodina esitetyn Java-ohjelman suoritus tapahtuu tulkitsemalla?
    3. Miten tavukoodina esitetyn Java-ohjelman suoritus tapahtuu kääntämällä?
      Miten tämä suoritus eroaa edellämainitusta tavasta (a)?
    4. Miten tavukoodina esitetyn Java-ohjelman suoritus tapahtuu JIT:llä?
      Miten tämä suoritus eroaa edellämainituista tavoista (a ja b)?
    5. Miten tavukoodina esitetyn Java-ohjelman suoritus tapahtuu Java-suorittimessa?
      Miten tämä suoritus eroaa edellämainituista tavoista (a, b ja c)?
       
  4. [9 p] Titokone, TitoTrainer ja ttk-91. Kokonaislukuarvoinen funktio ffunny(x, y, z) palauttaa arvonaan lausekkeen x*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(55, b+987654, c+321).
    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