581305-6 Tietokoneen toiminta, 4 op, koe 4.4.2014   

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

  1. [9 p] Tiedon esitys.
    1. [3 p] Anna kokonaisluvulle -11 kolme erilaista 8-bittistä tiedon talletusmuotoa muistissa. Nimeä talletusmuodot ja näytä kuinka luku -11 esitetään niiden avulla.
    2. [3 p] Miten liukuluvut esitetään muistissa? Mikä on liukulukujen normeerattu 32-bittinen esitysmuoto ja miksi sitä käytetään? Miten liukuluku 4.0 esitetään muistissa?
    3. [3 p] Mitä tarkoittavat käsitteet Little Endian ja Big Endian tiedon talletuksen yhteydessä? Anna kuvaava esimerkki käyttäen 32-bittistä kokonaislukua 0x1122AABB.
     
  2. [9 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] Miten ja milloin prosesseja luodaan järjestelmään? Miten ja milloin niitä poistetaan järjestelmästä? Käytä esimerkkinä korkean tason kielellä (esim. Java tai C) kirjoitettua ohjelmaa P.
    3. [3 p] Mikä on prosessin suoritinympäristö (processor context)? Mihin sitä tarvitaan ja mitä tietoja siihen kuuluu? Mikä on prosessin vaihto (process switch) ja kuinka se toteutetaan konekäskytasolla?

     
  3. [9 p] Java
    1. [1 p] Mikä on Java virtuaalikone (Java virtual machine, Java VM, JVM)?
    2. [2 p] P on Javalla kirjoitettu pieni ohjelma. Kuinka P suoritetaan tulkitsemalla? Missä muodossa P on suoritushetkellä ja kuinka se on saatu siihen? Milloin ja miksi tulkitseminen olisi parempi vaihtoehto kuin ne kolme muuta suoritusvaihtoehtoa?
    3. [2 p] P on Javalla kirjoitettu pieni ohjelma. Kuinka P suoritetaan kääntämällä? Missä muodossa P on suoritushetkellä ja kuinka se on saatu siihen? Milloin ja miksi kääntäminen olisi parempi vaihtoehto kuin ne kolme muuta suoritusvaihtoehtoa?
    4. [2 p] P on Javalla kirjoitettu pieni 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 ne kolme muuta suoritusvaihtoehtoa?
    5. [2 p] P on Javalla kirjoitettu pieni ohjelma. Kuinka P suoritetaan Java-suorittimessa? Missä muodossa P on suoritushetkellä ja kuinka se on saatu siihen? Milloin ja miksi Java-suoritin olisi parempi vaihtoehto kuin ne kolme muuta suoritusvaihtoehtoa?

     
  4. [9 p] Titokone, TitoTrainer ja ttk-91. Kokonaislukuarvoinen funktio ffunny(x, y, z) palauttaa arvonaan lausekkeen y+z/x arvon. Parametrit x ja y ovat arvoparametreja ja z on viiteparametri. Kokonaislukuarvoiset muuttujat a, b ja c on määritelty pääohjelmatasolla.
    1. [3 p] Toteuta (ttk-91 symbolisella konekielellä) funktiota  ffunny() kutsuva lauseke a=ffunny(123, b, c).
    2. [3 p] Toteuta funktiota  ffunny() kutsuva lauseke a=ffunny(a+1, 5554444, a+1).
    3. [3 p] Toteuta kokonaislukuarvoinen funktio ffunny(x, y, z),

      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