Выход из взаимоблокировки

Восстановление при помощи принудительной выгрузки ресурса

Как правило, требует ручного вмешательства (например: принтер).

 

Восстановление через откат

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

С принтером опять будут проблемы.

 

Восстановление путем уничтожения процесса

Самый простой способ.

Но с принтером опять будут проблемы.

 

В реальных системах они не годятся.

 

17. Динамическое избежание взаимоблокировок

 

В этом способе ОС должна знать, является ли предоставление ресурса безопасным или нет.

 

Траектории ресурсов

Рассмотрим модель из двух процессов и двух ресурсов.

А1 - запрос принтера процессом А

А2 - запрос плоттера процессом А

А3 - освобождение принтера процессом А

А4 - освобождение плоттера процессом А

В1 - запрос плоттера процессом В

В2 - запрос принтера процессом В

В3 - освобождение плоттера процессом В

В4 - освобождение принтера процессом В

Динамическое избежание взаимоблокировок

 

17. Предотвращение четырех условий, необходимых для взаимоблокировок

Для возникновения ситуации взаимоблокировки должны выполняться четыре условия:

1. Условие взаимного исключения. Каждый ресурс в данный момент или отдан ровно одному процессу, или доступен.

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

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

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

 

Предотвращение условия взаимного исключения

Можно минимизировать количество процессов борющихся за ресурсы.

Например, с помощью спулинга для принтера, когда только демон принтера работает с принтером.

 

Предотвращение условия удержания и ожидания

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

 

Предотвращение условия отсутствия принудительной выгрузки ресурса

Можно выгружать ресурсы, но могут быть проблемы с принтером.

 

Предотвращение условия циклического ожидания

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

Процесс сначала должен освободить занятый ресурс, прежде чем занять новый.

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