Разрешение конфликтов при распределении ресурсов
Конфликты при распределении ресурсов возникают между процессами. Как известно, в произвольный момент времени ресурс может использовать (владеть) только один процесс. Процесс, которой в данный момент времени использует ресурс, называют владельцем ресурса. Для разрешения конфликтов разработаны специальные методы синхронизации (согласования) совместного использования ресурсов несколькими процессами, одновременно выполняющимися в системе.
Ресурсы с точки зрения совместного использования процессами подразделяются
на два типа: выгружаемые и невыгружаемые.
Выгружаемый ресурс – это ресурс, который можно забрать у процесса – владельца в произвольный момент времени выполнения без отрицательных последствий. Пример – оперативная память. Если процессу необходимо выделить оперативную память, а ее недостаточно, то один из процессов или его часть будет выгружена на жесткий диск, а затем по мере освобождения памяти процесс будет загружена вновь в оперативную память и продолжит свою работу. Конфликтов для выгружаемых ресурсов не возникает.
Невыгружаемый ресурс – это ресурс, который нельзя забрать у процесса - владельца в произвольный момент времени без отрицательных последствий, то есть, не уничтожив результаты работы процесса. Пример – принтер, плоттер, компакт – диск, дискета. Конфликты возникают при распределении невыгружаемых ресурсов.
Для использования ресурса необходимо:
1. Запрос ресурса – то есть приложение или модуль ОС формирует запрос на выделение ему ресурса или части ресурса, который обслуживается ОС (создается системная информация – таблица запросов);
2. Использование ресурса – то есть обмен данными с ресурсом;
3. Освобождение ресурса – из системной информации удаляются данные о ресурсе, ресурс или его часть становится свободной и может быть выделена по другому запросу;
В каждый момент времени ресурс может быть выделен только одному процессу. Если ресурс недоступен, когда он требуется, то запрашиваемый его процесс переходит в состояние ожидания. По истечении некоторого времени запрос повторяется и если процесс недоступен, то процесс остается в состоянии ожидания, таким образом, может получиться цепочка
Запрос – ожидание – запрос – ожидание - …..
То есть процесс находиться в состоянии ожидания и не выполняет никакой работы
Если в системе один процесс, то конфликтов при распределении ресурсов не возникает. Если в системе несколько процессов, то может возникнуть конфликт – тупиковая ситуация.
Рассмотрим возможные случаи распределения ресурсов между процессами.
Пусть в системе выполняется два процесса – процесс А и процесс В, каждый процесс запрашивает ресурс 1 и 2.
Вариант 1
Процесс А | Ресурс1 | Ресурс 2 | ||||
Процесс В | Ресурс 2 | Ресурс 1 | ||||
Независимое использование ресурсов двумя процессами, конфликтов не возникает
Вариант 2
Процесс А | Ресурс1 | Ресурс 2 | ||||
Процесс В | Ресурс 1 | Ресурс 2 | ||||
Ожидание ресурса 1 пр. В | Ожидание ресурса 2 пр. В |
К ресурсам 1 и 2 образовалась очередь, конфликтов нет
Вариант 3
Процесс А | Ресурс1 | Ожидание ресурса 2 | |||
Процесс В | Ресурс 2 | Ожидание ресурса 1 | |||
Ресурс 1 занят процессом А и требуется процессу В, ресурс 2 занят процессом В и требуется ресурсу А. Возникла тупиковая ситуация (взаимоблокировка) – тупик
Дата добавления: 2015-08-11; просмотров: 1446;