Читайте также:
|
|
Рассмотрим пример. Пусть процессы А и Б имеют общие ресурсы 1 и 2. Структура этих процессов следующая (номерами обозначены точки наблюдения):
ПРОЦЕСС А | ПРОЦЕСС Б | ||
1) запросресурса 2 ожидание ресурса 2: | P(рес2) | 5) запросресурса 1 ожидание ресурса 1: | P(рес1) |
2) запрос ресурса 1 ожидание ресурса 1: | P(рес1) | 6) запрос ресурса 2 ожидание ресурса 2: | P(рес2) |
3) освобождение ресурса 2: | V(рес2) | 7) освобождение ресурса 2: | V(рес2) |
4) освобождение ресурса 1: | V(рес1) | 8) освобождение ресурса 1: | V(рес1) |
Пусть эти процессы начали выполняться одновременно так, что выполнились блок 1 ПРОЦЕССА А и блок 5 ПРОЦЕССА Б. Сложившаяся ситуация иллюстрируется на рис. 4.13. Видно, что оба процесса попали в ожидание, в тупик, в дедлок (deadlock - смертельный захват).
Это состояние не зависит от самих процессов. Просто так сложилось их выполнение по времени, что процессу A был выделен ресурс 2, а ресурс 1 не был еще запрошен, в то время как процессу Б был выделен ресурс 1, а ресурс 2 еще не был запрошен. К моменту запроса ресурсов ни 1, ни 2 не были освобождены.
На графе распределения ресурсов (рис. 4.14) хорошо виден пример тупика. Такое состояние кругового ожидания характерно для систем в тупиковом состоянии.
Условия возникновения тупиков
Для возникновения тупика необходимо выполнение одновременно четырех условий.
- условие " взаимного исключения ", при котором процессы осуществляют монопольный доступ к ресурсам (проходим точку 1 для А и точку 5 для Б);
- условие " ожидания " освобождения одного ресурса при удержании всех других ресурсов (А и Б в ожидании);
- условие " отсутствия перераспределения ", когда нельзя отобрать у процесса уже выделенные ему ресурсы;
- условие " кругового ожидания " (см. граф распределения ресурсов на рис. 4.14).
Дата добавления: 2015-10-02; просмотров: 97 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Очереди и почтовые ящики в WINDOWS | | | Предотвращение тупиков |