Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Методы восстановления после тупиков



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

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

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

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

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

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

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

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

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

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

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





Дата публикования: 2015-02-03; Прочитано: 654 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...