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




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

 

 

Рис. 7.3. Граф ресурсов

 

Визуально легко обнаружить наличие тупика, но нужны также формальные алгоритмы, реализуемые на компьютере.

 

Один из таких алгоритмов описан в [Таненбаум, 2002], там же можно найти ссылки на другие алгоритмы.

 

Существуют и другие способы обнаружения тупиков, применимые также в ситуациях, когда имеется не-сколько ресурсов каждого типа. Так в [Дейтел, 1987] описан способ, называемый редукцией графа рас-пределения ресурсов, а в [Таненбаум, 2002] – матричный алгоритм.

 

Восстановление после тупиков

 

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

 

Сложность восстановления обусловлена рядом факторов.

 

• В большинстве систем нет достаточно эффективных средств, чтобы приостановить процесс, вы-вести его из системы и возобновить впоследствии с того места, где он был остановлен.

• Если даже такие средства есть, то их использование требует затрат и внимания оператора.

 

• Восстановление после тупика может потребовать значительных усилий.

 

Самый простой и наиболее распространенный способ устранить тупик – завершить выполнение одного или более процессов, чтобы впоследствии использовать его ресурсы. Тогда в случае удачи остальные процессы смогут выполняться. Если это не помогает, можно ликвидировать еще несколько процессов. После каждой ликвидации должен запускаться алгоритм обнаружения тупика.

 

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

 

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

 

В ряде систем реализованы средства отката и перезапуска или рестарта с контрольной точки (сохранение состояния системы в какой-то момент времени). Если проектировщики системы знают, что тупик вероя-


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

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

 

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

 

Заключение

 

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

 

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


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

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






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