Algorytm Petersona to algorytm przetwarzania współbieżnego, który zapewnia wzajemne wykluczenie dla dwóch procesów lub wątków, umożliwiając im bezkonfliktowy dostęp do współdzielonego zasobu (sekcji krytycznej). Został on opracowany przez Gary’ego L. Petersona w 1981 roku. Choć algorytm ten jest specyficzny dla dwóch procesów, istnieje jego uogólniona wersja, znana jako algorytm piekarniany, która obsługuje wiele procesów.
Opis algorytmu
Algorytm Petersona wykorzystuje dwa kluczowe elementy:
- zainteresowany – tablica, w której każdy wątek ustawia wartość true, gdy chce wejść do sekcji krytycznej.
- czyja_kolej – zmienna, która określa, który proces ma pierwszeństwo w dostępie do sekcji krytycznej.
Dostęp do sekcji krytycznej jest przyznawany wątkowi P0, jeśli P1 nie jest zainteresowany jej wykonaniem lub jeśli P1 zgadza się na pierwszeństwo P0. Algorytm ten gwarantuje nie tylko wzajemne wykluczenie, ale także eliminuje ryzyko zagłodzenia oraz zakleszczenia procesów.
Podsumowanie
Algorytm Petersona jest efektywnym rozwiązaniem do zarządzania dostępem do zasobów w systemach wielowątkowych, oferując prostotę i efektywność w kontekście wzajemnego wykluczania.