The design of the UNIX Operating System 39 страница
Основы операционных систем | 70 |
Рис. 7.3. Граф ресурсов
Визуально легко обнаружить наличие тупика, но нужны также формальные алгоритмы, реализуемые на компьютере.
Один из таких алгоритмов описан в [Таненбаум, 2002], там же можно найти ссылки на другие алгоритмы.
Существуют и другие способы обнаружения тупиков, применимые также в ситуациях, когда имеется не-сколько ресурсов каждого типа. Так в [Дейтел, 1987] описан способ, называемый редукцией графа рас-пределения ресурсов, а в [Таненбаум, 2002] – матричный алгоритм.
|
|
Восстановление после тупиков
Обнаружив тупик, можно вывести из него систему, нарушив одно из условий существования тупика. При этом, возможно, несколько процессов частично или полностью потеряют результаты проделанной рабо-ты.
Сложность восстановления обусловлена рядом факторов.
|
|
• В большинстве систем нет достаточно эффективных средств, чтобы приостановить процесс, вы-вести его из системы и возобновить впоследствии с того места, где он был остановлен.
• Если даже такие средства есть, то их использование требует затрат и внимания оператора.
• Восстановление после тупика может потребовать значительных усилий.
Самый простой и наиболее распространенный способ устранить тупик – завершить выполнение одного или более процессов, чтобы впоследствии использовать его ресурсы. Тогда в случае удачи остальные процессы смогут выполняться. Если это не помогает, можно ликвидировать еще несколько процессов. После каждой ликвидации должен запускаться алгоритм обнаружения тупика.
|
|
По возможности лучше ликвидировать тот процесс, который может быть без ущерба возвращен к началу (такие процессы называются идемпотентными ). Примером такого процесса может служить компиляция. С другой стороны, процесс, который изменяет содержимое базы данных, не всегда может быть корректно запущен повторно.
|
|
В некоторых случаях можно временно забрать ресурс у текущего владельца и передать его другому про-цессу. Возможность забрать ресурс у процесса, дать его другому процессу и затем без ущерба вернуть назад сильно зависит от природы ресурса. Подобное восстановление часто затруднительно, если не не-возможно.
В ряде систем реализованы средства отката и перезапуска или рестарта с контрольной точки (сохранение состояния системы в какой-то момент времени). Если проектировщики системы знают, что тупик вероя-
Основы операционных систем | 71 |
тен, они могут периодически организовывать для процессов контрольные точки. Иногда это приходится делать разработчикам прикладных программ.
Когда тупик обнаружен, видно , какие ресурсы вовлечены в цикл кругового ожидания. Чтобы осущест-вить восстановление, процесс, который владеет таким ресурсом, должен быть отброшен к моменту вре-мени, предшествующему его запросу на этот ресурс.
Заключение
Возникновение тупиков является потенциальной проблемой любой операционной системы. Они возни-кают, когда имеется группа процессов, каждый из которых пытается получить исключительный доступ к некоторым ресурсам и претендует на ресурсы, принадлежащие другому процессу. В итоге все они оказы-ваются в состоянии бесконечного ожидания.
С тупиками можно бороться, можно их обнаруживать, избегать и восстанавливать систему после тупи-ков. Однако цена подобных действий высока и соответствующие усилия должны предприниматься толь-ко в системах, где игнорирование тупиковых ситуаций приводит к катастрофическим последствиям.
Дата добавления: 2021-01-21; просмотров: 93; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!