"Философы"
Классическая формулировка задачи
Рассмотрим формулировку задачи об обедающих философах в терминологии,
предложенной Э. Дейкстрой. За круглым столом расставлены пять стульев, на каждом из
которых сидит философ (Ф1-Ф5) (рис. 1).
В центре стола размещено блюдо с макаронами. На столе лежат пять вилок (B1-B5),
каждая из которых находится между двумя соседними тарелками. Каждый философ может
находиться в двух состояниях: размышлять или есть макароны. Для того, чтобы начать есть,
философу необходимы две вилки: одна в правой руке, а другая в левой. Закончив еду,
философ кладет вилки на место и начинает размышлять до тех пор, пока снова не
проголодается.
В этой задаче имеются две опасные ситуации: «заговор соседей» и «голодная смерть».
«Заговор соседей» имеет место, когда соседи слева и справа от философа строят козни.
Заговорщики поочередно забирают вилки то слева, то справа от «жертвы». Такие
согласованные действия злоумышленников приводят жертву к вынужденному голоданию, так
как он никогда не может воспользоваться обеими вилками.
«Голодная смерть» возникает, когда философы одновременно проголодаются и
одновременно попытаются взять, например, свою левую вилку. При этом возникает
тупиковая ситуация, так как никто из них не может начать есть, не имея второй вилки
Особенности:
Каждый философ – процесс, стол контролирует процесс привратник. Делать под Linux, на С или С++. Графический интерфейс не нужен.