Tietokoneen toiminta, 2 ov
Helsingin yliopisto, Avoin yliopisto, uusintakuulustelu 29.9.2001

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

Tämä koe vain kesän 2001 luentokurssille aktiivisesti (vähintään 9/30 harjoitustehtäväpistettä) osallistuneille. Kokeen tulokset ovat valmiita 16.10.2001 mennessä. Tulokset näkyvät myös verkossa  (http://www.cs.helsinki.fi/u/kerola/tito/) heti arvostelun valmistuttua.

  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. [3 p] Miten prosessin tila näkyy käyttöjärjestelmälle (operating system)?
    4. [2 p] Miten prosessin tila näkyy prosessille itselleen?
    5. [4 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] Ohjelmien suoritus
    1. [4 p] Miten suoritin suorittaa konekielisiä ohjelmia?
    2. [5 p] Minkä tyyppiset tapahtumat aiheuttavat poikkeuksia käskyjen normaaliin suoritusjärjestykseen? Anna mahdollisimman tyhjentävä selitys eri poikkeustyypeistä.
    3. [3 p] Miten nämä poikkeustilanteet käsitellään?
    4. [3 p] Miten poikkeustilanteiden käsittely suhtautuu aliohjelmakutsuun ja aliohjelmasta paluuseen? Erot/samankaltaisuudet?

  3. [15 p] Java-ohjelmien suoritus Pentium-suorittimella varustetussa tietokoneessa. Oletetaan, että Java-ohjelmassasi on lauseke A = B+C;
    1. [3 p] Mikä on tuon lausekkeen esitysmuoto tietokoneen muistissa suoritusaikana? Onko se korkean tason kieltä vai konekieltä?
    2. [2 p] Missä sijaitsevat muuttujien A, B ja C arvot? Ovatko ne laiterekisterissä vai muistissa? Miten niihin viitataan?
    3. [3 p] Minkälainen prosessi on suoritusvuorossa tuon Java-ohjelman lausekkeen suoritusaikana?
    4. [5 p] Miten Pentium-suorittimella varustettu tietokone suorittaa tuon Java-ohjelman lausekkeen? Minkälaisia vaihtoehtoisia suoritustapoja on olemassa? Mitkä ovat erilaisten suoritustapojen edut/haitat?
    5. [2 p] Miten Java-ohjemien suoritus eroaa C-ohjelmien suorituksesta?

     

  4. [15 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. [3 p] Anna konekäskyt, joilla tulostetaan alkion T[65] arvo ja sen osoite.
    2. [3 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. [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. 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, 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