Tietokoneen toiminta, 2 ov
Kurssikuulustelu 13.2.2003  

Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot: oma nimi, opiskelijanumero (tai henkilötunnus),
  kurssin nimi, nimikirjoitus ja sivunumero.

 

  1. [12 p] Konekäskyjen suoritus.
    1. [2 p] Millä tavoin suoritin (processor) suorittaa konekäskyn?
    2. [2 p] Miten suoritin tietää, mikä konekäsky on kulloinkin suoritusvuorossa?
    3. [3 p] Mitä ovat keskeytykset (exception, interrupt) ja minkä tyyppisiä keskeytyksiä on olemassa?
    4. [2 p] Miten keskeytykset käsitellään suorittimella?
    5. [3 p] Mitä tarkoittaa käsite "etuoikeutettu tila" (supervisor state, priviledged state) ja miten se vaikuttaa käskyjen suoritukseen?


  2. [12 p] Tiedon sijainti
    1. [3 p] Mainitse 3 eri tiedon sijaintipaikkaa konekäskyssä käytettävälle tiedolle (dataviite, ei koodiviite). Mitkä ovat niiden nopeudet (karkealla tasolla)?
      HUOM: välimuistia ei oteta huomioon tässä tapauksessa, vaikka data usein sijaitseekin siellä.
    2. [6 p] Anna kullekin tiedon sijaintipaikalle ttk-91 symbolista konekieltä käyttäen esimerkki (konekäsky), jossa juuri siinä sijaintipaikassa olevaan tietoon (dataan, ei koodiin) viitataan. Kerro erityisesti, missä käskyn suorituksen vaiheessa kyseinen viittaus tapahtuu ja miten viitattu tieto löytyy järjestelmästä konekäskyssä olevien tietojen perusteella.
    3. [3 p] Anna kullekin tiedon sijaintipaikalle esimerkki tiedosta, joka olisi järkevää tai välttämätöntä sijoittaa juuri siihen paikkaa eikä vaihtoehtoisiin sijaintipaikkoihin. Anna perustelut, miksi näin kannattaisi tai olisi välttämätöntä tehdä.


  3. [12 p] I/O:n toteutus. Käsitellään tässä käyttäjätason prosessia P, joka kirjoittaa 20000 sanan datasegmentin kovalevylle. Käytössä on suoraa I/O:ta (direct I/O) käyttävä toteutus.
    1. [2 p] Mitkä kaikki laitteiston osat osallistuvat I/O:n toteuttamiseen?
    2. [2 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?


  4. [12 p]  Ttk-91 koneen konekieli. Kokonaislukuarvoiset muuttujat X ja I on määritelty pääohjelmatasolla. Kokonaislukuarvoinen taulukko T[100] on määritelty pääohjelmatasolla. Taulukossa on siis 100 alkiota (alkiot T[0], ..., T[99]). Tietuetyypin typeRec={Id, Age, Salary} mukaisille tietueille Rec1 ja Rec2 on varattu tilaa pääohjelmatasolla. Tietueiden Rec1 ja Rec2 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. Tietueiden kentät on talletettu annetussa järjestyksessä. Anna ttk-91 koneen symbolisella konekielellä käskyt, jotka suoritettaessa tekevät annetut toimenpiteet:
    1. [2 p] X = T[23];
    2. [2 p] X = T[I];                                  # oleta (epärealistisesti), että I:n arvo on välillä [0,99]
    3. [2 p] Nollaa taulukko T, eli aseta sen kaikkien alkioiden arvoksi nolla.
    4. [2 p] X = Rec1.Age;                       # kenttä Age tietueessa Rec1, eli
                                                             # kenttä Age osoitinmuuttujan ptrRec1 osoittamassa tietueessa
    5. [2 p] Rec1.Salary = Rec2.Salary;
    6. [2 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