Tietokoneen toiminta (avoin yliopisto), 2 ov             Kurssikuulustelu 6.9.2004  

Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot: oma nimi, opiskelijanumero (tai henkilötunnus),
  kurssin nimi, nimikirjoitus ja sivunumero.

Arvostelu valmistuu 22.9.2004 mennessä. Kurssin tulokset ja arvosteluperusteet tulevat näkyville verkkoon kurssin aikataulusivulle linkitettynä heti arvostelun valmistuttua. Kokeeseen voi osallistua vain kurssilla aktiivisesti mukana olleet opiskelijat.

  1. [12 p] Konekäskyjen suoritus.
    1. Anna ttk-91 -esimerkki (konekäsky tai useampi) tilanteesta, jossa konekäskyn käsittelemä data sijaitsee itse konekäskyssä. Mitä hyötyä/haittaa tästä on?
    2. Anna ttk-91 -esimerkki (konekäsky tai useampi) tilanteesta, jossa konekäskyn käsittelemä data sijaitsee muistissa. Mitä hyötyä/haittaa tästä on?
    3. Anna ttk-91 -esimerkki (konekäsky tai useampi) tilanteesta, jossa konekäskyn käsittelemä data sijaitsee rekisterissä. Mitä hyötyä/haittaa tästä on?
    4. Oletetaan, että ttk-91 -koneessa on myös välimuisti. Anna ttk-91 -esimerkki (konekäsky tai useampi) tilanteesta, jossa konekäskyn käsittelemä data sijaitsee välimuistissa. Mitä hyötyä/haittaa tästä on?
       
    5. [4 p] Oletetaan, että suoritetaan ohjelmaa (ja konekäskyä) itseään muuttava konekäsky  

      KK    Store  r1, KK

      Miten tämä käsky vaikuttaa kyseisen ohjelman (konekäskyn) suoritukseen?
      Muuttaako se ohjelman suoritusta joskus tai joka suorituskerta? Miten? Milloin?
      Eikö se koskaan muuta ohjelman suoritusta? Miksi?

  2. [12 p] Prosessi (process).
    1. [2 p] Määrittele käsite prosessi. Miten se eroaa ohjelmasta?
    2. [4 p] Mikä on prosessin esitysmuoto järjestelmässä? Mitä tietoja siinä on? Missä se sijaitsee?
    3. [2 p] Mitä järjestelmässä tapahtuu prosessin vaihdon yhteydessä? Mitä aikaisemmalle prosessille tapahtuu?
    4. [2 p] Anna esimerkki prosessin vaihto -tilanteesta, jossa odotustilassa (waiting) oleva prosessi poistetaan systeemistä. Miksi näin voisi tapahtua?
    5. [2 p] Miten keskeytyskäsittelijä tietää, mille prosessille (laiteajurille?) levy I/O:n valmistumista ilmaiseva laitekeskeytys kuuluu? Miten ja milloin kyseinen prosessi lopulta käsittelee laitteen ilmoittaman tilanteen?

  3. [12 p]  Java
    1. Miksi ohjelman yleinen esitysmuoto systeemissä on tavukoodi (Java bytecode), eikä korkean tason kieli (Java)?
    2. Miten tavukoodina esitetyn Java-ohjelman suoritus tapahtuu tulkitsemalla?
    3. Miten tavukoodina esitetyn Java-ohjelman suoritus tapahtuu kääntämällä?
      Miten tämä suoritus eroaa edellämainitusta tavasta?
    4. Miten tavukoodina esitetyn Java-ohjelman suoritus tapahtuu Java-suorittimessa?
      Miten tämä suoritus eroaa edellämainituista tavoista?
    5. Miten tavukoodina esitetyn Java-ohjelman suoritus tapahtuu JIT:llä?
      Miten tämä suoritus eroaa edellämainituista tavoista?
    6. Mitkä ovat suurimmat eroavaisuudet tavukoodin ja ttk-91 -koneen konekielen välillä?

  4. [12 p]  Aliohjelmat ja funktiot. Funktio Laske(X, Y, Z) on kokonaislukuarvoinen funktio, joka palauttaa lausekkeen  f(X,Y,Z)=(X+Y)/Z+7654321 arvon. Kaikki parametrit ovat kokonaislukuarvoisia. Parametrit X ja Y ovat arvoparametreja, mutta parametri Z on viiteparametri. Globaalit muuttujat A, B ja C on määritelty ja alustettu pääohjelmatasolla.
    1. [2 p] Anna ttk-91 koneen symbolisella konekielellä käskyt, joilla funktion Laske() avulla lasketaan muuttujalle C uusi arvo C = f( A, 33, B).
    2. [2 p] Anna ttk-91 koneen symbolisella konekielellä käskyt, joilla funktion Laske() avulla lasketaan muuttujalle C uusi arvo C = f( -54321, 12345678, 12345).
    3. [2 p] Anna ttk-91 koneen symbolisella konekielellä käskyt, joilla funktion Laske() avulla lasketaan muuttujalle C uusi arvo C = f( C, C, C).
    4. [4 p] Toteuta ttk-91 koneen symbolisella konekielellä funktio Laske().
    5. [2 p] Oletetaan nyt, että funktion Laske asemesta meillä on aliohjelma LaskeT( X, Y, Z, T), joka palauttaa ulostuloparametrissaan T lausekkeen f(X,Y,Z)=(X+Y)/Z+7654321 arvon. Kaikki parametrit ovat kokonaislukuarvoisia. Parametrit X ja Y ovat arvoparametreja, mutta parametrit Z ja T ovat viiteparametreja.
      Anna ttk-91 koneen symbolisella konekielellä käskyt, joilla aliohjelman LaskeT() avulla lasketaan muuttujalle C uusi arvo C = f( A, 33, B).

    Funktiota Laske() tai aliohjelmaa LaskeT() siis ei tarvitse esittää kohdissa a, b, c ja e.
    Noudata suositusten mukaista aliohjelmien (funktioiden) kutsumekanismia.


TTK-91 konekielen käskyt ovat: NOP, STORE, LOAD, IN, OUT, ADD, SUB, MUL, DIV, MOD, AND, OR, XOR, SHL, SHR, COMP, JUMP, JNEG, JZER, JPOS, JNNEG, JNZER, JNPOS, JLES, JEQU, JGRE, JNLES, JNEQU, JNGRE, CALL, EXIT, PUSH, POP, PUSHR, POPR, SVC