Helsingin yliopisto Tietojenkäsittelytieteen laitos
 

Tietojenkäsittelytieteen laitos

Tietoa laitoksesta:

 
in English

Käyttöjärjestelmät, syksy 2006, laskuharjoitus 4

Tehtävät käsitellään harjoituksissa viikolla 39, 28-29.9.2006

Kyseessä on laitoksen normaalin käytännön mukaiset laskuharjoitukset. Tehtävät tehdään etukäteen itsenäisesti tai pienryhmässä keskustellen. Ratkaisuja käsitellään harjoituksissa.

Ensimmäisen osion opintopiiritehtävän palautus on 29.9.2006.

  1. Säikeet
    1. Tehtävä 4.4 kirjasta [Stal05 ja Stal01]
    2. Tehtävä 4.5 kirjasta [Stal05 ja Stal01]

  2. Anna synkronointiesimerkki, jossa käytetään Solariksen säikeiden sema_tryp() primitiiviä, ja jossa vastaava ratkaisu sema_p() primitiivillä ei onnistuisi. Perustele ratkaisusi.

  3. [2 htp] Tarkastellaan Linuxin ytimen (kernel) synkronointiprimitiivejä (Ch 6.8 [Stal05]).
    1. Tehtävä 6.20 kirjasta [Stal05, s. 299]:
      Consider the following fragment of code on a Linux system.

        read_lock (&mr_rwlock);
        write_lock (&mr_rwlock);

      Where mr_rwlock is a reader-writer lock. What is the effect of this code?

    2. Anna esimerkki tilanteesta, jossa spinlock-operaation voi kääntää koodiksi, jossa ei ole busy-wait -tyyppistä odotusta. Miksi näin voi tässä tapauksessa tehdä? Mitä hyötyä tällä saavutetaan?
    3. Anna esimerkki tilanteesta, jossa spinlock-operaation täytyy kääntää koodiksi, jossa on busy-wait -tyyppistä odotusta. Miksi näin täytyy tässä tapauksessa tehdä? Mitä hyötyä tällä saavutetaan?
    4. Mikä ero on Reader-Writer Spinlock -operaatiolla verrattuna Reader-Writer Semaphore -operaatioon?
      Anna esimerkki tilanteesta jossa tulisi käyttää Reader-Writer Spinlock -operaatiota, mutta ei tulisi käyttää Reader-Writer Semaphore -operaatiota.
    5. Anna esimerkki tilanteesta, jossa voisi käyttää jotakin Barrier-operaatiota. Perustele esimerkkisi.


Tiina.Niklander@cs.helsinki.fi