Задача обедающих философов — различия между версиями
(Новая страница: «==Задача обедающих философов== за круглым столом сидят шесть философов. На столе шесть таре…») |
|||
Строка 1: | Строка 1: | ||
+ | [[Категория: Параллельное программирование]] | ||
==Задача обедающих философов== | ==Задача обедающих философов== | ||
за круглым столом сидят шесть философов. На столе шесть тарелок с рисом и шесть китайских палочек. | за круглым столом сидят шесть философов. На столе шесть тарелок с рисом и шесть китайских палочек. |
Версия 15:41, 26 июня 2010
Задача обедающих философов
за круглым столом сидят шесть философов. На столе шесть тарелок с рисом и шесть китайских палочек. В каждый момент философ может либо есть (тогда ему необходимо две палочки), либо думать (для этого ему нужен только он сам). Философы не разговаривают между собой. Необходимо, чтобы все философы поели и не возникло драки за палочки.
Обобщение
Данная задача представляет из себя задачу получения взаимной блокировки.
Token ring
Все процессы объединяются в логическое кольцо независимо от реальной структуры сети.
По кольцу передается маркер (token). Процесс, получивший маркер, проверяет, нужно ли ему войти в критическую секцию. Если нужно, то входит, а после ее завершения отправляет маркер дальше по кольцу. Если не нужно, то сразу отправляет маркер дальше.
То есть, если ни один из процессов не заинтересован в критической секции, то маркер будет просто циркулировать по кольцу.