- 41 -
начать есть. В этой ситуации философы останутся навсегда голодны-
ми, поскольку вилка освобождается только после того, как человек по-
ест, а приступить к еде в описанной ситуации никто не может, соот-
ветственно не может ее и закончить.
Очевидно, что сформулированные правила поведения приве-
ли к безвыходному состоянию, которое и называется «тупик» или
«клинч». Рассмотрим возможные изменения в правилах, которые по-
зволят нам избежать возникновения тупиков.
Уточним постановку задачи. Будем считать, что человек, по-
лучивший в свое распоряжение две вилки, положит спагетти из обще-
го блюда к себе в тарелку и освободит одну из вилок за конечное вре-
мя. Здесь важно подчеркнуть, что работа должна быть выполнена
именно за конечное, неважно большое или нет, но конечное время.
В качестве первого варианта можно предложить дворецкому
никогда не пускать к столу больше четырех человек одновременно.
При таком подходе, принимая во внимание то, что каждый использует
две вилки конечное время, разные философы будут пользоваться вто-
рой вилкой поочередно и тупик не наступит. Но у этого решения есть
свой недостаток. У дверей столовой возникнет очередь. За последова-
тельность прохождения этой очереди отвечает дворецкий и нет гаран-
тии того, что в ней не окажется философа, стоящего всегда в конце и
никогда не попадающего к столу. Такое положение не обязательно яв-
ляется следствием недружелюбного отношения дворецкого к конкрет-
ной личности. Известна дисциплина обслуживания по принципу стека
– последним пришел – первым пустили. При большом числе филосо-
фов пришедший первым рискует никогда в столовую не попасть. Если
принять дисциплину обслуживания типа «очередь» – по принципу
первый пришедший обслуживается первым, возникнут проблемы с об-
служиванием "высокоприоритетных" философов, имеющихся в любом
коллективе. Таким образом, решив проблему тупика, мы не решили
проблему обязательного обслуживания всех философов без исключе-
ния. Принимая во внимание третье ключевое требование - любой фи-
лософ должен быть обслужен за конечное, пусть даже большое, но ко-
нечное время, рассмотрим другие возможности организации обслужи-
вания.
Добавим правило, согласно которому если все вилки заняты
и никто не ест, все кладут свои вилки на место и через некоторое вре-
мя повторяют попытку. Если время, через которое философы снова
попробуют взять свои вилки будет различным для разных философов,
то кто-то из них возьмет две вилки первым и тупика удастся избежать.
Несмотря на то, что в повседневной жизни это решение вполне прием-
лемо: так поступают например, при неожиданном обрыве телефонного
разговора, когда абоненты звонят друг другу случайным образом, и
кто-то дозванивается, мы не можем принять это решение в качестве