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.
- [15 p] Prosessi (process).
- [3 p] Mikä on prosessin esitysmuoto järjestelmässä?
- [3 p] Mitkä ovat prosessin suoritusaikaiset tilat (state)?
- [3 p] Miten prosessin tila näkyy käyttöjärjestelmälle (operating
system)?
- [2 p] Miten prosessin tila näkyy prosessille itselleen?
- [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.
- [15 p] Ohjelmien suoritus
- [4 p] Miten suoritin suorittaa konekielisiä ohjelmia?
- [5 p] Minkä tyyppiset tapahtumat aiheuttavat poikkeuksia käskyjen
normaaliin suoritusjärjestykseen? Anna mahdollisimman tyhjentävä
selitys eri poikkeustyypeistä.
- [3 p] Miten nämä poikkeustilanteet käsitellään?
- [3 p] Miten poikkeustilanteiden käsittely suhtautuu aliohjelmakutsuun
ja aliohjelmasta paluuseen? Erot/samankaltaisuudet?
- [15 p] Java-ohjelmien suoritus Pentium-suorittimella varustetussa
tietokoneessa. Oletetaan, että Java-ohjelmassasi on lauseke A = B+C;
- [3 p] Mikä on tuon lausekkeen esitysmuoto tietokoneen muistissa
suoritusaikana? Onko se korkean tason kieltä vai konekieltä?
- [2 p] Missä sijaitsevat muuttujien A, B ja C arvot? Ovatko ne
laiterekisterissä vai muistissa? Miten niihin viitataan?
- [3 p] Minkälainen prosessi on suoritusvuorossa tuon Java-ohjelman
lausekkeen suoritusaikana?
- [5 p] Miten Pentium-suorittimella varustettu tietokone suorittaa tuon
Java-ohjelman lausekkeen? Minkälaisia vaihtoehtoisia suoritustapoja on
olemassa? Mitkä ovat erilaisten suoritustapojen edut/haitat?
- [2 p] Miten Java-ohjemien suoritus eroaa C-ohjelmien suorituksesta?
- [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.
- [3 p] Anna konekäskyt, joilla tulostetaan alkion T[65] arvo ja sen
osoite.
- [3 p] Anna konekäskyt, joilla tulostetaan alkion T[k] arvo. Voit (epärealistisesti)
olettaa, että muuttujan k arvo on sallituissa rajoissa.
- [3 p] Anna konekäskyt, joilla alustetaan taulukko T siten, että T[i]
= i2 + 654321 kaikille T:n alkioille.
- [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.
- [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