581305-6 Tietokoneen toiminta, 2 ov, erilliskoe 4.11.2003

Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot: oma nimi, henkilötunnus, kokeen tai kurssin nimi, nimikirjoitus ja sivunumero.
  1. [15 p] Prosessi
    1. [5 p] Mikä on prosessi? Mikä on prosessin esitysmuoto järjestelmässä? Tarkenna.
    2. [5 p] Missä eri tiloissa prosessi voi olla? Missä ovat prosessin tiedot prosessin eri tilojen aikana? Suorittimella, muistissa, levyllä?
    3. [5 p] Oletetaan, että levy-I/O:ta odottavalle prosessille Q tulee laitekeskeytys (device interrupt) kun joku toinen prosessi P on suoritusvuorossa. Mitä järjestelmässä tapahtuu tälläin? Kerro erityisesti kaikki tilanvaihdot prosesseille P ja Q.

  2. [15 p] I/O:n toteutus. Käsitellään tässä käyttäjätason prosessia P, joka kirjoittaa 2000 sanan datasegmentin kovalevylle. Käytössä on suoraa I/O:ta (direct I/O, programmed I/O) käyttävä toteutus.
    1. [2 p] Mitkä kaikki laitteiston osat osallistuvat I/O:n toteuttamiseen?
    2. [3 p] Mitkä kaikki prosessit osallistuvat I/O:n toteuttamiseen? Missä laitteiston osassa kukin prosessi on (suorittamassa koodiaan)?
    3. [4 p] Mitä kaikkea järjestelmässä tapahtuu siitä hetkestä alkaen kun P aloittaa I/O:n, siihen hetkeen asti, kun P jatkaa suoritustaan I/O:n jälkeen?
    4. [2 p] Miten tilanne (kohdat a-c) muuttuisi, jos käytössä olisikin epäsuora I/O (indirect I/O)?
    5. [2 p] Miten tilanne (kohdat a-c) muuttuisi, jos käytössä olisikin DMA-perustainen I/O?
    6. [2 p] Mitä tarkoittaa käsite "muistiinkuvattu I/O" (memory-mapped I/O)?


  3. [15 p] Anna selkeä määrittely seuraaville käsitteille:
    1. [3 p] Etuoikeutettu tila (supervisor state)?
    2. [3 p] Keskeytys (exception, interrupt)
    3. [3 p] Hamming-koodi
    4. [3 p] Aktivointitietuepino
    5. [3 p] Java virtuaalikone (JVM)


  4. [15 p] Ttk-91 koneen konekieli. Tietuetyypin typeRec={Id, Age, Salary[12]} mukaisille tietueille Rec1 ja Rec2 on varattu tilaa muistista. Niiden sijainteja ei tiedetä (eli symboleja Rec1 ja Rec2 ei voi käyttää koodissa), mutta pääohjelmatasolla määritellyt osoitinmuuttujat ptrRec1 ja ptrRec2 sisältävät niiden osoitteet. Esimerkiksi, osoitinmuuttuja ptrRec1 osoittaa tietueeseen Rec1 eli osoitinmuuttujan ptrRec1 arvo on tietueen Rec1 osoite. Tietueiden kentät on talletettu annetussa järjestyksessä. Kenttä Salary on 12-alkioinen taulukko, jossa alkion Salary[i] tarkoittaa kyseisen henkilön palkkaa i::ntenä kuukautena. Kuukaudet (i) numeroidaan tässä 0, 1, ..., 11. Muuttujat I ja X on myös määritelty pääohjelmatasolla.

    Anna ttk-91 koneen symbolisella konekielellä käskyt, jotka suoritettaessa tekevät annetut toimenpiteet:
     
    1. [3 p] X = Rec1.Age;            # kenttä Age tietueessa Rec1, eli
                                                  # kenttä Age osoitinmuuttujan ptrRec1 osoittamassa tietueessa.
                                                  # X saa arvokseen tietueen Rec1 kentän Age arvon.
    2. [2 p] Rec1.Age = Rec2.Age;
    3. [3 p] X = Rec1.Salary[6];
    4. [2 p] X = Rec1.Salary[I];
    5. [2 p] Rec1.Salary[I] = Rec2.Salary[I];
    6. [3 p] Nollaa osoitinmuuttujan ptrRec1 osoittama tietue, eli aseta sen kaikkien kenttien arvoksi nolla.

    TTK-91 konekielen käskyt ovat: NOP, STORE, LOAD, IN, OUT, ADD, SUB, MUL, DIV, MOD, AND, OR, XOR, SHL, SHR, COMP, JUMP, JNEG, JZER, JPOS, JNNEG, JNZER, JNPOS, JLES, JEQU, JGRE, JNLES, JNEQU, JNGRE, CALL, EXIT, PUSH, POP, PUSHR, POPR, SVC