Helsingin yliopisto - Tietojenkäsittelytieteen laitos
Harjoitukset (näyttö layout) (tulostus layout) (kämmen layout)

Tietokoneen toiminta, S2003, LH 6

Nämä tehtävät käsitellään harjoituksissa viikolla 18 (8-12.8.2003).
  1. 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.
    1. Anna esimerkkejä tilanteesta, jolloin tulkitseminen olisi parempi kuin muut vaihtoehdot. Perustele, miksi muut tavat olisivat huonompia.
    2. Anna vastaavat esimerkit ja perustelut tilanteista, jolloin muut e.m. vaihtoehdoista olisivat parhaita vaihtoehtoja.
    3. Mikä olisi paras vaihtoehto (Java) ohjelmoinnin harjoitustyön suorittamiseen? Miksi?
    4. 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?

     

  2. 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.
    1. Anna konekäskyt, joilla X:n arvoa kasvatetaan 5:llä.
    2. Anna konekäskyt, joilla X:n arvoksi tulee Y+Z
    3. 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.

  3. [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.

    1. Anna (Koksissa suorituskelpoinen) ttk-91 esimerkki hyppytaulun käytöstä, kun case-tapauksia on 10.
    2. Miten em. valintalause toteutetaan, jos hyppytaulussa onkin hyppykäskyjen asemesta ainoastaan case-tapausten osoitteet? Anna toteutus samalle esimerkille kuin kohdassa (a).
    3. Milloin toteutustapa (a) on parempi kuin (b)?
    4. Milloin toteutustapa (b) on parempi kuin (a)?
    5. 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?

     

  4. [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:  

    1. 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).
    2. Miten verkkoluento suhtautui mielestäsi tavallisiin luentoihin? Kummasta pidit enemmän? Miksi?
    3. Jos luit saman asian myös kirjasta [Tane99], niin kummasta pidit enemmän? Miksi?
    4. Mitä mieltä olit verkkomateriaalin puheosuudesta? Onko se yleensä hyvä idea? Oliko sitä liikaa/liian vähän?
    5. Jos koko kurssi olisi toteutettu saman tyyppisenä verkkoluentoina, tulisitko mieluummin luennolle, opiskelisitko itse verkkomateriaalista vai opiskelitko mieluummin tavanomaisesta oppikirjasta?
    6. 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:

    1. Mitä mieltä olit kertauskysymyksistä? Paljonko käytit aikaa niiden läpikäyntiin? Olivatko ne hyödyllisiä?
    2. Mitä mieltä olit ryhmätyöstä, jossa tehtiin kertauskysymyksiä? Miten ryhmätyön voisi tehdä paremmin?
    3. Oliko ryhmätyön määrittely mielestäsi sopiva, puutteellinen vai liian detaljoitu? Perustele.
    4. 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!

Varaudu esittämään kaikki Koksiin liittyvät tehtävät mikrotietokoneella harjoitustilaisuudessa. Pidä mukanasi levykettä harjoitusta varten tekemiesi ohjelmien tallettamiseen.


Teemu Kerola