581305-6 Tietokoneen toiminta, 4 op, erilliskoe 11.9.2007
Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot:
nimi ja nimikirjoitus, henkilötunnus tai opiskelijanumero, kurssin nimi
ja sivunumero.
- [9 p] Konekäskyt.
- Mikä on konekäsky? Mikä on symbolinen konekäsky?
- Miten konekielisiä ohjelmia suoritetaan?
- Miten symbolisella konekielellä kirjoitettuja ohjelmia suoritetaan?
- Miten korkean tason ohjelmointikielellä kirjoitettuja ohjelmia suoritetaan?
Miten Java-ohjelmien suoritus eroaa "tavallisilla" lohkorakenteisilla (esim. C, Fortran) kielillä kirjoitettujen ohjelmien suorituksesta?
- [9 p] Etuoikeutetut suoritustila (priviledged execution mode).
- Mitkä on (konekäskyjen) etuoikeutettu suoritustila? Mihin sitä tarvitaan?
- Miten etuoikeutettu suoritustila eroaa tavallisesta (user mode) suoritustilasta?
- Milloin ja miten suoritustila vaihtuu tavallisesta etuoikeutettuun?
- Milloin ja miten suoritustila vaihtuu etuoikeutetusta tavalliseen?
- [9 p] I/O:n toteutus. Käsitellään tässä käyttäjätason
prosessia P, joka haluaa kirjoittaa 2048 tavun datasegmentin kovalevylle. Käytössä
on epäsuoraa I/O:ta (indirect I/O) käyttävä toteutus.
I/O:n toteutukseen osallistuu laiteajuriprosesi ja laiteohjainprosessi.
- Missä laitteiston osassa kukin prosessi on (suorittamassa koodiaan)?
- Mitä tarkoittaa käsite "muistiinkuvattu I/O" (memory-mapped I/O)? Mikä muu vaihtoehto I/O:n toteuttamiseen on olemassa?
- Miten ja milloin laiteohjain tietää, mitä sen pitää tehdä? Kuka antaa sille ohjeita ja miten?
- Miten ja milloin laiteajuri tietää, että laiteohjain on tehnyt sille annetun tehtävän?
- Miten ja milloin sovellus P tietää, että sen pyytämä I/O on tehty? Kuka kertoo sen P:lle ja miten?
- [9 p] Aliohjelmat ja funktiot. Aliohjelma Limits(Arr, n, big, small) palauttaa parametrina annetun n-alkioisen taulukon suurimman ja pienimmän alkioiden arvot ulostuloparametreissa big ja small. Limits() ei siis ole funktio. Esimerkiksi, jos parametrina olisi 4-alkioinen taulukko T={4, 6, 2, 8}, niin aliohjelmakutsusta Limits(T, 4, hi, lo) paluun jälkeen muuttujan hi arvo olisi 8 ja muuttujan lo arvo olisi 2. Parametri Arr on viiteparametri, n on kokonaislukuarvoinen arvoparametri, big ja small ovat kokonaislukuarvoisia viiteparametreja.
- Anna ttk-91 koneen symbolisella konekielellä käskyt, joilla aliohjelmaa Limits() käyttäen lasketaan ja tulostetaan globaalin (pääohjelmatasolla määritellyn) 40-alkioisen taulukon Salaries suurimman ja pienimmän alkion arvot.
- Muokataan aliohjelma Limits funktioksi fLimits(Arr, n): {big, small}, joka palauttaa siis arvonaan kaksi kokonaislukua (kyseisen taulukon suurimman ja pienimmän alkion arvot). Esimerkiksi, jos parametrina olisi 4-alkioinen taulukko T={4, 6, 2, 8}, niin kutsun {hi, lo} = fLimits(T, 4) paluun jälkeen muuttujan hi arvo olisi 8 ja muuttujan lo arvo olisi 2. Parametri Arr on viiteparametri ja n on kokonaislukuarvoinen arvoparametri; paluuarvot big ja small ovat kokonaislukuarvoisia.
Anna ttk-91 koneen symbolisella konekielellä käskyt, joilla funktiota fLimits() käyttäen lasketaan ja tulostetaan globaalin (pääohjelmatasolla määritellyn) 40-alkioisen taulukon Salaries suurimman ja pienimmän alkion arvot.
HUOM: Aliohjelmaa Limits() siis ei tarvitse esittää lainkaan.
Noudata suositusten mukaista aliohjelmien (funktioiden) toteutustapaa ja 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