581305-6 Tietokoneen toiminta, 4 op, kurssikuulustelu 12.12.2013   (2.5 h)

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

  1. [10 p] Keskeytykset (interrupts)
    1. [3 p] Mikä on keskeytys? Miksi sellaisia on? Voisimmeko tulla toimeen ilman niitä? Jos keskeytyksiä ei olisi, niin mitä siitä seuraisi?
    2. [3 p] Anna kolme luonteeltaan erilaista keskeytystyyppiä? Mainitse kuhunkin tyyppiin joku ominaisuus, joka erottaa sen keskeytystyypin niistä muista. Anna kuhunkin keskeytystyyppiin yksi konkreettinen esimerkki ja selitä, mihin esimerkkisi keskeytystä tarvitaan ja kuinka esimerkkisi mukainen keskeytys voisi tapahtua.
    3. [2 p] Miten laitteisto käsittelee keskeytykset? Anna täsmällinen käskyjen suoritussyklitason esimerkki, joka perustuu konekäskyyn add r1,x(r3).
    4. [2 p] Miten käyttöjärjestelmä käsittelee keskeytykset? Anna täsmällinen esimerkki, joka perustuu konekäskyyn add r1,x(r3).
     
  2. [10 p] Ohjelman suoritus järjestelmässä.
    1. [3 p] Mikä on prosessi ja mikä on sen esitysmuoto järjestelmässä? Mihin sitä tarvitaan ja mitä tietoja siihen kuuluu?
    2. [3 p] Mikä on prosessin suoritinympäristö (processor context)? Mihin sitä tarvitaan ja mitä tietoja siihen kuuluu?
    3. [4 p] Mitä tarkoittaa, kun prosessi P on odotustilassa (waiting, suspended)?
      Minkä tapahtuman seurauksena ja miten se siirtyy siihen tilaan?
      Minkä tapahtuman seurauksena ja miten se siirtyy sieltä pois? Mihin tilaan se silloin siirtyy?

     
  3. [10 p] Java
    1. [3 p] Mikä on Java tavukoodi (byte code)? Miksi se on olemassa? Mistä se generoidaan ja milloin?
    2. [3 p] Javan tavukoodia suoritetaan Java virtuaalikoneessa (JVM). Mikä on JVM:n perusrakenne?
    3. [4 p] Anna kaksi luonteeltaan hyvin erilaista tapaa Java-ohjelman suorittamiseen. Selitä, kuinka Java-ohjelmia suoritetaan niissä. Mitkä ovat niiden suurimmat eroavaisuudet toisistaan? Anna kumpaankin suoritustapaan käytännön esimerkki, jossa juuri se suoritustapa olisi parempi kuin mainitsemasi toinen vaihtoehto. Perustele esimerkkisi.

     
  4. [10 p] Titokone, TitoTrainer ja ttk-91. Funktio F(a, b, c) palauttaa arvonaan lausekkeen a+b*c+5 arvon. Esimerkiksi lausekkeen x = F(1,2,3) suorituksen jälkeen muuttujan x arvo on 12. 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. [3 p] Toteuta ttk-91 symbolisella konekielellä (funktiota F kutsumalla) lauseke
      x = F(x+1234567, x-y, x-y).
    3. [4 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