581305-6 Tietokoneen toiminta, 5 op, koe 17.6.2016  

Kirjoita jokaiseen vastauspaperiisi: oma nimi ja nimikirjoitus, opiskelijanumero ja kurssin nimi.
Kuhunkin tehtävään riittää noin 1-2 sivun vastaus.
Valitse 1 kpl seuraavista vaihtoehdoista ja mainitse valintasi koepaperissa. Oletusvalinta on (c).

(a) Kevään 2016 itseopiskelukurssin minikokeen 4 uusintakuulustelu: tehtävä 4.
      (Minikokeita 1-3 ei voi enää uusia)

(b) Kevään 2016 itseopiskelukurssin kurssikokeen uusintakuulustelu: tehtävät 1-4.
      (Tässä uusitaan koko kurssikoe. Vastaa kaikkiin tehtäviin 1-4.)

(c) Tämä on tavallinen erilliskoe ja kattaa koko kurssin: tehtävät 1, 2, 3 ja 5.

  1. [9 p] Konekäskyjen suoritus.
    1. [3 p] Miten konekäskyjen suoritus tapahtuu suorittimessa? Mistä konekäskyt löytyvät? Mistä tietää, mitä toimenpiteitä kunkin konekäskyn kohdalla tulee tehdä? Mistä tietää, mikä on seuraavaksi suoritettava konekäsky?
    2. [3 p] Keskeytykset (poikkeus, interrupt, exception). Mainitse kolme (3) erilaista keskeytystyyppiä. Milloin ja miten keskeytys havaitaan suorittimella? Kuinka käyttöjärjestelmä saa kontrollin (eli pääsee suorittamaan omia käskyjään) ja käsittelee tilanteen? Mitä sitten tapahtuu? Miten ja milloin keskeytyneen ohjelman suoritus lopulta jatkuu (jos se voi jatkua)?
    3. [3 p] Mikä on konekäskyjen etuoikeutettu suoritustila (privileged, supervisor)? Mitä etuoikeuksia siihen sisältyy? Miksi sitä tarvitaan? Kuinka siihen päästään? Kuinka siitä päästään pois?
        
  2. [9 p] Tiedon esitys.
    1. [3 p] Mitkä ovat kokonaislukujen +13 ja -13 Big Endian 16-bittiset kahden komplementin (two's complement) talletusmuodot.
    2. [3 p] Mitkä ovat kokonaislukujen +13 ja -13 Little Endian 16-bittiset yhden komplementin (one's co mplement) talletusmuodot.
    3. [3 p] Mitkä ovat liukulukujen +5.5 ja -5.5 Little Endian 32-bittiset IEEE standardin mukaiset talletusmuodot?

  3. [9 p] Ohjelma ja sen suoritus järjestelmässä. Tarkastellaan prosessia P.
    1. [3 p] Mitä tietoja on P:n kuvaajassa (PCP, Process Control Block)? Missä kuvaaja sijaitsee (CPU:lla, muistissa, levyllä)?
    2. [3 p] Mikä on P:n suoritinympäristö (processor context)? Mihin sitä tarvitaan? Mitä tietoja siinä on? Millä periaatteella suoritusympäristön tiedot määräytyvät? Miksi joku rekisteri kuuluu siihen mutta joku toinen rekisteri ei?
    3. [3 p] Milloin P on tilassa valmis suoritukseen (Ready, Ready-to-Run)?
      Ovatko P:n suorituksessaan tarvitsemat tiedot (koodi, data) tällöin suorittimella, muistissa vai levyllä? Miksi?
      Milloin se pääsee pois tästä tilasta ja mihin tilaan se siirtyy silloin? Miten siirto tapahtuu?





      (KÄÄNNÄ!)










  4. [9 p] Java
    1. [3 p] Mikä on Java virtuaalikone (Java virtual machine, Java VM, JVM)?
      Mainitse 3 selkeää eroa JVM- ja ttk91-arkkitehtuurien ja/tai niiden ymmärtämien konekielien välillä.
    2. [3 p] P on Javalla kirjoitettu ohjelma. Kuinka P suoritetaan tulkitsemalla? Missä muodossa P on suoritushetkellä ja kuinka se on saatu siihen? Milloin ja miksi tulkitseminen olisi parempi vaihtoehto kuin suoritus JIT-käännöksen avulla?
    3. [3 p] P on Javalla kirjoitettu ohjelma. Kuinka P suoritetaan JIT-käännöksellä? Missä muodossa P on suoritushetkellä ja kuinka se on saatu siihen? Milloin ja miksi JIT-käännös olisi parempi vaihtoehto kuin tulkitseminen?

  5. [9 p] Titokone, TitoTrainer ja ttk-91. Aliohjelma Init (t,n,x) alustaa taulukon t kaikki n alkiota arvoon x. Parametri t on viiteparametri, muut ovat arvoparametreja. Globaali 100-alkioinen taulukko Count on määritelty pääohjelmatasolla.
    1. [3 p] Toteuta ttk-91 symbolisella konekielellä (aliohjelmaa Init kutsumalla) taulukon Count alkioiden alustus arvoon 12345.
    2. [3 p] Toteuta ttk-91 symbolisella konekielellä (aliohjelmaa Init kutsumalla) taulukon Count alkioiden 50-69 alustus arvoon 87654321.
    3. [3 p] Toteuta ttk-91 symbolisella konekielellä aliohjelma Init().
       
    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