58123-3 Tietokoneen toiminta Loppukoe 26.2.1999 Kirjoita jokaisen vastauspaperisi yläreunaan kurssin nimi ja kokeen päivämäärä sekä nimesi, syntymäaikasi ja allekirjoituksesi. 1. Olet kirjoittanut isohkon, useasta ohjelmamoduulista koostuvan ohjelman jollakin yleisesti käytetyllä ohjelmointikielellä, esim. C-kielellä, Javalla tai Pascalilla ja tallettanut sen tietokoneesi muistiin. Jotta ohjelmasi voidaan suorittaa, se pitää muuttaa tietokoneen ymmärtämään muotoon. Tässä tarvitaan kääntäjää, linkittäjää ja lataajaa. a) Selvitä, mitä kääntäjä tekee. Mihin symbolitaulua tarvitaan? Entä mihin käytetään uudelleensijoitushakemistoa? Mitä käännöksen tuloksena saadaan? (8 p) b) Miksi tarvitaan linkittäjää? Mitä se tekee? (5 p) c) Mitä latauksessa tehdään? (2 p) 2. Moniajojärjestelmässä keskusmuistissa on useita prosesseja, joista korkeintaan yksi on kulloinkin suorituksessa. a) Mikä on prosessi? (1 p) b) Mitä tarkoittaa olla suorituksessa (running)? Mitä muita tiloja prosessilla on? (4 p) c) Milloin ja miten suorituksessa oleva prosessi siirtyy johonkin toiseen tilaan? Selvitä kaikki mahdolliset siirtymät suoritustilasta muihin tiloihin. (6 p) d) Mitä menetelmiä vuorottaja (scheduler) voi käyttää valitessaan kulloinkin suoritettavan prosessin? (4 p) 3. a) Laadi TTK-91 -tietokoneen symbolisella konekielellä ohjelma, joka laskee taulukon Taulu[0...49] alkioihin talletettujen lukujen summan ja tallettaa summan muistipaikkaan Sum. (6 p) b) Laadi funktio Summa (N,T), joka palauttaa arvonaan taulukon T[0...N-1] alkioiden summan. Funktiota Summa kutsutaan normaalin kutsumenettelyn mukaan välittämällä parametrit ja funktion paluuarvo pinossa. Voit olettaa, että parametrin N arvo on positiivinen. (5 p) c) Laadi pääohjelma, joka kutsuu funktiota Summa laskemaan taulukkoon Taulu[0...49] talletettujen lukujen summan ja tallettaa saadun summan muistipaikkaan Sum. (4 p) 4. Käytetään esimerkkinä tietokoneesta kurssilla esitettyä TTK-91 -tietokonetta, jonka prosessorissa on rekisterit LIMIT, BASE, MAR, MBR, TR, IR, PC, SR, R0-R5, SP ja FP. a) Kuvaa prosessorin rekistereiden tasolla, miten tehdään käskynouto. (7p) b) Esitä prosessorin rekisterien tasolla, miten suoritetaan käskyt: LOAD R2, =8 (R1) MUL R2, R2 STORE R2, @R2 (6 p) c) Miten muistin sisältö muuttuu näiden käskyjen suorituksen jälkeen, kun rekisterissä R1 on aluksi 2? (2 p)