581305-6 Tietokoneen toiminta, 5 op, koe 8.9.2015  

Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot: nimi ja nimikirjoitus, opiskelijanumero ja kurssin nimi.
Kuhunkin tehtävään riittää noin 1-2 sivun vastaus.
Tämä koe on erilliskoe ja sen koealueena on koko kurssi.
  1. [9 p] IEEE standardin mukaiset 32 bitin liukuluvut.
    1. [2 p] Miten liukuluvut eroavat reaaliluvuista? Anna konkreettinen esimerkki.
    2. [3 p] Mikä on IEEE standardin mukainen 32-bittinen liukulukujen esitystapa?
      Mitä tarkoittaa esitysmuodon normalisointi? Mitä hyötyä siitä on ja milloin sitä käytetään?
    3. [2 p] Mitkä ovat lukujen +8.0 ja -0.25 IEEE standardin (32 bittiä) mukaiset esitysmuodot?
    4. [2 p] 32-bittinen liukuluku voidaan tallettaa Little-Endian tai Big-Endian talletusmuodossa. Selitä, miten nämä eroavat toisistaan. Anna joku konkreettinen esimerkki (esimerkiksi luvulla +8.0).
     
  2. [9 p] Konekäskyjen suoritus. Ajatellaan tilannetta, jossa suorituksessa oleva prosessi P suorittaa konekäskyä "load r1, tbl(r2)". Ohjelmointivirheen vuoksi r2:n arvo onkin nyt hyvin suuri (6543210) ja viittaus kohdistuu P:n muistialueen ulkopuolelle.
    1. [1 p] Missä kohtaa käskyjen nouto- ja suoritussykliä suorittava laitteisto havaitsee tämän virheen?
    2. [2 p] Kuinka virheeseen reagoidaan käskyjen nouto- ja suoritussyklin tasolla?
    3. [2 p] Kuinka virheen käsittely on toteutettu käyttöjärjestelmätasolla ja kuinka käyttöjärjestelmä reagoi virheeseen?
    4. [2 p] Kuinka kohtien (a-c) vastauksesi muuttuisi, jos kyseistä konekäskyä suoritettaessa r2:n arvo olisi sallituissa rajoissa, mutta käskyn suorituksen aikana tapahtuisi laitekeskeytys?
    5. [2 p] Mikä on etuoikeutettu käskyjen suoritustila, kuinka se liittyy tähän asiaan ja kuinka se on käytännössä toteutettu käskyjen suoritussyklissä?

  3. [9 p] Ohjelma ja sen suoritus järjestelmässä. Tarkastellaan prosessia P.
    1. [2 p] P on esitetty järjestelmässä sen kuvaajan (PCP, Process Control Block) avulla.
      Mitä tietoja P:n PCB:ssä on?
    2. [2 p] Milloin P on tilassa valmis suoritukseen (Ready, Ready-to-Run)?
      Ovatko P:n tiedot tällöin suorittimella (CPU), muistissa vai levyllä?
    3. [3 p] Milloin P on tilassa suorituksessa (Running)?
      Ovatko P:n tiedot tällöin suorittimella (CPU), muistissa vai levyllä?
    4. [2 p] Milloin P on tilassa odottaa (waiting, suspended)?
      Ovatko P:n tiedot tällöin suorittimella (CPU), muistissa vai levyllä?
       
  4. [9 p] Titokone, TitoTrainer ja ttk-91. Taulukko Table on 2-ulotteinen ja se on talletettu riveittäin. Siinä on 5 riviä ja 3 saraketta. Muuttujat i, j ja x on määritelty pääohjelmatasolla.
    1. [3 p] Toteuta ttk-91 symbolisella konekielellä lause
              Table [3, 2] = 111

    2. [3 p] Voit olettaa, että indeksien i ja j arvot ovat sallituissa puitteissa. Toteuta ttk-91 symbolisella konekielellä lause
              x = Table [i, j]

       
    3. [3 p] Funktio Get(A, Rows, Cols, r, c) palauttaa 2-ulotteisen taulukon A sen alkion A[r,c] arvon. A on talletettu riveittäin, siinä on Rows riviä ja Cols saraketta. Funktio Get myös tarkistaa, että r ja c ovat sallituissa rajoissa, ja käsittelee mahdolliset virhetilanteet. Parametri A on viiteparametri ja muut ovat arvoparametreja. Toteuta ttk-91 symbolisella konekielellä funktiota Get() kutsumalla lause
              x = Table [i, j]



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