Задача обедающих философов — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Новая страница: «==Задача обедающих философов== за круглым столом сидят шесть философов. На столе шесть таре…»)
 
Строка 1: Строка 1:
 +
[[Категория: Параллельное программирование]]
 
==Задача обедающих философов==
 
==Задача обедающих философов==
 
за круглым столом сидят шесть философов. На столе шесть тарелок с рисом и шесть китайских палочек.
 
за круглым столом сидят шесть философов. На столе шесть тарелок с рисом и шесть китайских палочек.

Версия 15:41, 26 июня 2010

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

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

Обобщение

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

Token ring

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

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

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