[10 p] Kriittinen alue (vaihe). Oletetaan,
että monisäikeisen ohjelman yhteisessä
muistissa olevien muuttujien X, Y ja Z
käyttöä halutaan suojata kriittisen vaiheen
avulla. Muuttujiin voitaisiin viitata ohjelmassa seitsemässä
kohtaa (kohdat A, B, C, D, E, F ja G), mutta eri ohjelman versioissa nuo kaikki kohdat eivät ole käytössä.
A: X <- 7 B: some1 <- X C: Y <- 87 E: some5 <- Y G: some5 <- Y
Y <- 4 some2 <- Y Y <- 0
Z <- X+Y some3 <- Z D: some4 <- X F: some6 <- Z
Kohdassa A muuttujien Y ja Z vanhat arvot eivät saa
näkyä muille sen jälkeen, kun X on saanut
uuden arvon, ja Z'n uuden arvon tulee olla X'n ja Y'n uusien arvojen
summa. Kohdassa B muuttujien some1, some2 ja some3 arvoiksi tulee tulla
X'n, Y'n ja Z'n arvot käskysarjan suorituksen
alkuhetkellä. Kohdassa G muuttujan Y arvo tulee nollata välittömästi sen lukemisen jälkeen.
- Oletetaan, että ainoastaan koodinpätkät A, D, E ja F esiintyvät ohjelmakoodissa. Tarvitseeko joitakin niistä suojata kriittisenä alueena? Perustele.
- Oletetaan, että ainoastaan koodinpätkät B, C, D, E ja F esiintyvät ohjelmakoodissa. Tarvitseeko joitakin niistä suojata kriittisenä alueena? Perustele.
- Oletetaan, että ainoastaan koodinpätkät C, E ja G esiintyvät ohjelmakoodissa. Tarvitseeko joitakin niistä suojata kriittisenä alueena? Perustele.
- Oletetaan, että kaikki koodinpätkät A, B, C, D, E, F ja G esiintyvät ohjelmakoodissa. Tarvitseeko joitakin niistä suojata kriittisenä alueena? Perustele.