581305-6 Tietokoneen toiminta, 2 ov, loppukoe 5.6.2001

Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot: oma nimesi, henkilötunnus, kokeen tai kurssin nimi, nimikirjoitus ja sivunumero.
  1. [15 p] Prosessi (process)
    1. [3 p] Mikä on prosessin esitysmuoto järjestelmässä?
    2. [3 p] Mitkä ovat prosessin suoritusaikaiset tilat (state)?
    3. [2 p] Miten prosessin tila näkyy käyttöjärjestelmälle?
    4. [2 p] Miten prosessin tila näkyy prosessille?
    5. [5 p] Miten ja milloin prosessin tila muuttuu? Käsittele kukin mahdollinen tilasiirtymä erikseen. Kerro kustakin tilasiirtymästä esimerkkitapahtuma, joka voisi aiheuttaa kyseisen tilasiirtymän.

  2. [15 p] Tiedon sijainti.
    1. [3 p] Mainitse 3 eri tiedon sijaintipaikkaa, joissa suoritusaikana konekäskyssä viitattava tieto voi olla. 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 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. Mainitse myöskin, onko kyseessä data- vai koodiviite.
    3. [6 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. [15 p] Java-ohjelmien suoritus tulkitsemalla Pentium-suorittimella varustetussa tietokoneessa.
    Oletetaan, että Java-ohjelmassasi on lauseke A = B+C;
    1. [4 p] Mikä on tuon lausekkeen esitysmuoto tietokoneen muistissa suoritusaikana?
      Missä sijaitsevat muuttujien A, B ja C arvot? Ovatko ne laiterekisterissä vai muistissa? Miten niihin viitataan?
    2. [3 p] Miten Pentium-suorittimella varustettu tietokone suorittaa tuon Java-ohjelman lausekkeen?
    3. [3 p] Minkälainen prosessi on suoritusvuorossa tuon Java-ohjelman lausekkeen suoritusaikana?
    4. [5 p] Jos ohjelman suoritus tapahtuisikin JIT-käännöksen avulla, niin miten kohtien a, b ja c vastaukset muuttuisivat? 

  4. [15 p]  Ttk-91 koneen konekieli. Kokonaislukuarvoinen taulukko T[200] on määritelty pääohjelmatasolla. Taulukossa on siis 200 alkiota (alkiot 0,...,199). Kokonaislukumuuttuja k on myös määritelty pääohjelmatasolla.
    1. [4 p] Anna konekäskyt, joilla tulostetaan alkion T[k] arvo. Voit (epärealistisesti) olettaa, että muuttujan k arvo on sallituissa rajoissa.
    2. [4 p] Anna konekäskyt, joilla (käyttämättä aliohjelmakutsuja) alustetaan taulukko T siten, että T[i] = i2 + i - 3 kaikille T:n alkioille.
    3. [4 p] Tee aliohjelma Alusta(S, N), joka kutsuttaessa alustaa kokonaislukuarvoisen N-alkioisen taulukon S siten, että S[i] = i2 + i - 3 kaikille taulukon S alkioille. Noudata suositusten mukaista aliohjelmien (funktioiden) toteutustapaa ja kutsumekanismia. Parametri S on viiteparametri ja parametri N on arvoparametri. Voit (epärealistisesti) olettaa, että parametrien arvot ovat sallituissa rajoissa.
    4. [3 p] Anna konekäskyt, joilla aliohjelmaa Alusta(S, N) käyttäen alustetaan taulukko T[200] siten, että kunkin alkion T[i] arvoksi tulee  i2 + i - 3. Noudata suositusten mukaista aliohjelmien kutsumekanismia. Parametri S on viiteparametri ja parametri N on arvoparametri.

  5. 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