Slajd8

Slajd8



Ograniczenia synchronizacji w tradycyjnych jądrach (3/5)

■ Stosowanie mechanizmu zasypiania i budzenia w wieloprocesorze prowadzi do problemu zgubionej pobudki.

Rozważmy następujący przypadek:

-    Watek W1 na procesorze P1 nakłada blokadę na zasób Z1.

-    Watek W2 na procesorze P2 stwierdza, że zasób Z1 jest zablokowany (zatem wątek \N2 musi wywołać funkcję sleep (), ale w tym momencie zostaje wywłaszczony).

-    Wątek W1 zwalnia zasób Z1. Próbuje obudzić wszystkie czekające wątki, ale stwierdza, że żaden wątek nie czeka.

-    Watek W2 wykonuje funkcję sleep (), ustawia znacznik potrzebny i oczekuje na zasób.

w Wątek W1 nie budzi wątku W2, czyli dochodzi do zgubienia pobudki, w Jeżeli oprócz wątku W2 żaden inny wątek nie czeka na zasób Z1, to niespełniona jest własność żywotności (stała blokada wątku W2).

© Marek Nowak


Programowanie współbieżne w systemach operacyjnych UNIX


Wyszukiwarka

Podobne podstrony:
Slajd6 Ograniczenia synchronizacji w tradycyjnych jądrach (1/5) ■    Wyróżnione techn
Slajd7 Ograniczenia synchronizacji w tradycyjnych jądrach (2/5) ■    Wwieloprocesorze
Slajd9 Ograniczenia synchronizacji w tradycyjnych jądrach (4/5) ■    W wieloprocesora
Slajd10 Ograniczenia synchronizacji w tradycyjnych jądrach (5/5) rr Obok problemu wygłodniałego stad
Slajd3 Synchronizacja w tradycyjnych jądrach uniksowych (2/4) ■    Kolejną techniką
Slajd4 Synchronizacja w tradycyjnych jądrach uniksowych (3/4) ■    Często wątek musi
Slajd5 Synchronizacja w tradycyjnych jądrach uniksowych (4/4) ■    Gdy wątek chce uzy
Slajd2 Synchronizacja w tradycyjnych jądrach uniksowych (1/4) ■    Jako tradycyjne sy

więcej podobnych podstron