581305-6 Tietokoneen toiminta, 2 ov, kurssikuulustelu 18.12.2000       (Other side in English in English)

Kirjoita jokaiseen vastauspaperiisi: oma nimi, nimikirjoitus, henkilötunnus, kurssin nimi ja sivunumero/sivumäärä
  1. [12 p] Muistihierarkia

    1. [4 p] Mainitse 4 eri nopeuksista muistihierarkian tasoa (fyysistä laitetta tai laitteistoa), joissa konekäskyssä viitattava tieto voi sijaita.

    2. [6 p] Anna jokaiselle neljälle tasolle konekäskyesimerkki, jossa sille tasolle sijaitsevaan tietoon viitataan. Oleta, että viitattava tieto on dataa (ei konekäsky). Missä kohtaa konekäskyn suoritusta kyseinen viittaus tapahtuu? Selitä, miksi esimerkin viittaus kohdistuu juuri kyseiselle tasolle, eikä (jommalle kummalle) naapuritasolle.

    3. [2 p] Anna jokaiselle neljälle tasolle konekäskyesimerkki, jossa sille tasolle sijaitsevaan tietoon viitataan. Oleta, että viitattava tieto on konekäsky (ei käsiteltävää dataa). Missä kohtaa konekäskyn suoritusta kyseinen viittaus tapahtuu? Selitä, miksi esimerkin viittaus kohdistuu juuri kyseiselle tasolle, eikä (jommalle kummalle) naapuritasolle.

  2. [12 p] I/O:n toteutus järjestelmässä. Oletetaan, että käyttäjätason ohjelma MyProg haluaa lukea levytiedoston MyFile 50 ensimmäistä merkkiä ohjelmassa MyProg määriteltyyn (globaaliin) taulukkoon MyChars. Oletetaan, että lukeminen tapahtuu kirjastorutiinin ReadFile(MyFile, 50, MyChars) avulla.

    Voit olettaa, että ReadFile:stä ei palata, ennen kuin kyseiset 50 merkkiä on luettu taulukkoon MyChars. Voit myös (epärealistisesti) olettaa, että tiedosto MyFile on auki ja suoraan käytettävissä ReadFile rutiinin kautta.

    1. [4 p] Mitkä prosessit ja/tai laitteet osallistuvat tämän I/O:n toteuttamiseen? Kerro kunkin prosessin/laitteen kohdalla lyhyesti, mikä on sen tehtävä tämän I/O:n toteuttamisessa.

    2. [8 p] Kuvaile tapahtumasarjana, mitä kaikkea järjestelmässä tapahtuu prosessien tasolla ReadFile:n kutsuhetkestä ReadFile:stä paluuseen. Kuvaile erityisesti, mikä prosessi/laite on kulloinkin suorituksessa. Kuvaile myöskin kaikki ne tapahtumat, joiden seurauksena jonkin prosessin tila (odottava, odottaa suoritusta, suorittaa) vaihtuu. Kerro myöskin, mitä tapahtumaa kukin odottava prosessi/laite on kulloinkin odottamassa.

    Tee itse (realistiset) oletukset puuttuvista tiedoista ja kirjaa ne näkyviin. Tekemäsi oletukset vaikuttavat vastauksen arvosteluun.

  3. [12 p] Java-ohjelmia voidaan suorittaa ainakin kolmella hyvin erilaisella tavalla. Kuvaile nämä kolme erilaista tapaa. Kiinnitä erityistä huomiota siihen, miten Java-ohjelmien suoritus suorittimen konekäskytasolla todella tapahtuu kussakin suoritustavassa ja miten suoritustavat eroavat toisistaan tässä suhteessa. Mainitse myös kunkin suoritustavan edut ja haitat muihin suoritustapoihin verrattuna. Vastauksen pituus ei saa ylittää 3 sivua.

    Bonus kysymys [1 p]: Mitä Java-ohjelmien suoritustapaa Transmetan Crusoe-suorittimen toteutus muistuttaa? Miksi?

  4. [12 p] Kukin taulukon Person[0..9] alkio on tietue, jonka kolme kokonaislukuarvoista kenttää ovat Age, ShoeSize ja Height.

    1. [4 p] Anna globaalin tietorakenteen Person määrittely ttk-91 koneen symbolisella konekielellä. Anna myös valekäskyt, joiden avulla tietueen kentät identifioidaan ja joiden avulla kenttiin viittaminen tapahtuu helposti. Pelkkä tietorakenteen määrittely riittää; sitä ei tarvitse alustaa.

    2. [4 p] Anna ttk-91 symbolisen konekielen käskyt, joilla suoritetaan sijoituslause Person[i].ShoeSize = ShSize; (taulukon Person alkion i kentän ShoeSize arvoksi tulee muuttujan ShSize arvo). Voit olettaa, että muuttujat i ja ShSize ovat globaaleja. Voit myös (epärealistisesti) olettaa, että muuttujien i ja ShSize arvot ovat järkeviä.

    3. [4 p] Toteuta ttk-91 symbolisella konekielellä aliohjelma SetHeight(Arr, k, val), joka asettaa em. Person-tyyppisen taulukon Arr k:nnen alkion Height-kentän arvoksi muuttujan val arvon. Arr on viiteparametri ja muut parametrit ovat arvoparametreja.
      Voit (epärealistisesti) olettaa, että parametrien arvot ovat järkeviä.
      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, LEQU, JGRE, LNLES, LNEQU, NGRE, CALL, EXIT, PUSH, POP, PUSHR, POPR, SVC