Pat w OperaSystem tingowy: Co to jest czekanie cykliczne (przykłady)

Czym jest Deadlock?

Deadlock to sytuacja, która występuje w systemie operacyjnym, gdy dowolny proces przechodzi w stan oczekiwania, ponieważ inny oczekujący proces posiada żądany zasób. Blokada jest powszechnym problemem w przetwarzaniu wieloprocesorowym, w którym kilka procesów współdzieli określony typ wzajemnie wykluczającego się zasobu, znanego jako blokada miękka lub programowa.

Przykład impasu

  • Przykładem ze świata rzeczywistego może być ruch uliczny, który odbywa się tylko w jednym kierunku.
  • W tym przypadku most jest uważany za zasób.
  • Tak więc, gdy dojdzie do impasu, można go łatwo rozwiązać, cofając pojazd (wyprzedzanie zasobów i cofanie).
  • W przypadku wystąpienia impasu może zaistnieć konieczność cofnięcia kilku samochodów.
  • Zatem głód jest możliwy.
Przykład impasu
Przykład impasu

Co to jest czekanie cykliczne?

Jeden proces czeka na zasób, który jest przetrzymywany przez drugi proces, który również czeka na zasób przetrzymywany przez trzeci proces itd. Trwa to do momentu, aż ostatni proces będzie oczekiwał na zasób przetrzymywany przez pierwszy proces. Tworzy to okrągły łańcuch.

Na przykład procesowi A przydzielany jest zasób B, gdy żąda zasobu A. W ten sam sposób procesowi B przydzielany jest zasób A i żąda zasobu B. Tworzy to cykliczną pętlę oczekiwania.

Przykład oczekiwania cyklicznego

Na przykład komputer ma trzy dyski USB i trzy procesy. Każdy z trzech procesów może obsługiwać jeden z dysków USB. Tak więc, gdy każdy proces zażąda innego dysku, trzy procesy będą miały sytuację impasu, ponieważ każdy proces będzie czekał na zwolnienie dysku USB, który jest obecnie używany. Spowoduje to powstanie łańcucha kołowego.

Przykład oczekiwania cyklicznego

Przykład oczekiwania cyklicznego

Wykrywanie blokad w systemie operacyjnym

Wystąpienie impasu może zostać wykryte przez harmonogram zasobów. Harmonogram zasobów pomaga systemowi operacyjnemu śledzić wszystkie zasoby przydzielone różnym procesom. Tak więc, gdy impas zostanie wykryty, można go rozwiązać, korzystając z poniższych metod:

Zapobieganie blokadom w systemie operacyjnym

Ważne jest, aby zapobiec impasowi zanim do niego dojdzie. System sprawdza każdą transakcję przed jej wykonaniem, aby upewnić się, że nie prowadzi ona do sytuacji impasu. Tak, że nawet mała zmiana, która nastąpi, spowoduje, że operacja, która może doprowadzić do impasu w przyszłości, nigdy nie pozwoli na wykonanie procesu.

Jest to zestaw metod gwarantujących, że co najmniej jeden z warunków nie będzie spełniony.

Żadnych działań wyprzedzających

Brak wywłaszczenia – zasób może zostać zwolniony jedynie dobrowolnie przez proces go przechowujący, po tym jak proces ten zakończy swoje zadanie

  • Jeśli proces wstrzymujący pewne zasoby zażąda innego zasobu, którego nie można mu od razu przydzielić, w takiej sytuacji wszystkie zasoby zostaną zwolnione.
  • Zasoby wywłaszczone wymagają listy zasobów dla oczekującego procesu.
  • Proces zostanie uruchomiony ponownie tylko wtedy, gdy uda mu się odzyskać stary zasób i nowy, którego żąda.
  • Jeśli proces żąda innego zasobu, gdy jest on dostępny, zostaje on przekazany procesowi żądającemu.
  • Jeżeli jest on wstrzymywany przez inny proces oczekujący na inny zasób, zwalniamy go i przekazujemy procesowi żądającemu.

Wzajemne wykluczenie

Wzajemne wykluczenie jest pełną formą Mutexu. Jest to specjalny rodzaj semafora binarnego, który służy do kontrolowania dostępu do współdzielonego zasobu. Zawiera mechanizm dziedziczenia priorytetów, pozwalający uniknąć długotrwałych problemów z odwracaniem priorytetów. Pozwala na utrzymanie bieżących zadań o wyższym priorytecie w stanie zablokowanym przez możliwie najkrótszy czas.

Współdzielone zasoby, takie jak pliki tylko do odczytu, nigdy nie powodują blokad, natomiast zasoby, takie jak drukarki i napędy taśmowe, wymagają wyłącznego dostępu przez pojedynczy proces.

Trzymaj i czekaj

W takiej sytuacji należy powstrzymać procesy przed zatrzymywaniem jednego lub wielu zasobów i równoczesnym oczekiwaniem na dostęp do jednego lub większej liczby innych zasobów.

Okrągłe czekanie

Narzuca całkowite uporządkowanie wszystkich typów zasobów. Oczekiwanie cykliczne wymaga również, aby każdy proces żądał zasobów w rosnącej kolejności wyliczania.

Unikanie zakleszczenia Algorithms

Lepiej jest unikać impasu niż podejmować działania po jego wystąpieniu. Wymaga to dodatkowych informacji, takich jak sposób wykorzystania zasobów. Unikanie impasu jest najprostszym i najbardziej użytecznym modelem, w którym każdy proces deklaruje maksymalną liczbę zasobów każdego typu, których może potrzebować.

Unikanie Algorithms

Algorytm zapobiegający blokadom pomaga dynamicznie oceniać stan alokacji zasobów, co zapobiega wystąpieniu sytuacji cyklicznego oczekiwania.

Pojedyncze wystąpienie typu zasobu.

  • Skorzystaj z wykresu alokacji zasobów
  • Cykle są niezbędne do osiągnięcia stanu Deadlock

Wiele wystąpień typu zasobu.

  • Cykle są konieczne, ale nigdy niewystarczające do osiągnięcia stanu Deadlock.
  • Wykorzystuje algorytm bankiera

Różnica między głodem a impasem

Oto kilka ważnych różnic między Deadlockiem a głodowaniem:

Deadlock Głód
Sytuacja impasu występuje, gdy jeden z procesów zostaje zablokowany. Głód to sytuacja, w której wszystkie procesy o niskim priorytecie zostają zablokowane, a procesy o wysokim priorytecie zostają uruchomione.
Blokada jest procesem nieskończonym. Głód to długi czas oczekiwania, ale nie proces nieskończony.
W każdym Deadlocku zawsze panuje głód. Nie każdy głód musi skończyć się impasiem.
Wtedy następuje impas. Wzajemne wykluczenie, przytrzymanie i czekanie. Tutaj wywłaszczenie i cykliczne czekanie nie występują jednocześnie. Dzieje się tak na skutek niekontrolowanego zarządzania priorytetami i zasobami.

Zalety Deadlocka

Oto zalety/korzyści wynikające ze stosowania metody Deadlock

  • Ta sytuacja sprawdza się dobrze w przypadku procesów, które wykonują pojedynczy impuls aktywności
  • W przypadku Deadlocka nie jest wymagane żadne wywłaszczanie.
  • Wygodna metoda w przypadku zastosowania do zasobów, których stan można łatwo zapisać i przywrócić
  • Możliwe do wyegzekwowania poprzez kontrole w czasie kompilacji
  • Nie wymaga obliczeń w czasie wykonywania, ponieważ problem został rozwiązany podczas projektowania systemu

Wady Deadlocka

Oto wady/wady stosowania metody deadlock

  • Opóźnia inicjację procesu
  • Procesy muszą znać przyszłe zapotrzebowanie na zasoby
  • Uprzedza częściej niż to konieczne
  • Nie zezwala na żądania zasobów przyrostowych
  • Nieodłączne straty z tytułu wykupu.

Podsumowanie

  • Definicja impasu: Jest to sytuacja, która ma miejsce w OS gdy dowolny proces wchodzi w stan oczekiwania, ponieważ inny oczekujący proces wstrzymuje żądany zasób
  • Oczekiwanie cykliczne ma miejsce, gdy jeden proces czeka na zasób, który jest utrzymywany przez drugi proces, który również czeka na zasób przechowywany przez trzeci proces itd.
  • Wystąpienie impasu może zostać wykryte przez harmonogram zasobów.
  • Ważne jest, aby zapobiec impasowi zanim do niego dojdzie.
  • Zasób może zostać zwolniony jedynie dobrowolnie przez proces go przechowujący, po tym jak proces ten zakończył swoje zadanie.
  • Wzajemne wykluczenie jest pełną formą Mutexu. Jest to specjalny typ binarny semafor który służy do kontrolowania dostępu do współdzielonego zasobu.
  • Wstrzymanie i oczekiwanie to sytuacja, w której procesom należy uniemożliwić utrzymywanie jednego lub wielu zasobów i jednoczesne oczekiwanie na jeden lub więcej innych zasobów.
  • Unikanie blokad to najprostszy i najbardziej użyteczny model, w którym każdy proces deklaruje maksymalną liczbę zasobów każdego typu, których może potrzebować.
  • Algorytm zapobiegający blokadom pomaga dynamicznie oceniać stan alokacji zasobów, co zapobiega wystąpieniu sytuacji cyklicznego oczekiwania.
  • Impas jest procesem nieskończonym, natomiast głód jest długim oczekiwaniem, ale nie procesem nieskończonym.