Tietokoneen toiminta, kurssikuulustelu 12.12.2007   

Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot: nimi ja nimikirjoitus, henkilötunnus tai opiskelijanumero, kurssin nimi ja sivunumero.
  1. [12 p] Järjestelmän näkemys ohjelman suoritukseen.
    1. Missä muodossa suoritin näkee suorituksessa olevan ohjelman?
    2. Miten suoritin suorittaa suoritusvuorossa olevaa ohjelmaa?
    3. Missä muodossa käyttöjärjestelmä näkee järjestelmässä suorituksessa olevat ohjelmat?
    4. Miten käyttöjärjestelmä suorittaa järjestelmässä suorituksessa olevia ohjelmia?
    5. Milloin ja mikä järjestelmän osa tekee päätöksen siitä, mihin tarkoitukseen (esim. minkä muuttujan arvon tai osoitteen tallettamiseen) jotain tiettyä suorittimen rekisteriä (esim. R2) kullakin hetkellä käytetään?
       
  2. [12 p] Korkean tason kielellä kirjoitettujen ohjelmien suoritus järjestelmässä
    1. [8 p] Millä eri tavoin korkean tason kielellä (esim. C, Pascal, Java, Fortan) kirjoitettuja ohjelmia voidaan suorittaa tietokonejärjestelmässä? Anna ainakin kolme selkeästi eri tyyppistä tapaa. Anna kullekin suoritustavalle ympäristö, jossa juuri se tapa olisi parempi kuin muut. Perustele esimerkkisi.
    2. Millä edellä mainituista tavoilla C-kielellä kirjoitettuja ohjelmia yleensä suoritetaan? Miksi?
    3. Millä edellä mainituista tavoilla Java-kielellä kirjoitettuja ohjelmia yleensä suoritetaan? Miksi?
       
  3. [12 p] Titokone, TitoTrainer ja ttk-91. Oletetaan, että meillä on yksiulotteinen kokonaislukutaulukko T[5] ja kaksiulotteinen kokonaislukutaulukko A[5,4]. Taulukossa T on siis 5 alkiota (alkiot T[0]...T[4]). Taulukossa A on 20 alkiota 5 rivissä, joista kussakin 4 alkiota. Taulukon A alkiot ovat siis A[0,0]...A[4,3]). Taulukko A on talletettu riveittäin. Muuttujat i, j ja k on määritelty pääohjelmatasolla.
    1. Jos taulukko A on talletettu muistiosoitteeseen 185, niin missä muistiosoitteessa on taulukon alkio A[2, 3]?
    2. Toteuta ttk-91 symbolisella konekielellä sijoituslause T[3] = A[3, 2];
    3. Toteuta ttk-91 symbolisella konekielellä sijoituslause T[i] = A[j, k];
    4. Kokonaislukuarvoinen funktio fJotain(V, p, M, r, s) palauttaa kokonaisluvun paluuarvonaan. Parametri V on p-alkioinen yksiulotteinen taulukko ja parametri M on kaksiulotteinen taulukko, jossa on r riviä ja s saraketta. Parametrit V ja M ovat viiteparametreja. Parametrit p, r ja s ovat arvoparametreja.
      Toteuta ttk-91 symbolisella konekielellä sijoituslause k = fJotain(T, 5, A, 5, 4);
    5. Oletetaan nyt, että edellämainitussa funktiossa fJotain() on määritelty yksi paikallinen muuttuja x ja funktion sisällä tälle paikalliselle muuttujalle x sijoitetaan parametritaulukon V alkion V[3] arvo.
      Toteuta ttk-91 symbolisella konekielellä tämä funktion sisäinen sijoituslause x = V[3];
    6. Selitä sanallisesti, mitä tarkoittaa käsite aktivointitietuepino (activation record stack). Mikä se on ja mihin sitä käytetään?

    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