Algorytm piekarniany

Algorytm piekarniany

Algorytm piekarniany, opracowany przez Leslie Lamporta, rozwiązuje problem wykluczania się w sekcji krytycznej dla dowolnej liczby procesów N. Działa on na zasadzie podobnej do automatycznych systemów wydawania numerków w bankach i urzędach, gdzie proces o najwyższym indeksie ma możliwość wykonania swojej sekcji krytycznej jako ostatni.

Implementacja

Pseudokod

Opis działania

Aktywacja algorytmu (sygnalizacja wejścia do sekcji krytycznej) skutkuje zaznaczeniem faktu pobierania numeru w tablicy Wpisywanie. Następnie następuje wybór numeru z tablicy Numer, a po tym akcja ta jest odznaczana w tablicy Wpisywanie. Odblokowanie numeru realizowane jest poprzez wyzerowanie odpowiedniej wartości w tablicy Numer. W ramach algorytmu zakłada się, że komputer jest w stanie atomowo zapisać dowolną liczbę naturalną.

Warto jednak zauważyć, że istnieje istotna różnica pomiędzy systemem przydzielania numerów porządkowych w urzędach a tym algorytmem. W tym przypadku może zdarzyć się, że dwa procesy otrzymają ten sam numerek. Niemniej jednak, zapewniona jest jednoczesna niedostępność zasobu dla tychże procesów, ponieważ kolejność wejścia do sekcji krytycznej jest również regulowana przez numer procesu. Można stwierdzić, że procesy dostępują do sekcji krytycznej w porządku leksykograficznym par (numerek, i).

Jednakże, wadą tego algorytmu jest zjawisko aktywnego czekania, w którym proces nieustannie sprawdza dostępność zasobu, co prowadzi do wykonania pętli oczekującej.

Przeczytaj u przyjaciół: