Моделирование взаимоблокировок

Взаимоблокировка процессов

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

Ресурсы бывают выгружаемые и невыгружаемые, аппаратные и программные.

Выгружаемый ресурс- этот ресурс безболезненно можно забрать у процесса (например: память).

Невыгружаемый ресурс -этот ресурс нельзя забрать у процесса без потери данных (например: принтер).

Проблема взаимоблокировок процессов возникает при борьбе за невыгружаемый ресурсы.

Условия необходимые для взаимоблокировки:

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

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

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

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

Моделирование тупиков с помощью графов.

Условные обозначения

 

На такой модели очень хорошо проверить возникает ли взаимоблокировка. Если есть цикл, значит, есть и взаимоблокировка.

Рассмотрим простой пример:

три процесса A, B, C

три ресурса R, S, T

Последовательное выполнение процессов, взаимоблокировка не возникает

 

Рассмотрим циклический алгоритм:

три процесса A, B, C

три ресурса R, S, T

Возникает взаимоблокировка

 

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

 

 

Взаимоблокировка не возникает.