581305-6 Tietokoneen toiminta, koe 12.6.2015                      in EnglishOther side in English

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 tavallinen erilliskoe ja sen koealue on koko kurssi.
Koe toimii myös korvaavana kuulusteluna kevään 2015 ohjatun itseopiskelukurssin kurssikuulustelulle.
  1. [9 p] IEEE standardin mukaiset liukuluvut
    1. [1 p] Miten liukuluku eroaa reaaliluvusta? Anna lukuesimerkki?
    2. [2 p] Mitä tarkoittaa liukuluvun normeeraus? Mitä hyötyä siitä on? Milloin sitä ei voi tehdä?
    3. [2 p] Mikä on piilobitti ja mitä hyötyä siitä on? Miten sitä käytetään?
    4. [2 p] Oletetaan, että liukulukuarvoisille muuttujille X ja Y on laskettu jotkut arvot.
      Miksi ei ole järkevää tehdä ehtolausetta "if (X==Y) then .... else ...."?
      Kuinka välttäisit tämän ongelman?
    5. [2 p] Anna liukuluvun -10.0 esitysmuoto 32-bittisessä IEEE liukulukustandardin Big-Endian esitysmuodossa.
     
  2. [9 p] Konekäskyjen suoritus. Anna joka kohtaan konekäskyn "ADD R1, T(R2)" suoritukseen liittyvä esimerkki.
    1. [3 p] Mikä on etuoikeutettu käskyjen suoritustila, mihin sitä tarvitaan ja kuinka se on käytännössä toteutettu käskyjen suoritussyklissä?
      Miten siitä palataan normaaliin käskyjen suoritustilaan?
    2. [3 p] Mitä ovat keskeytykset (interrrupts), mihin niitä tarvitaan ja kuinka ne on käytännössä toteutettu käskyjen suoritussyklissä?
    3. [3 p] Miten käyttöjärjestelmä käsittelee keskeytykset?
      Miten keskeytyksen käsittelyn jälkeen palataan keskeytyneen ohjelman suorittamiseen?
       
  3. [9 p] Prosessin suoritus järjestelmässä
    1. [3 p] Miten prosessin vaihto tapahtuu konekäskytasolla? Oletetaan, että (i) prosessi P on suorituksessa ja jää nyt odottamaan jotain tapahtumaa, ja että (ii) prosessi Q pääsee suoritukseen.
    2. [3 p] Anna esimerkki tilanteesta, jossa suorituksessa oleva prosessi (P) toteaa, että se ei voi jatkaa suoritustaan. Kuinka se kertoo halustaan käyttöjärjestelmälle (KJ)? Mitä järjestelmässä nyt tapahtuu?
    3. [3 p] Anna esimerkki tilanteesta, jossa KJ päättää, että suoritusvuorossa olevan prosessin (P) suoritusvuoro päättyy ja vuoro pitää antaa jollekin toiselle prosessille? Miten KJ pääsee päättämään yhtään mitään, kun prosessi P on suorituksessa? Mitä järjestelmässä nyt tapahtuu?
     
  4. [9 p] Titokone, TitoTrainer ja ttk-91. Funktio ElmSum (T, n, m) palauttaa arvonaan 2-ulotteisen n x m taulukon (matriisin) T alkioiden summan. Taulukossa T on siis n riviä ja m saraketta. Parametrit n ja m ovat arvoparametreja ja T on viiteparametri.
    2-ulotteinen taulukko Salary on määritelty pääohjelmatasolla ja siinä on 20 riviä ja 12 saraketta.
    Osoitinmuuttuja pPoints on määritelty pääohjelmatasolla ja se osoittaa 2-ulotteiseen taulukkoon, jossa on p riviä ja q saraketta.
    Muuttujat SalSum, p ja q on määritelty pääohjelmatasolla.
    1. [3 p] Toteuta ttk-91 symbolisella konekielellä (funktiota ElmSum kutsumalla) käskyt, joiden avulla muuttujaan SalSum saadaan taulukon Salary kaikkien alkioiden summa.
    2. [2 p] Toteuta ttk-91 symbolisella konekielellä (funktiota ElmSum kutsumalla) käskyt, joiden avulla rekisteriin r3 saadaan osoitinmuuttujan pPoints osoittaman taulukon (p riviä ja q saraketta) kaikkien alkioiden summa.
    3. [4 p] Toteuta ttk-91 symbolisella konekielellä funktio ElmSum().

      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