Tietokoneen toiminta, 2 ov                                              
Uusintakuulustelu 4.11.2002  (Avoin yo)

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

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] Java
    1. [3 p] Mitä yhteistä Java-ohjelmien suorittamisella on ttk-91 ohjelmien suorittamisella Koksi simulaattorissa?
    2. [3 p] Mitä eroa Java-ohjelmien suorittamisella on ttk-91 ohjelmien suorittamisella Koksi simulaattorissa?
    3. [3 p] Mikä on Java virtuaalikone (JVM, Java Virtual Machine)? Mikä on sen merkitys?
    4. [3 p] Miten JVM eroaa tavallista suorittimista (esim, Intel Pentium, IBM PowerPC, AMD Athlon)?
       
  3. [12 p] Tiedon sijainti
    1. [3 p] Mainitse 3 eri tiedon sijaintipaikkaa konekäskyssä viitattavalle tiedolle (dataviite, ei koodiviite). Mitkä ovat niiden nopeudet (karkealla tasolla)?
    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ä.
  4. [12 p]  Ttk-91 koneen konekieli. Kokonaislukuarvoinen taulukko T[80] on määritelty pääohjelmatasolla. Taulukossa on siis 80 alkiota (alkiot 0,...,79). Kokonaislukumuuttuja k on myös määritelty pääohjelmatasolla.
    1. [2 p] Anna konekäskyt, joilla tulostetaan alkion T[65] arvo ja sen osoite.
    2. [2 p] Anna konekäskyt, joilla tulostetaan alkion T[k] arvo. Voit (epärealistisesti) olettaa, että muuttujan k arvo on sallituissa rajoissa.
    3. [3 p] Anna konekäskyt, joilla alustetaan taulukko T siten, että T[i] = i2 + 654321 kaikille T:n alkioille.
    4. [3 p] Tee aliohjelma Alusta(S, N), joka kutsuttaessa alustaa kokonaislukuarvoisen N-alkioisen taulukon S siten, että S[i] = i2 + 654321 kaikille taulukon S alkioille. Noudata suositusten mukaista aliohjelmien (funktioiden) toteutustapaa ja kutsumekanismia. Parametri S on viiteparametri ja parametri N on arvoparametri.
    5. [2 p] Anna ttk-91 symbolisen konekielen konekäskyt, joilla aliohjelmaa Alusta(S, N) käyttäen alustetaan taulukko T. Noudata suositusten mukaista aliohjelmien kutsumekanismia. Parametri S on viiteparametri ja parametri N on arvoparametri.

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