Tietokoneen toiminta, S2003, LH 6
Nämä tehtävät käsitellään harjoituksissa viikolla 18 (8-12.8.2003).- 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.
- [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?
- [2 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 verkkoluentoja käsitteleviin allaoleviin lisäkysymyksiin:
- Opiskelitko luennon 10 materiaalin verkkoluentona? Kauanko aikaa käytit
verkkoluennon läpikäyntiin?
Jos et käyttänyt verkkomateriaalia, niin älä vastaa muihin alakohtiin tässä kohtaa (kohdassa 14). - Miten verkkoluento suhtautui mielestäsi tavallisiin luentoihin? Kummasta pidit enemmän? Miksi?
- Jos luit saman asian myös kirjasta [Tane99], niin kummasta pidit enemmän? Miksi?
- Mitä mieltä olit verkkomateriaalin puheosuudesta? Onko se yleensä hyvä idea? Oliko sitä liikaa/liian vähän?
- Jos koko kurssi olisi toteutettu saman tyyppisenä verkkoluentoina, tulisitko mieluummin luennolle, opiskelisitko itse verkkomateriaalista vai opiskelitko mieluummin tavanomaisesta oppikirjasta?
- Muita rakentavia yleisiä kommentteja verkkomateriaalista?
Anna muut detaljoidummat kommentit verkkomateriaalista valinnaisen evaluointiraportin yhteydessä.
Vastaa kurssikyselyn kohdassa 19 ("Muita kommentteja ...") myös kertauskysymyksiin liittyviin lisäkysymyksiin:
- Mitä mieltä olit kertauskysymyksistä? Paljonko käytit aikaa niiden läpikäyntiin? Olivatko ne hyödyllisiä?
- Mitä mieltä olit ryhmätyöstä, jossa tehtiin kertauskysymyksiä? Miten ryhmätyön voisi tehdä paremmin?
- Oliko ryhmätyön määrittely mielestäsi sopiva, puutteellinen vai liian detaljoitu? Perustele.
- Onko ryhmätyön ryhmän koko kaksi (2) sopiva? Mikä
olisi parempi?
PS. Tee oma harjoitustyösi ajoissa - älä jätä sitä viime tinkaan!
- Opiskelitko luennon 10 materiaalin verkkoluentona? Kauanko aikaa käytit
verkkoluennon läpikäyntiin?
Varaudu esittämään kaikki Koksiin liittyvät tehtävät mikrotietokoneella harjoitustilaisuudessa. Pidä mukanasi levykettä harjoitusta varten tekemiesi ohjelmien tallettamiseen.
Teemu Kerola