Методы борьбы с тупиками

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

- предотвращение тупиков;

- обход тупиков;

- распознавание тупика с последующим восстановлением системы.

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

1. Условие взаимного исключения подавляется разрешением неограниченного разделения ресурсов.

2. Условие ожидания – предварительным выделением ресурсов. То есть процесс начинает выполнение, только получив все требуемые ресурсы. Однако это снижает эффективность работы системы.

3. Условие отсутствия распределения – ОС имеет абсолютные права на владение ресурсами (ОС позволяется отбирать у процесса ресурсы).

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

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

Обход тупика – запрет входа в опасное положение. Это возможно, если у системы есть информация о последовательности запросов, связанных с каждым параллельным процессом. Доказано [92], что если вычисления находятся в любом неопасном состоянии, то существует, по крайней мере, одна последовательность состояний, которая обходит опасное. Достаточно проверить, не приведет ли выделение ресурса к опасному состоянию, в случае возникновения опасности, запрос отклоняется.

 

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