The design of the UNIX Operating System 36 страница



 

Подход большинства популярных ОС (Unix, Windows и др.) состоит в том, чтобы игнорировать данную проблему в предположении, что маловероятный случайный тупик предпочтительнее, чем нелепые пра-вила, заставляющие пользователей ограничивать число процессов, открытых файлов и т. п. Сталкиваясь с нежелательным выбором между строгостью и удобством, трудно найти решение, которое устраивало бы всех.

 

Способы предотвращения тупиков

 

Цель предотвращения тупиков – обеспечить условия, исключающие возможность возникновения тупи-ковых ситуаций. Большинство методов связано с предотвращением одного из условий возникновения взаимоблокировки.

 

Система, предоставляя ресурс в распоряжение процесса, должна принять решение , безопасно это или нет. Возникает вопрос: есть ли такой алгоритм, который помогает всегда избегать тупиков и делать пра-вильный выбор. Ответ – да, мы можем избегать тупиков, но только если определенная информация из-вестна заранее.

 

Способы предотвращения тупиков путем тщательного распределения ресурсов. Алгоритм банкира

 

Можно избежать взаимоблокировки, если распределять ресурсы, придерживаясь определенных правил. Среди такого рода алгоритмов наиболее известен алгоритм банкира, предложенный Дейкстрой, который базируется на так называемых безопасных или надежных состояниях (safe state). Безопасное состояние –


Основы операционных систем 67

это такое состояние, для которого имеется по крайней мере одна последовательность событий, которая не приведет к взаимоблокировке . Модель алгоритма основана на действиях банкира, который, имея в на-личии капитал, выдает кредиты.

 

Суть алгоритма состоит в следующем.

 

• Предположим, что у системы в наличии n устройств, например лент.

 

• ОС принимает запрос от пользовательского процесса, если его максимальная потребность не пре-вышает n.

• Пользователь гарантирует, что если ОС в состоянии удовлетворить его запрос, то все устройства будут возвращены системе в течение конечного времени.

 

• Текущее состояние системы называется надежным, если ОС может обеспечить всем процессам их выполнение в течение конечного времени.

• В соответствии с алгоритмом банкира выделение устройств возможно, только если состояние сис-темы остается надежным.

 

Рассмотрим пример надежного состояния для системы с 3 пользователями и 11 устройствами, где 9 уст-ройств задействовано, а 2 имеется в резерве. Пусть текущая ситуация такова:

 

 

Рис. 7.2. Пример надежного состояния для системы с3пользователями и11устройствами.

 

Данное состояние надежно. Последующие действия системы могут быть таковы. Вначале удовлетворить запросы третьего пользователя, затем дождаться , когда он закончит работу и освободит свои три устрой-ства. Затем можно обслужить первого и второго пользователей. То есть система удовлетворяет только те запросы, которые оставляют ее в надежном состоянии, и отклоняет остальные.

 

Термин ненадежное состояние не предполагает, что обязательно возникнут тупики. Он лишь говорит о том, что в случае неблагоприятной последовательности событий система может зайти в тупик.

 

Данный алгоритм обладает тем достоинством, что при его использовании нет необходимости в перерас-пределении ресурсов и откате процессов назад. Однако использование этого метода требует выполнения ряда условий.


Дата добавления: 2021-01-21; просмотров: 98; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!