Разрешение конфликтов при распределении ресурсов

 

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

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

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

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

Для использования ресурса необходимо:

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

2. Использование ресурса – то есть обмен данными с ресурсом;

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

 

 

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

 

Запрос – ожидание – запрос – ожидание - …..

 

То есть процесс находиться в состоянии ожидания и не выполняет никакой работы

Если в системе один процесс, то конфликтов при распределении ресурсов не возникает. Если в системе несколько процессов, то может возникнуть конфликт – тупиковая ситуация.

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

Пусть в системе выполняется два процесса – процесс А и процесс В, каждый процесс запрашивает ресурс 1 и 2.