Tietokoneen toiminta, 4 op (2 ov)             Kurssikuulustelu 12.12.2006 

Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot: oma nimi, opiskelijanumero (tai henkilötunnus),
  kurssin nimi, nimikirjoitus ja sivunumero.

Kurssin tulokset tulevat näkyville verkkoon kurssin kotisivulle linkitettynä heti arvostelun valmistuttua. Muista antaa kurssipalaute jossakin vaiheessa. Kiitos.

  1.   [15 p] Konekäskyjen suoritus, keskeytykset.
    1. [5 p] Määrittele käsite "käskyjen suoritussykli". Mitkä ovat sen vaiheet? Piirrä kuva suoritussyklistä.
    2. [5 p] Mitä suorittimella tapahtuu ttk-91 koneen konekäskyä "MUL R1, 100(R5)" suoritettaessa suoritussyklin eri vaiheissa? Montako muistiviitettä tapahtuu, milloin ne tapahtuvat, mihin muistiosoitteeseen ne kohdistuvat ja ovatko ne ne luku- vai kirjoitusoperaatioita?
    3. [5 p] Mikä on I/O-keskeytys (I/O interrupt)? Kuinka I/O-keskeytyksen käsittely on toteutettu konekäskyjen suoritustasolla?
       
  2. [15 p] Prosessi (process).
    1. [5 p] Piirrä prosessin suoritusaikaisista tiloista (process state) 5-tilainen tilakaavio. Kerro tilojen nimet ja piirrä niiden väliset tilasiirtymät.
    2. [5 p] Anna luonteeltaan kaksi (2) erilaista esimerkkiä tilanteesta, jossa prosessi P siirtyy "suorituksessa" tilasta johonkin toiseen tilaan. Mitä tapahtuu järjestelmässä kunkin tilanteen aikana. Erityisesti mainitse, kuka (mikä prosessi) aiheutti tilasiirtymän ja mitä tilanmuutoksessa tapahtuu järjestelmässä kunkin tilanteen aikana?
    3. [5 p] Oletetaan, että prosessi Tulosta tekee paljon tulostusta kirjoittimelle. Missä suoritusaikaisissa tiloissa prosessi Tulosta on tulostamisen eri vaiheissa? Perustele.

     
  3. [15 p]  Aliohjelmat ja funktiot. Aliohjelma Summa(Arr, n, s) laskee parametrina annetusta n-alkioisesta taulukon Arr alkioiden summan ja palauttaa sen ulostuloparametrin s avulla. Summa() ei siis ole funktio! Esimerkiksi, jos parametrina olisi 5-alkioinen taulukko T={2, 4, 6, 8, 10}, niin kyseinen aliohjelmakutsu Summa(T, 5, sum) palauttaisi ulostuloparametrin sum arvona luvun 30. Parametri Arr on viiteparametri, n on kokonaislukuarvoinen arvoparametri ja s on kokonaislukuarvoinen viiteparametri.
    1. Anna ttk-91 koneen symbolisella konekielellä käskyt, joilla aliohjelmaa Sum() käyttäen lasketaan globaalille (pääohjelmatason) muuttujalle SalarySum arvoksi globaalilla tasolla määritellyn 200-alkioisen taulukon Salaries alkioiden keskiarvo.
    2. Toteuta aliohjelma Summa.
    HUOM: Aliohjelmaa Summa() siis ei tarvitse esittää kohdassa a.
    Noudata suositusten mukaista aliohjelmien (funktioiden) toteutustapaa ja kutsumekanismia.
     
  4. [15 p] Java
    1. Miksi ohjelman yleinen esitysmuoto systeemissä on tavukoodi (Java bytecode), eikä korkean tason kieli (Java)?
    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?
    4. Miten tavukoodina esitetyn Java-ohjelman suoritus tapahtuu Java-suorittimessa?
      Miten tämä suoritus eroaa edellämainituista tavoista?
    5. Miten tavukoodina esitetyn Java-ohjelman suoritus tapahtuu JIT:llä?
      Miten tämä suoritus eroaa edellämainituista tavoista?

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