581305-6 Tietokoneen toiminta, 4 op, erilliskoe 22.1.2008   

Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot: nimi ja nimikirjoitus, henkilötunnus tai opiskelijanumero, kurssin nimi ja sivunumero.
  1. [9 p] Tiedon esitysmuodot
    1. Miten kokonaislukuja talletetaan muistiin ja käsitellään suorittimella?
    2. Miten liukulukuja talletetaan muistiin ja käsitellään suorittimella? Miten käsittely eroaa kokonaislukujen käsittelystä?
    3. Miten kuvia talletetaan muistiin ja käsitellään suorittimella? Miten käsittely eroaa kokonaislukujen käsittelystä?
    4. [3 p] Haluat luoda uuden tietotyypin (esim. porsaan saparo, hirven sarvi tai tunteen palo). Miten tällainen tieto talletetaan muistiin ja miten sitä käsitellään suorittimella? Miten käsittely eroaa kokonaislukujen käsittelystä?
       
  2. [9 p] Prosessi (process).
    1. Piirrä prosessin suoritusaikaisista tiloista (process state) 5-tilainen tilakaavio. Kerro tilojen nimet. Piirrä ja selitä niiden väliset tilasiirtymät.
    2. Anna käytännön esimerkki tilanteesta, jossa prosessi P siirtyy "suorituksessa" tilasta johonkin toiseen tilaan ja seuraavana suoritettavan prosessina on prosessi Q. Erityisesti mainitse, mikä tapahtuma (X) aiheutti tilasiirtymän ja mitä järjestelmässä tapahtuu rekisteritasolla tapahtuman X seurauksena? Mitä tietoja P:stä otetaan talteen ja minne? Mitä kaikkea tulee tehdä, että prosessin Q suoritus voi jatkua siitä kohtaa, missä se oli aikaisemmin keskeytynyt? Kuka sen tekee? Siis, mitä tapahtuu järjestelmässä rekisteritasolla tapahtuman X jälkeen prosessin Q seuraavana suoritusvuorossa olevan käskyn suoritukseen asti?
       
  3. [9 p, max 2 sivua tekstiä] Mitä tarkoitetaan käsitteellä "ohjelman suorittaminen tietokoneessa"? Huomioi vastauksessasi erilaiset ohjelmien suoritustavat. Ota vastauksessasi huomioon myös ohjelmien esitysmuoto ohjelmoijalle, käyttöjärjestelmälle ja suorittimelle.
     
  4. [9 p] Taulukot ja aktivointitietue. Oletetaan, että meillä on kaksiulotteinen kokonaislukutaulukko A[5,4]. Taulukossa A on 20 alkiota 5 rivissä, joista kussakin 4 alkiota. Taulukon A alkiot ovat siis A[0,0]...A[4,3]). Taulukko A on talletettu riveittäin. Muuttujat i, j ja k on määritelty pääohjelmatasolla.
    1. Jos taulukko A on talletettu muistiosoitteeseen 185, niin missä muistiosoitteessa on taulukon alkio A[2, 3]?
    2. Toteuta ttk-91 symbolisella konekielellä sijoituslause T[i] = A[j, k];
    3. Selitä sanallisesti, mitä tarkoittaa käsite aktivointitietuepino (activation record stack). Mikä se on ja mihin sitä käytetään?
    4. [3 p, vaikea tehtävä, tee jos on aikaa] Useimmissa käytetyissä ohjelmointikielissä aliohjelman (funktion) koodissa voi viitata ainoastaan aliohjelman paikallisiin tietorakenteisiin tai sitten globaaleihin pääohjelmatason tietorakenteisiin. Joissakin ohjelmointikielissä voidaan kuitenkin viitata myös aliohjelmien kutsupinossa aikaisemmin olevien aliohjelmien tietorakenteisiin. Aliohjelmassa esiintyvän tunnuksen (esim. y) merkitys voi tällöin vaihdella sen mukaan, mitä aliohjelmia kutsumalla johonkin tiettyyn aliohjelmaan on päädytty. Oletetaan nyt, että funktiota fLast on kutsuttu funktiosta fMiddle ja että funktion fMiddle sisällä on määritelty muuttuja y, johon halutaan viitata funktion fLast koodissa. Kuinka tämä tapahtuu? Anna esimerkki sijoituslauseelle x = y; missä x on paikallinen muuttuja funktiossa fLast ja y on paikallinen muuttuja funktiossa fMiddle.

    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