"Философы"

Иван19 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
19.05.2008

Классическая формулировка задачи

Рассмотрим формулировку задачи об обедающих философах в терминологии,

предложенной Э. Дейкстрой. За круглым столом расставлены пять стульев, на каждом из

которых сидит философ (Ф1-Ф5) (рис. 1).

В центре стола размещено блюдо с макаронами. На столе лежат пять вилок (B1-B5),

каждая из которых находится между двумя соседними тарелками. Каждый философ может

находиться в двух состояниях: размышлять или есть макароны. Для того, чтобы начать есть,

философу необходимы две вилки: одна в правой руке, а другая в левой. Закончив еду,

философ кладет вилки на место и начинает размышлять до тех пор, пока снова не

проголодается.

В этой задаче имеются две опасные ситуации: «заговор соседей» и «голодная смерть».

«Заговор соседей» имеет место, когда соседи слева и справа от философа строят козни.

Заговорщики поочередно забирают вилки то слева, то справа от «жертвы». Такие

согласованные действия злоумышленников приводят жертву к вынужденному голоданию, так

как он никогда не может воспользоваться обеими вилками.

«Голодная смерть» возникает, когда философы одновременно проголодаются и

одновременно попытаются взять, например, свою левую вилку. При этом возникает

тупиковая ситуация, так как никто из них не может начать есть, не имея второй вилки

Особенности:

Каждый философ – процесс, стол контролирует процесс привратник. Делать под Linux, на С или С++. Графический интерфейс не нужен.

Заявки фрилансеров