На головну

Офіціант

Щодо просте рішення задачі досягається шляхом додавання офіціанта біля столу. Філософи повинні чекати дозволу офіціанта перед тим, як взяти вилку. Оскільки офіціант знає, скільки вилок використовується в даний момент, він може приймати рішення щодо розподілу вилок і тим самим запобігти взаємне блокування філософів. Якщо чотири вилки з п'яти вже використовуються, то наступний філософ, який попросив вилку, змушений буде чекати дозволу офіціанта - яка не буде отримано, поки вилка не буде звільнено. Передбачається, що філософ завжди намагається спочатку взяти ліву вилку, а потім - праву (або навпаки), що спрощує логіку. Офіціант працює, як семафор - поняття, введене Дейкстрой в 1965 році.[5]

Щоб показати, як це рішення працює, припустимо, що філософи позначені від А до Д за годинниковою стрілкою. Якщо філософи А і В їдять, то зайняті чотири вилки. Філософ Б сидить між А і В, так що йому недоступна жодна з вилок. У той же час, філософи Г і Д мають доступ до однієї невикористаної вилці між ними. Припустимо, що філософ Г хоче їсти. Якщо він тут же бере вільну вилку, то стає можлива взаємне блокування філософів. Якщо замість цього він запитує дозволу у офіціанта, то той просить його почекати - і можна бути впевненим в тому, що як тільки пара вилок звільниться, то принаймні один філософ зможе взяти дві вилки. Таким чином, взаємне блокування стає неможливою.



 Споживач з круговим буфером |  ієрархія ресурсів

 Архітектура операційних систем сімейства Windows NT. |  Архітектура операційної системи Linux. |  Архітектура операційної системи QNX. |  Архітектура ОС QNX |  Незалежність паралельних процесів |  Розділяється і критичний ресурс. Доведення коректності паралельних алгоритмах Приклади. |  Поняття синхронізації. Види синхронізації. |  Спін-блокування в Windows 2000. Призначення спін-блокувань. Спін-блокування чергами. |  Семафори Дейкстри. Псевдокод реалізації семафора. Бінарні семафори. |  Реалізація семафора засобами Windows API. |

© um.co.ua - учбові матеріали та реферати