Tietokoneen toiminta, 2 ov                                              
Uusintakuulustelu 10.11.2003  (Avoin yo)

Tähän uusintakuulusteluun voivat osallistua vain kesällä 2003 Avoimen yliopiston tietokoneen toiminta -kurssille aktiivisesti osallistuneet (vähintään 8 harjoitustehtäväpistettä) opiskelijat. Arvosana määräytyy tämän tentin ja tehtyjen harjoitustehtävien perusteella. Tentti arvostellaan 27.11.2003 mennessä.

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

  1. [12 p] Prosessi
    1. [4 p] Mikä on prosessi? Mikä on prosessin esitysmuoto järjestelmässä? Tarkenna.
    2. [4 p] Missä eri tiloissa prosessi voi olla? Missä ovat prosessin tiedot prosessin eri tilojen aikana? Suorittimella, muistissa, levyllä?
    3. [4 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. [12 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) käyttävä toteutus.
    1. [3 p] Mitkä kaikki prosessit osallistuvat I/O:n toteuttamiseen? Missä laitteiston osassa kukin prosessi on (suorittamassa koodiaan)?
    2. [3 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?
    3. [2 p] Miten tilanne (kohdat a-c) muuttuisi, jos käytössä olisikin epäsuora I/O (indirect I/O)?
    4. [2 p] Miten tilanne (kohdat a-c) muuttuisi, jos käytössä olisikin DMA-perustainen I/O?
    5. [2 p] Mitä tarkoittaa käsite "muistiinkuvattu I/O" (memory-mapped I/O)?


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

     
  4. [12 p]  Ttk-91 koneen konekieli. Kokonaislukuarvoinen taulukko T[100] on määritelty pääohjelmatasolla. Taulukossa on siis 100 alkiota (alkiot 0,...,99).
    1. [3 p] Anna konekäskyt, joilla tulostetaan alkion T[65] arvo ja sen osoite.
    2. [3 p] Anna konekäskyt (siis ei aliohjelma), joilla alustetaan taulukko T siten, että kunkin alkion T[i] arvoksi tulee i*i+5. Esimerkiksi, alkion T[11] arvoksi tulee 126.
    3. [3 p] Tee aliohjelma Alusta(S, N), jolla alustetaan annetun N:n pituisen taulukon S alkiot (alkiot S[0], ..., S[N-1]) siten, että kunkin alkion S[i] arvoksi tulee i+N. Parametri S (alustettava taulukko) on viiteparametri ja parametri N (alustettavan taulukon pituus) on arvoparametri. Esimerkiksi, jos aliohjelman Alusta avulla alustetaan taulukko T, niin alkion T[11] arvoksi tulee 111.
    4. [3 p] Anna ttk-91 symbolisen konekielen konekäskyt, joilla aliohjelmaa Alusta(S, N) käyttäen alustetaan taulukko T. 

    Noudata suositusten mukaista aliohjelmien kutsumekanismia.

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