Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VSOS_2014.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.9 Mб
Скачать
    1. Необходимые условия возникновения тупиков

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

Условие взаимного исключения (mutual exclusion). По меньшей мере один ресурс должен использоваться в монопольном режиме. Каждый такой ресурс в конкретный момент времени или отдан ровно одному процессу, или доступен. Любой процесс, требующий данный ресурс должен быть задержан до освобождения ресурса.

Условие захвата и ожидания (hold and wait). Процессы в данный момент удерживающие полученные ранее ресурсы, могут запрашивать другие ресурсы, которые в свою очередь, удерживаются другими процессами.

Условие отсутствия принудительной выгрузки ресурса (no preemption). Ресурсы нельзя принудительным образом «отобрать» у процессов, удерживающих их. Ресурс может быть освобожден только захватившим его процессом.

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

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

    1. Граф выделения и закрепления ресурсов

Для формального описания и исследования тупиков часто используют двудольный ориентированный граф, называемый графом выделения и закрепления ресурсов (resource–allocation graph) .

Множество вершин графа разбито на два непересекающихся подмножества , где  множество всех процессов в системе, а  множество всех типов ресурсов в системе.

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

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

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

Когда процесс запрашивает экземпляр ресурса , соответствующая дуга запроса добавляется в граф. Когда запрос выполнен, дуга запроса преобразуется в дугу назначения. Когда процесс освобождает ресурс, то соответствующая дуга назначения удаляется. На рис. 10.1. приведен пример графа выделения и закрепления ресурсов.

Рисунок 10.21 - Пример графа закрепления ресурсов

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

Пусть при условии предыдущего примера процесс Р3 (см. рис. 10.1) запросил один экземпляр ресурса R2 . Рис. 10.2. отображает эту ситуацию.

Рисунок 10.22 - Пример графа закрепления ресурсов для тупика

В графе образовались два цикла:

и

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

Наличие цикла не всегда означает наличие тупика ( см. рис 8.3).

Рисунок 10.23 - Пример графа закрепления ресурсов, содержащий цикл, но без тупика

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]