Yliopiston etusivulle Suomeksi På svenska In English
Helsingin yliopisto Tietojenkäsittelytieteen laitos
 

Tietojenkäsittelytieteen laitos

Suomeksi In English Laskuharjoitus

Rinnakkaisohjelmointi, LH 1 (ennakkotehtävät)

Huomaa, että nämä tehtävät käsitellään laskuharjoitustilaisuudessa jo samalla viikolla kun luennot alkavat.

Ensimmäisessä harjoitustilaisuudessa muodostetaan opintopiirit. Siellä myös tarkistetaan esitietovaatimusten toteutuminen: Jos teillä ei ole Tietokoneen toiminta -kurssin (tai vastaavan) suoritusta muodossa tai toisessa ettekä ole päässeet läpi esitietokokeesta, niin ette voi osallistua tälle luentokurssille.

Kyseessä on tavanomaiset laskuharjoitukset. Tehtävät tehdään etukäteen itsenäisesti (tai mieluummin pienen ryhmän kanssa yhdessä keskustellen) ja sitten ratkaisuja käsitellään laskuharjoitustilaisuudessa.

  1. Anna esimerkki tilanteesta, jossa on konekäskytason samanaikaisuus voi aiheuttaa ongelmia? Anna esimerkki ttk-91 -konekielen avulla. Miten tämä tulee huomioida ohjelmassa?
     
  2. Ajatellaan tilannetta, jossa ohjelman osalla Q on muuttuja Xq ja ohjelman osalla R on muuttuja Yr. Q haluaa antaa Xq'n arvon R käytettäväksi muuttujan Yr arvona.
    1. Miten tämä tehtäisiin, jos Q ja R ovat erillisiä prosesseja, mutta suorittavat samalla suorittimella? Mitä ongelmia tähän liittyy? Muuttuuko tilanne, jos Q ja R ovat saman prosessin eri säikeitä?
    2. Miten tämä tehtäisiin, jos Q ja R ovat erillisiä prosesseja, suorittavat yhteisen muistin järjestelmässä eri suorittimilla? Mitä ongelmia tähän liittyy? Muuttuuko tilanne, jos Q ja R ovat saman prosessin eri säikeitä?
    3. Miten tämä tehtäisiin, jos Q ja R ovat erillisiä prosesseja eri järjestelmässä, jotka ovat molemmat verkossa? Mitä ongelmia tähän liittyy?

     
  3. Ajatellaan tilannetta, jossa meillä on palkkatietojen henkilörekisteri. Usea käyttäjä voi päivittää ja lukea rekisteriä samanaikaisesti. Rekisterin tietoihin ainakin nykyinen kk-palkka, maksettu vuosipalkka sekä maksetut verot ja sosiaaliturvamaksut.
    1. Miten samanaikainen käyttö tulee ottaa huomioon ohjelmistoa suunniteltaessa?
    2. Onko sillä merkitystä, jos järjestelmä toteutetaan yhden tai useamman suorittimen ympäristöön?
    3. Miten ohjelmiston käyttäjän tulee varautua samanaikaisuuden aiheuttamiin ongelmiin?

     
  4. Ajatellaan tilannetta, jossa meillä I/O on toteutettu suoran I/O:n (direct I/O) avulla.
    1. Mitä samanaikaisuuden aiheuttamia ongelmia tässä tilanteessa on ja miten ne on ratkaistu? Anna ttk-91 esimerkki tilanteesta.
    2. Miten tilanne muuttuu (vai muuttuuko), jos I/O toteutetaan epäsuorana tai DMA'lla? Anna ttk-91 esimerkki tilanteesta.

     
  5. Ajatellaan tilannetta, jossa meillä on monisäikeinen Java-ohjelma.
    1. Missä tilanteessa voi olla varma, että säikeistä vain yksi kerrallaan on suorituksessa? Miten tämä tulee huomioida ohjelmassa?
    2. Missä tilanteessa voi olla varma, että säikeistä usea on samanaikaisesti suorituksessa? Miten tämä tulee huomioida ohjelmassa?
    3. Missä tilanteessa on mahdollista mutta ei varmaa, että säikeistä usea on samanaikaisesti suorituksessa? Miten tämä tulee huomioida ohjelmassa?


Teemu Kerola