Tietokoneen toiminta, K2003, LH 6
Nämä tehtävät käsitellään harjoituksissa viikolla 18 (28.4-2.5.2003). Vappuna (1.5) ei ole harjoituksia. Torstain laskuharjoitusryhmiin kuuluvat opiskelijat voivat osallistua muihin ryhmiin. Perjantaina (2.5) on laskuharjoitukset normaaliin tapaan.- Java ohjelmia (tavukoodia) voidaan suorittaa (ainakin) neljällä eri tavalla:
tulkitsemalla, tavallisella käännöksellä, Just-In-time -käännöksellä tai
suoraan Java-suorittimella.
- Anna esimerkkejä tilanteesta, jolloin tulkitseminen olisi parempi kuin muut vaihtoehdot. Perustele, miksi muut tavat olisivat huonompia.
- Anna vastaavat esimerkit ja perustelut tilanteista, jolloin muut e.m. vaihtoehdoista olisivat parhaita vaihtoehtoja.
- Mikä olisi paras vaihtoehto (Java) ohjelmoinnin harjoitustyön suorittamiseen? Miksi?
- Mitä prosesseja järjestelmässä tarvitaan ohjelman suoritushetkellä, jos Java ohjelmaasi MyProg suoritetaan 1) tulkitsemalla, 2) tavallisella käännöksellä, 3) Just-In-Time -käännöksellä tai 4) suoraan Java-suorittimella?
- Java virtuaalikone. Tee seuraavat oletukset. X, Y ja Z ovat paikallisia
muuttujia numero 3, 4 ja 5. Tbl osoittaa 20 alkioiseen taulukkoon ja se
(Tbl) on talletettu paikalliseen muuttujaan numero 6.
- Anna konekäskyt, joilla X:n arvoa kasvatetaan 5:llä.
- Anna konekäskyt, joilla X:n arvoksi tulee Y+Z
- Anna konekäskyt, joilla Y:n arvoksi tulee Tbl[3]
Luennolla esitetyt Tanenbaumin kirjan [Tane99] kuvat 4-10, 4-12, 4-13, 4-9 ja 5-36 löytyvät myös verkosta.
- Javan suoritus. Missä olosuhteissa Javalla tehdyn ohjelman suoritus olisi
nopeampaa/hitaampaa kuin saman ohjelman C:llä tai C++:lla tehty toteutus?
Miksi?
- [2 htp] Jump table. Pitkät valintalauseet (switch-lauseet) voivat hidastaa
ohjelman suoritusta huomattavasti, jos usein suoritettavassa silmukassa
joka kerta valitaan yksi kerrallaan oikea case-tapaus esimerkiksi 60 (tai
2000) eri mahdollisuuden joukosta. Tähän menee keskimäärin 30 (tai 1000)
vertailua ja kuhunkin vertailuun ainakin 2 konekäskyä!
Jos valintavakiot ovat kokonaislukuarvoisia, nollasta alkavia ja muodostavat (liki) yhtenäisen arvoalueen, niin usean if-then-else -vertailun asemesta voidaan käyttää hyppytaulua (jump table). Hyppytaulun avulla päästää oikeaan case-tapaukseen aina suoraan muutamalla konekäskyllä. Hyppytaulu sisältää monta hyppykäskyä (yksi per case-tapaus), joista valintamuuttujan perusteella valitaan indeksoitua osoitusmoodia käyttäen oikea hyppykäsky.
Esimerkiksi, jos rekisteri R3 sisältää valintamuuttujan arvon ja hyppytaulun osoite on JTBL, niin oikeaan case-tapaukseen johtavaan hyppykäskyyn päästään konekäskyn "JUMP JTBL(R3)" avulla.
- Anna (Koksissa suorituskelpoinen) ttk-91 esimerkki hyppytaulun käytöstä, kun case-tapauksia on 10.
- Miten em. valintalause toteutetaan, jos hyppytaulussa onkin hyppykäskyjen asemesta ainoastaan case-tapausten osoitteet? Anna toteutus samalle esimerkille kuin kohdassa (a).
- Milloin toteutustapa (a) on parempi kuin (b)?
- Milloin toteutustapa (b) on parempi kuin (a)?
- Jos kukin case-tapaus vaatii 10 konekäskyä ja case-tapauksia on 60, niin kuinka paljon (%) hyppytaulun käyttö nopettaa valintalauseen suoritusta? Eroavatko em. toteutustavat (kohdat a ja b) tässä suhteessa?
- [1 htp] Vastaa kurssikyselyyn.
Kiinnitä lisähuomiota kohtien 14 ja 19 vastauksiin. Ota lisäkysymysten vastaukset
talteen laskuharjoituksissa tapahtuvaa keskustelua varten.
Vastaa kurssikyselyn kohdassa 14 ("Miten kurssia voisi kehittää?") myös lisäkysymyksiin:
- Montako tuntia olet käyttänyt tähän kurssiin yhteensä tähän asti aikaa?
Luentojen seuraamiseen? Harjoituksiin? Itseopiskeluun? - Kuinka suureen osaan luennoista osallistuit? (100%, 90%, ...)
- Jos osallistuit lähes kaikkiin luentoihin, niin opitko perusasiat luennoilla vai pitikö niitä vielä kovasti opiskella kirjoista?
- Käytitkö englanninkielisiä oppikirjoja? Kuinka paljon?
Vastaa kurssikyselyn kohdassa 19 ("Muita kommentteja ...") myös lisäkysymyksiin:
- Mitä mieltä olit kertauskysymyksistä? Olivatko ne hyödyllisiä?
- Mitä mieltä olit ryhmätyöstä, jossa tehtiin kertauskysymyksiä?
- Oliko ryhmätyön määrittely mielestäsi sopiva, puutteellinen vai liian detaljoitu? Perustele.
- Montako tuntia olet käyttänyt tähän kurssiin yhteensä tähän asti aikaa?
Varaudu esittämään kaikki Koksiin liittyvät tehtävät mikrotietokoneella harjoitustilaisuudessa. Pidä mukanasi levykettä harjoitusta varten tekemiesi ohjelmien tallettamiseen.
Teemu Kerola