Komputerowe Systemy Operacyjne - problem 5ciu filizifów.doc

(99 KB) Pobierz
Problem pięciu filozofów

 

Problem pięciu filozofów

 

Przy okrągłym stole siedzi pięciu filozofów. Zajmują się oni naprzemiennie

tylko dwoma czynnościami - myśleniem i jedzeniem. Do jedzenia filozof

potrzebuje dwu pałeczek. Gdy filozof otrzyma dwie pałeczki je, a następnie

odkłada obydwie pałeczki. Problem polega na takim zorganizowaniu pracy

filozofów aby spełnione były warunki:

- Filozof je wtedy gdy zdobędzie dwie pałeczki.

- Dwu filozofów nie może trzymać tej samej pałeczki.

- Każdy z filozofów musi się w końcu najeść (nie zostanie zagłodzony).

 

A. Rozwiązanie z możliwością blokady:

1. Filozof czeka aż będzie wolny lewa pałeczka i podnosi go.

2. Filozof czeka aż będzie wolny prawa pałeczka i podnosi go.

3. Filozof je.

4. Filozof odkłada obie pałeczki.

5. Filozof myśli.

Jeżeli w pewnej chwili każdy z filozofów podniesie lewą pałeczkę i będzie

czekał na prawy nigdy go nie otrzyma gdyż algorytm przewiduje zwolnienie

pałeczek po zakończeniu jedzenia. Nastąpi zakleszczenie.

 

B. Rozwiązanie z możliwością zagłodzenia:

1. Filozof czeka aż będą wolne obie pałeczki i podnosi je (musi to być

operacja niepodzielna).

2. Filozof je.

3. Filozof odkłada obie pałeczki.

4. Filozof myśli.

Może się tak zdarzyć że filozof będzie miał bardzo żarłocznych sąsiadów z

których w każdej chwili jeden z nich je. W takim przypadku filozof zostanie

zagłodzony.

 

C. Rozwiązanie poprawne

1. Potrzebny jest arbiter zewnętrzny (nazywany lokajem) który dba o to aby

jednej chwili najwyżej czterech filozofów konkurowało o widelce.

2. Dalej postępujemy jak w przypadku A.

 

 

 

 

 

 

 

 

 

 

 

 

Zgłoś jeśli naruszono regulamin