581305-6 Tietokoneen toiminta, 4 op, koe 27.1.2012
Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot:
nimi ja nimikirjoitus, opiskelijanumero ja kurssin nimi.
Kuhunkin tehtävään riittää noin yhden sivun vastaus.
Koe arvostellaan myös syksyn 2011 kurssikokeen uusintakuulusteluna.
- [9 p] Tiedon esitys.
- Millä eri tavoin kokonaislukuja voi esittää muistissa?
- Miten liukuluvut esitetään muistissa? Mikä on liukulukujen normeerattu esitysmuoto ja miksi sitä käytetään?
- Mitä tarkoittavat käsitteet Little Endian ja Big Endian tiedon talletuksen yhteydessä? Anna kuvaava esimerkki.
- [9 p] Konekäskyjen suoritus.
- Määrittele käsite "käskyjen suoritussykli". Mitkä ovat sen vaiheet ja mitä vaiheissa tapahtuu? Anna konkreettinen esimerkki, kun suoritusvuorossa on konekäsky "jump methodUpd(r1)".
- Oletetaan, että käskyn suoritusaikana tapahtuu jokin virhetilanne. Kuinka tämä havaitaan? Kuinka käyttöjärjestelmä saa kontrollin ja käsittelee virhetilanteen? Mitä sitten tapahtuu? Anna konkreettinen esimerkki, kun suoritusvuorossa on konekäsky "jump methodUpd(r1)".
- Oletetaan, että levyohjain on saanut työnsä valmiiksi ja haluaisi ilmoittaa asiasta laiteajurilleen. Kuinka tämä tapahtuu konekäskyjen suoritustasolla? Kuinka laiteajuri saa lopulta suoritusvuoron? Mitä sitten tapahtuu? Anna konkreettinen esimerkki. Tee tarvittavat oletukset I/O:n tyypistä.
- [9 p] Ohjelman suoritus.
- Mikä on prosessi ja mikä on sen esitysmuoto järjestelmässä?
- Mitä järjestelmässä tapahtuu konekäskytasolla prosessin vaihdon yhteydessä? Käytä esimerkkinä tilannetta, jossa suorituksessa oleva prosessi P joutuu odottamaan I/O:n päättymistä ja seuraavaksi suoritetaan prosessia Q. Miten ja milloin suoritusvuoro siirtyy prosessille Q?
- Milloin ja miten b-kohdan tapauksessa prosessi P pääsee taas takaisin suoritukseen? Miten taataan, että P:n suoritus jatkuu juuri oikeasta kohdasta ja että P:n suoritusympäristö on juuri samanlainen kuin mitä se oli P:n suorituksen keskeytyessä aikaisemmin?
-
[9 p] Titokone, TitoTrainer
ja ttk-91. Kokonaislukuarvoinen funktio ffunny(x, y, z) palauttaa arvonaan lausekkeen y+z/x arvon. Parametrit x ja y ovat arvoparametreja ja z on viiteparametri. Kokonaislukuarvoiset muuttujat a, b ja c on määritelty pääohjelmatasolla.
- Toteuta ttk-91 symbolisella konekielellä funktiota ffunny() kutsuva lauseke a=ffunny(10, b, c).
- Toteuta ttk-91 symbolisella konekielellä funktiota ffunny() kutsuva lauseke a=ffunny(a+1, 7654321, a+1).
- Toteuta kokonaislukuarvoinen funktio ffunny(x, y, z),
Noudata suositusten mukaista aliohjelmien (funktioiden) kutsumekanismia.
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