581305-6 Tietokoneen toiminta, koe 15.12.2011   

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

Mukana saa olla yksi 2-puolinen A4-kokoinen käsin tai koneella tulostettu muistilappu.

  1. [10 p] Ohjelman suoritus järjestelmässä.
    1. Missä muodossa käyttöjärjestelmä näkee järjestelmässä olevan ohjelman P?
    2. Miten käyttöjärjestelmä aloittaa suoritusvuorossa olevan ohjelman P suorituksen? Mitä kaikkia P:n tietoja tuolloin tarvitaan, mistä ne löytyvät ja mitä niille tehdään?
    3. Miten ja milloin suoritusvuoro siirtyy sovellusohjelmalta P käyttöjärjestelmälle. Anna kolme tyypiltään erilaista esimerkkiä.
    4. Oletetaan, että suoritusvuoro on siirtynyt sovellusohjelmalta P käyttöjärjestelmälle. Miten ja milloin suoritusvuoro palaa heti takaisin käyttöjärjestelmältä sovellusohjelmalle P?
    5. Oletetaan, että suoritusvuoro on siirtynyt sovellusohjelmalta P käyttöjärjestelmälle. Missä tilanteissa suoritusvuoro ei palaa heti takaisin käyttöjärjestelmältä sovellusohjelmalle P? Mitä P:lle tapahtuu tuolloin? Anna kaksi tyypiltään erilaista esimerkkiä.

  2. [10 p] Konekäskyjen suoritus. Oletetaan, että rekisterin BASE arvo on 200000, rekisterin LIMIT arvo on 512, rekisterin R2 arvo on 400, symbolin LOOP arvo 84 ja symbolin A arvo on 120.
    1. [5 p] Määrittele käsite "käskyjen suoritussykli". Mitkä ovat sen vaiheet ja mitä vaiheissa tapahtuu?
      Anna konkreettinen esimerkki, kun suoritusvuorossa on konekäsky "JZER R5, LOOP".
    2. [5 p] Miten muistiin viittaaminen tapahtuu kanta- ja rajarekistereitä käyttäen?
      Anna konkreettinen esimerkki, kun suoritusvuorossa on konekäsky "LOAD R1, A".
      Anna toinen konkreettinen esimerkki, kun suoritusvuorossa on konekäsky "LOAD R0, A(R2)" 
       
  3. [10 p] Java
    1. Mikä on Java virtuaalikone (Java virtual machine, JVM)?
    2. Mikä on Javan tavukoodi (byte koodi) ja miten se generoidaan?
    3. [6 p] Anna kolme erilaista tapaa Java-ohjelman suorittamiseen. Miten ne eroavat toisistaan? Mitä niillä on yhteistä? Miten ne liittyvät JVM:een ja Java tavukoodiin?
       
  4. [10 p] Titokone, TitoTrainer ja ttk-91. Funktio F(a, b, c) palauttaa arvonaan lausekkeen 2a+3b-4c+5 arvon. Esimerkiksi lausekkeen x = F(1,2,3) suorituksen jälkeen muuttujan x arvo on 1. Parametrit a ja b ovat arvoparametreja ja parametri c on viiteparametri. Muuttujat x ja y on määritelty pääohjelmatasolla.
    1. [3 p] Toteuta ttk-91 symbolisella konekielellä (funktiota F kutsumalla) lauseke
      x = F(x, y, y).
       
    2. [2 p] Toteuta ttk-91 symbolisella konekielellä (funktiota F kutsumalla) lauseke
      x = F(x+11, x-y, x-y).
       
    3. [5 p] Toteuta ttk-91 symbolisella konekielellä funktio F.
       
    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