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

Tietojenkäsittelytieteen laitos

Suomeksi In English Laskuharjoitus

Rinnakkaisohjelmointi, S2006, LH 1 (ennakkotehtävät)

Nämä tehtävät käsitellään harjoituksissa viikolla 44, 30.10.-3.11.2006.
Huomaa, että nämä tehtävät käsitellään samalla viikolla kun luennot alkavat.

Kyseessä on siis 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. Malliratkaisuja ei jaeta - selvitä asiat laskuharjoitustilaisuuksissa.
  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 osan Q tulee 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 samassa järjestelmässä 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 samassa 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