Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / 5_взаимодействие и синхронизация процессов.doc
Скачиваний:
104
Добавлен:
20.06.2014
Размер:
1.47 Mб
Скачать

5.4.2. Устранение взаимоблокировок

5.4.2.1. Запрещение запуска процесса

Рассмотрим n процессов иm различных типов ресурсов. Определим следующие векторы и матрицы:

Ресурс = (R1, R2, …, Rm) – общее количество каждого ресурса в системе;

Доступность = (V1, V2, …, Vm) – общее количество каждого ресурса, не выделенного процессам;

Требования = – запросы каждого процесса на каждый из ресурсов;

Распределение = – текущее распределение ресурсов.

Матрица требований, в которой каждая строка описывает один из процессов, указывает максимальные требования каждого процесса к разным ресурсам, т.е. Сij – требование процессомi ресурсаj. Эта информация объявляется заранее.Aij – текущее количество ресурсаj, выделенное процессуi.

Должны выполняться следующие соотношения:

1. .

2. , ни один процесс не может потребовать ресурс, превышающий его общее количество в системе.

3. , ни один процесс не может получить ресурсов больше, чем их было затребовано им.

Новый процесс Pn+1 запускается, только если

.

Эта стратегия не является оптимальной, так как предполагает худшее, что все процессы предъявляют максимальные требования одновременно.

5.4.2.2. Запрет выделения ресурса

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

Безопасным называется такое состояние, в котором имеется хотя бы одна последовательность, не приводящая к взаимоблокировке (т.е. все процессы могут быть выполнены до завершения). Состояние, не являющееся безопасным, называется опасным.

Ниже алгоритм рассмотрен на примере (рис. 7).

Рис. 7

Общее количество ресурсов R1, R2, R3 соответственно 9, 3,6 единиц. В результате сделанного к этому моменту распределения ресурсов по процессам доступными оказались по одной единице ресурсовR2 иR3. Безопасно ли это состояние? Для ответа на этот вопрос нужно задаться другим вопросом: может ли какой-либо из четырех процессов быть выполнен до завершения при данных доступных ресурсах. ДляP1 – невозможно, но если выделить процессуP2одну единицуR3, он может быть завершен. Пусть после завершенияP2 выполняются требованияP1, затемP3 иP4. Следовательно, исходное состояние – безопасное.

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

Использование метода устранения взаимоблокировок требует выполнения следующих условий:

1) Должны быть заранее указаны максимальные требования каждого процесса к каждому виду ресурса;

2) Рассмотренные процессы должны быть независимы, т.е. порядок их выполнения не должен ограничиваться какими-либо требованиями синхронизации;

3) Должно иметься фиксированное количество распределяемых ресурсов;

4) Ни один процесс не должен завершаться в состоянии захвата ресурса.