581305-6 Tietokoneen toiminta, 4 op (2 ov), erilliskoe 11.4.2006   

Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot: nimi ja nimikirjoitus, henkilötunnus tai opiskelijanumero, kurssin nimi ja sivunumero.
  1. [15 p] Tiedon esitysmuodot
    1. [2 p] Anna desimaaliluvut +26 ja -26 8-bittisessä 2-komplementin heksadesimaaliesitysmuodossa
    2. [2 p] Anna desimaaliluvut +26 ja -26 8-bittisessä etumerkkibitin sisältävässä heksadesimaaliesitysmuodossa
    3. [2 p] Anna desimaaliluvut +26 ja -26 8-bittisessä 127-vakiolisäyksen heksadesimaaliesitysmuodossa
    4. [3 p] Mitä desimaalilukua 32-bittinen IEEE:n standardin mukainen bittiesitys 0xC1600000 tarkoittaa?
      (0x-etuliite tarkoittaa siis, että kyseessä on heksadesimaaliesitys)
    5. [3 p] Anna konkreettinen liukulukuesimerkki tilanteesta jossa X+Y = X, kun Y > 0. Perustele.
    6. [3 p] Oletetaan, että muistipaikkaan 0x124 (tavuosoite) on talletettu 0x12345 nelitavuisena kokonaislukuna. Anna muistipaikan 0x124 sisältö (i) Little Endian ja (ii) Big Endian talletusmuodossa. Selitä myös sanallisesti ero Big Endian ja Little Endian talletusmuotojen välillä.

     
  2. [15 p] Prosessi (process)
    1. [3 p] Mikä on prosessi?
    2. [4 p] Mitä tietoja prosessin kuvaaja (Process Control Block) tyypillisesti sisältää.
    3. [4 p] Piirrä prosessin suoritusaikaisista tiloista (process state) tilakaavio. Kerro tilojen nimet ja piirrä niiden väliset tilasiirtymät.
    4. [4 p] Miten, milloin ja miksi prosessin tila muuttuu? Käsittele neljä (4) mahdollista tilasiirtymää erikseen esimerkkitapahtuman avulla.

  3. [15 p] Keskeytykset
    1. [3 p] Määrittele käsite "keskeytys".
    2. [6 p] Minkälaisia oleellisesti erilaisia keskeytystyyppejä on olemassa? Anna ainakin 6 erilaista keskeytystä ja kerro mihin keskeytystyyppiluokkaan ne kuuluvat. Anna kuhunkin keskeytystyyppiluokkaan ainakin yksi esimerkki.
    3. [2 p] Miten laitteisto havaitsee keskeytykset? Anna täsmällinen esimerkki.
    4. [2 p] Miten käyttöjärjestelmä käsittelee keskeytykset? Anna täsmällinen esimerkki.
    5. [2 p] Miten mahdollisesti keskeytyneen ohjelman suoritus käytännössä jatkuu?

  4. [15 p] Aliohjelmat ja funktiot. Funktio Laske(X, Y, Z) on kokonaislukuarvoinen funktio, joka palauttaa lausekkeen
    f(X,Y,Z)=87*(X-6*Y)/Z+7654321 arvon. Kaikki parametrit ovat kokonaislukuarvoisia. Parametrit X ja Y ovat arvoparametreja, mutta parametri Z on viiteparametri. Globaalit muuttujat A, B ja C on määritelty ja alustettu pääohjelmatasolla.
    1. [4 p] Anna ttk-91 koneen symbolisella konekielellä käskyt, joilla funktion Laske() avulla lasketaan muuttujalle C uusi arvo C = f( A, 33, B).
    2. [2 p] Anna ttk-91 koneen symbolisella konekielellä käskyt, joilla funktion Laske() avulla lasketaan muuttujalle C uusi arvo C = f( -54321, 12345678, 12345).
    3. [2 p] Anna ttk-91 koneen symbolisella konekielellä käskyt, joilla funktion Laske() avulla lasketaan muuttujalle C uusi arvo C = f( C, C, C).
    4. [5 p] Toteuta ttk-91 koneen symbolisella konekielellä funktio Laske().
    5. [2 p] Oletetaan nyt, että funktion Laske asemesta meillä on aliohjelma LaskeT( X, Y, Z, T), joka palauttaa ulostuloparametrissaan T lausekkeen f(X,Y,Z)=87*(X-6*Y)/Z+7654321 arvon. Kaikki parametrit ovat kokonaislukuarvoisia. Parametrit X ja Y ovat arvoparametreja, mutta parametrit Z ja T ovat viiteparametreja.
      Anna ttk-91 koneen symbolisella konekielellä käskyt, joilla aliohjelman LaskeT() avulla lasketaan muuttujalle C uusi arvo C = f( A, 33, B).

    HUOM: Funktiota Laske() tai aliohjelmaa LaskeT() siis ei tarvitse esittää kohdissa a, b, c ja e.
    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