Synchronizacja dostępu do zasobów krytycznych systemu
Zasoby krytyczne sa to zasoby do których tylko ograniczona liczba procesów (np. jeden) może mieć dostęp w danej chwili. Sekcja krytyczna programu jest to fragment programu, który zawiera dostęp do zasobu krytycznego (stanowi wiec sama programowy zasób krytyczny).
Metody synchronizacji dostępu:
1. Flagi dostępu.
Flaga jest dostępna dla wszystkich procesów w systemie. Proces, który uzyskuje dostęp do zasobu krytycznego ustawia flagę na 1 (zajętość). Robi się to przy pomocy niepodzielnej instrukcji Test-and-set. Po wykorzystaniu zasobu proces ustawia flagę na 0 (wolny). Aby uzyskać dostęp do zasobu proces sprawdza wartość flagi. Jeśli równa 0, to ustawia ją na 1 i wchodzi do sekcji krytycznej. Jeśli flaga jest równa 1, to proces cyklicznie sprawdza flagę, aź do stwierdzenia wartości 0 (busy-waiting czyli aktywne czekanie). Wtedy uzyskuje dostęp i zmienia wartość flagi.
2. Semafory
Z zasobem krytycznym zwiazana jest zmienna całkowita s (semafor) i kolejka procesów oczekujących na dostęp. Zmienna jest dostępna dla wszystkich procesów.
Procesy mogą wykonywać na zmiennej s dwie operacje: p - gdy chcą uzyskać dostęp do zasobu, v - gdy skończyli wykorzystywać zasób.
p(s): if s=0 then zawieś proces i wstaw go do kolejki;
s :=s-1; v(s): s:=s+l;
if kolejka niepusta then uaktywnij proces na czele kolejki;
Wartość początkowa s wyznacza liczbę procesów, które mogą jednocześnie korzystać z zasobu krytycznego.
3. Monitory
zmieniony przez w^wołantj procedurę.
(Co fc- Cu. -a. '
Monitor jest to współdzielona przez procesy struktura danych (zasób) wraz z zestawem specjalnych funkcji (procedur), które mają dostęp do zasobu. Monitor zapewnia wykluczający się dostęp do zasobu przez to, że tylko jeden proces na raz może wywołać"ttB(fc procedurę należącą do monitora. Stan struktury danych (zasobu) może być trwale