581305-6 Tietokoneen toiminta, 4 op, erilliskoe 6.11.2009   

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

  1. [9 p] Konekäskyjen suoritus. Ajatellaan (symbolista) konekäskyä "ADD R1, Taulu(R2)", joka sijaitsee konekielisessä muodossaan muistipaikassa 87.
    1. Miten tämä konekäsky suoritetaan laitteistossa (suoritin, väylä, muisti)? Anna vastaus suorittimen komponenttitasolla (ALU, MAR, MDR, etc).
    2. Mitä laitteistossa tarkalleen tapahtuu, jos taulukko Taulu on talletettu muistiin alkaen muistipaikasta 120 ja indeksirekisterin R2 arvo -200?
    3. Mitä laitteistossa tarkalleen tapahtuu, jos yhteenlaskun tulos on liian suuri eikä sitä voikaan esittää 32 bitillä?
    4. Mistä muistiosoitteesta löytyy seuraavaksi suoritettava konekäsky kaikissa em. tilanteissa (a, b, ja c)?

     
  2. [9 p] Prosessi (process).
    1. Mikä on prosessi? Mikä on sen esitysmuoto käyttöjärjestelmässä?
    2. Mitä prosessille tapahtuu, jos se suorittaa (symbolisella esitystavalla esitettyä) konekäskyä "ADD R1, Taulu(R2)" ja yhteenlaskun tulos on liian suuri esitettäväksi 32 bitillä? Kuinka käyttöjärjestelmä hoitaa tilanteen? Kuinka tilanteesta toivutaan?
    3. Oletetaan, että käyttäjä on kaksosklikannut jotain kuvaketta ja sillä tavoin käynnistänyt uuden ohjelman P suorituksen. Suorituskelpoinen ohjelma P on valmiina kovalevyllä suoritettavaksi. Mitä järjestelmässä tapahtuu ennen kuin ohjelman P ensimmäinen käsky on suoritettu?

     
  3. [9 p] Java
    1. Mitä ovat Javan tavukoodi (byte code) ja virtuaalikone (JVM, Java Virtual Machine)?
    2. Miten ja mistä tavukoodi saadaan?
    3. Miten tavukoodina esitetyn Java-ohjelman suoritus tapahtuu tulkitsemalla?

     
  4. [9 p] Funktio ffunny( x, y, z) palauttaa arvonaan x*y+z/x. Esimerkiksi, kutsu ffunny(4,8,9) palauttaa arvon 30. Kaikki parametrit x, y ja z ovat kokonaislukuarvoisia viiteparametreja.
    1. Toteuta ttk-91 symbolisella konekielellä sijoituslauseke c = ffunny (a, b, c), jossa muuttujan c uusi arvo lasketaan funktion ffunny() avulla. Muuttujat a, b ja c on määritelty pääohjelmatasolla.
    2. Toteuta ttk-91 symbolisella konekielellä sijoituslauseke c = ffunny (a+4, 7, c), jossa muuttujan c uusi arvo lasketaan funktion ffunny() avulla. Muuttujat a ja c on määritelty pääohjelmatasolla.
    3. Toteuta ttk-91 symbolisella konekielellä funktio ffunny().

    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