Задача обедающих философов

Материал из Викиконспекты
Версия от 15:40, 26 июня 2010; Andrey Danilchenko (обсуждение | вклад) (Новая страница: «==Задача обедающих философов== за круглым столом сидят шесть философов. На столе шесть таре…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Задача обедающих философов

за круглым столом сидят шесть философов. На столе шесть тарелок с рисом и шесть китайских палочек. В каждый момент философ может либо есть (тогда ему необходимо две палочки), либо думать (для этого ему нужен только он сам). Философы не разговаривают между собой. Необходимо, чтобы все философы поели и не возникло драки за палочки.

Обобщение

Данная задача представляет из себя задачу получения взаимной блокировки.

Token ring

Все процессы объединяются в логическое кольцо независимо от реальной структуры сети.

По кольцу передается маркер (token). Процесс, получивший маркер, проверяет, нужно ли ему войти в критическую секцию. Если нужно, то входит, а после ее завершения отправляет маркер дальше по кольцу. Если не нужно, то сразу отправляет маркер дальше.

То есть, если ни один из процессов не заинтересован в критической секции, то маркер будет просто циркулировать по кольцу.