Arvosteluperusteet, kurssikuulustelu 27.2.2001 Tehtävistä 2, 3 ja 4 sai max 14p, joten yhteensä kokeesta pystyi saamaan max 54p. Tehtävä 1 (Arvostelija: Teemu Kerola) ========= a) PCB - prosessin kontrollilohko b) (new -) ready - running - waiting (- killed) c) PCB on tilan mukaisessa jonossa d) ei näy e) 1p per järkevä tilasiirtymä selityksineen ja esimerkkeineen ------------------------------------------------------------- Tehtävä 2 (Arvostelija: Raine Kauppinen) ========= Luento 1, kalvot 35-36 (muistihierarkia); Luento 5, kalvot 5-14 (käskyjen suoritussykli); Luento 7, kalvot 16-21 (välimuisti); Luento 9, kalvot 1-23 (muistihierarkia ja virtuaalimuisti); Laskuharjoitus 1, tehtävät 1 ja 2 (Tietojen sijainti); Laskuharjoitus 3, tehtävä 4 (Muistiviitteet); Laskuharjoitus 4, tehtävä 2 (Välimuisti); Laskuharjoitus 5, tehtävä 1 (Virtuaalimuisti) a) - rekisteri, 0,5 s - välimuisti, 1 s - keskusmuisti, 10 s - levymuisti, esim. kiintolevy, 12 päivää Pisteytys (yhteensä 5p): - -1p / puuttuva tai virheellinen taso tai nopeus b) - rekisteri - esim. LOAD R1, R2, dataviite - viittaus (R2:n osalta) toisen operandin noutovaiheessa - data on rekisterissä, joka osoitettu käskyn 2. operandissa - välimuisti - esim. LOAD R1, LUKU, dataviite - viittaus (muistipaikan LUKU osalta) toisen operandin noutovaiheessa - muistipaikan LUKU sisältö löytyy välimuistista, kun siihen on viittattu vähän aikaa sitten; tällöin ennen keskusmuistinoutoa havaitaan datan olevan välimuistista, jolloin keskusmuistinoutoa ei tehdä - keskusmuisti - esim. LOAD R1, LUKU, dataviite - viittaus (muistipaikan LUKU osalta) toisen operandin noutovaiheessa - muistipaikan LUKU sisältöä ei löydy välimuistista, kun siihen ei ole viittattu aikaisemmin; tällöin välimuistihaku tuottaa hudin, joten data noudetaan keskusmuistista - levymuisti (kiintolevy) - esim. LOAD R1, LUKU, dataviite - viittaus (muistipaikan LUKU osalta) toisen operandin noutovaiheessa - muistipaikan LUKU sisältöä ei löydy keskusmuistista, kun ko. muistipaikan sisältävä sivu on (virtuaalimuistia käytettäessä) sijoitettu levylle; tämä havaitaan sivutaulun avulla; aiheutuu sivunpuutoskeskeytys, jonka seurauksena kyseinen sivu (ja samalla myös muistipaikan sisältö) luetaan levyltä muistiin Pisteytys (yhteensä 5p): - 1,25p / taso: - esimerkki 0,5p - konekäskyn suorituksen kohta 0,5 p - data- vai koodiviite 0,25p c) - välimuistiin a-kohdan tasoista liittyvät liittyvät välimuisti ja keskusmuisti - välimuistiin kerätään viimeksi käytettyjen (keskus)muistipaikkojen sisältöjä - kun konekäskyssä viitataan keskusmuistiin, tarkistetaan, onko viitatun muistipaikan sisältö jo välimuistissa; jos on, haetaan muistipaikan sisältä sieltä, jos ei, haetaan muistista ja kopioidaan välimuistiin - välimuisti on toteutettu laitteistotasolla Pisteytys (yhteensä 4p): - välimuistiin liittyvät tasot 1p - välimuistin toteutus 2p - laitteisto- vai ohjelmistotaso 1p Pistejakauma: 0p: 0 1p: 0 2p: 0 3p: 0 4p: 0 5p: 1 6p: 2 7p: 2 8p: 2 9p: 2 10p: 1 11p: 2 12p: 1 13p: 1 14p: 1 Keskiarvo 9,1 pistettä. ---------------------------------------------------------------------- Tehtävä 3 (Arvostelija: Raine Kauppinen) ========= Luento 11, kalvot 1-16 (tai 1-31 bonuskysymyksen kanssa); Laskuharjoitus 6, tehtävä 1 a) Alla on esitetty kurssilla käsitellyt kolme tapaa suorittaa Java- ohjelmia (käännökseen on kaksi erilaista tapaa, tavallinen ja JIT) sekä asiat, joita kustakin tavasta tuli mainita. - (i) Java-tulkinta - yleisidea: tulkkaus - konekäskytason suoritus: emuloidaan byte-koodia käsky kerrallaan - ero muihin suoritustapoihin: ei käännöstä - edut ja haitat: hidasta, mutta joustavaa - (iia) Käännös natiivikoneelle - yleisidea: käännös - konekäskytason suoritus: käännetään tavukoodi natiivikoneen konekielelle, jota suoritetaan normaaliin tapaan - ero muihin suoritustapoihin: ei lainkaan emulointia - edut ja haitat: suoritus nopeaa, mutta joustavuus katoaa - (iib) Just-In-Time -käännös (JIT) - yleisidea: käännös luokka kerrallaan - konekäskytason suoritus: emuloidaan byte-koodia, käännetään luokka juuri ennen sen metodin kutsua - ero muihin suoritustapoihin: dynaaminen käännös luokka kerrallaan - edut ja haitat: luokan suoritus nopeaa ensimmäisen kutsun jälkeen, mutta vaatii paljon muistia - (iii) Java-suoritin - yleisidea: tavukoodia voidaan suorittaa sellaisenaan - konekäskytason suoritus: kaikki 226 JVM-konekäskyä olemassa (jotkut toteutettu aliohjelmilla) + 115 muuta konekäskyä (käyttöjärjestelmän ja muiden ohjelmointikielten toteutus) - ero muihin suoritustapoihin: tavukoodi on suorittimen konekieli - edut ja haitat: Java-ohjelmat nopeita suorittaa, muilla kielillä toteutetut ohjelmat joudutaan kääntämään tai tulkitsemaan Pisteytys (yhteensä 10p): - 3p / tapa (tulkinta, käännös, suoritin): - yleisidea, konekäskytason suoritus, vertailu muihin suoritustapoihin, olennaiset edut ja haitat - käännöksen molemmat vaihtoehdot (tavallinen ja JIT) mainittu 1p b) - ttk-91 -ohjelmien suoritus Koksi-simulaattorilla muistuttaa Java-tulkintaa - Koksi-simulaattori voidaan ymmärtää Java-virtuaalikonetta vastaavaksi ympäristöksi, jonka avulla ttk-91-koneen toimintaa voidaan emuloida - Koksi-simulaattori käsittelee yhden ttk-91-konekielen käskyn kerrallaan ja suorittaa sen vaatimat toimenpiteet - kuten Java-tulkinnankin tapauksessa, on ttk-91-koneen rakenne erilainen kuin sitä suorittavan koneen Pisteytys (yhteensä 4p): - oikea tapa 2p - perustelut 2p c) Crusoe-suorittimen toteutus muistuttaa Javan tulkintaa JIT-käännöksen kanssa, koska suoritin emuloi x86:n konekieltä ottamalla kerralla käsittelyyn useita x86-käskyä yhtä aikaa (ja tulkitsemalla esimerkiksi keskeytystilanteessa käsky kerrallaan). Pisteytys (yhteensä 1p): - perusteltu vastaus 1p Pistejakauma: 0p: 1 1p: 0 2p: 0 3p: 0 4p: 2 5p: 2 6p: 2 7p: 2 8p: 1 9p: 2 10p: 0 11p: 0 12p: 1 13p: 0 14p: 2 15p: 0 Keskiarvo 7,1 pistettä. ---------------------------------------------------------------------- Tehtävä 4 (Arvostelija: Teemu Kerola) ========= a) 10p. miinusta rekistereiden talletuksen puuttumisesta (-1p), paluuvirheistä (-1p), luuppivirheistä (-1p), parametreihin viittausvirheistä (-2p), epäkelvoista tiedonosoitusmoodeista (-1p), jne. Jos loopin osasi toteuttaa, mutta kyseessä ei ollut funktion toteutus, niin maksimissaaan sai 5p. b) 4p. push sp, =0 % paluuarvo push sp, =arr push sp, =34 call sp, Aver pop sp, r1 out r1, =CRT