Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция _5_ОС.doc
Скачиваний:
12
Добавлен:
01.07.2025
Размер:
138 Кб
Скачать
☆

2.2 Задача «читатели-писатели»

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

Имеются различные варианты взаимодействия между процессами-писателями и процессами-читателями. Наиболее широко распространены следующие:

1. Устанавливается приоритетность в использовании критического ресурса процессам-читателям. Если хотя бы один процесс-читатель пользуется ресурсом, то он закрыт для использования всем процессам-писаиелям.

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

Наиболее характерная область использования этой задачи - построение файловых систем операционной системы.

2.3 Задача «обедающие философы»

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

Для примера рассмотрим случай с тремя процессами и тремя ресурсами. Пусть имеются три параллельных процесса X, Y и Z и три ресурса R1, R2 и R3. Особенность развития процессов такова, что для пребывания процесса Х в активном состоянии ему требуется выделить одновременно ресурсы R1 и R2, для пребывания процесса Y - ресурсы R2 и R3, для пребывания процесса Z - ресурсы R3 и R1. Скорости развития процессов произвольны. Переходы из активного в другие состояния происходят в непредсказуемые моменты.

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

3 Мониторы Хоара

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

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

Процесс, желающий получить доступ к разделяемым переменным, должен обратиться к процедуре REQUEST (запрос) монитора. Если запрашиваемый ресурс свободен, то процесс получает ресурс и покидает монитор. Иначе процедура выдает команду ожидания WAIT(free) с указанием условия ожидания, которая переводит обратившийся процесс в конец очереди ожидания вне монитора.

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

Пример. Простейший монитор для выделения одного ресурса будет иметь следующий вид.

monitor Resourse;

condition free; {условие - свободный}