Лекция: Методы борьбы с ними

 

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

Существует четыре условия возникновения взаимных блокировок, которые сформулировал Кофман /7-11/:

1)взаимное исключение – каждые ресурс в данный момент времени либо отдан, либо доступен только одному процессу (невозможно совместное использование ресурса);

2)ожидание и удержание – процессы, удерживающие в данный момент времени полученные ресурсы, могут запрашивать новые;

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

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

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

Выделяют четыре стратегии борьбы с тупиками /7-11/:

1)пренебрежение тупиками или блокировками в системе;

2)предотвращение блокировок с помощью опровержения и ликвидации одного из четырех условий их возникновения;

3)обход тупиков с помощью специального распределения ресурсов;

4)распознавание тупика и восстановление системы.

Существуют следующие методы ликвидации взаимоблокировок:

· метод восстановления при помощи принудительной выгрузки ресурсов. Отбирается ресурс у процесса–владельца и передается другому процессу. Но отдать ресурс, а затем его получить не всегда возможно;

· метод восстановления системы через откат алгоритма.

Процессы периодически создают контрольные точки, которые записываются в файл (из этого файла процесс может быть восстановлен). Когда взаимоблокировка обнаружена выполняются следующие действия: 1) определяется какой ресурс требуется дополнительно для выхода из блокировки; 2) процесс, занимающий ресурс, возвращается к точке времени, перед которой этот ресурс был получен, далее ресурс передаётся одному из процессов циклической последовательности;

· метод восстановления системы путем уничтожения процессов.

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

еще рефераты
Еще работы по информатике