Разница между семафором и монитором в ОС

Автор: Laura McKinney
Дата создания: 1 Апрель 2021
Дата обновления: 5 Май 2024
Anonim
05 - Операционные системы. Семафоры. Мониторы.
Видео: 05 - Операционные системы. Семафоры. Мониторы.

Содержание


Semaphore и Monitor позволяют процессам получать доступ к общим ресурсам во взаимном исключении. Оба являются инструментом синхронизации процессов. Вместо этого они сильно отличаются друг от друга. где семафор является целочисленной переменной, которая может работать только с операциями wait () и signal (), кроме инициализации. С другой стороны, монитор тип - это абстрактный тип данных, конструкция которого позволяет активировать один процесс за один раз. В этой статье мы обсудим различия между семафором и монитором с помощью сравнительной таблицы, показанной ниже.

  1. Сравнительная таблица
  2. Определение
  3. Ключевые отличия
  4. Вывод

Сравнительная таблица

Основа для сравнениясемафор монитор
основной Семафоры - это целочисленная переменная S.Монитор - это абстрактный тип данных.
действиеЗначение Semaphore S указывает количество общих ресурсов, доступных в системе.Тип Monitor содержит общие переменные и набор процедур, которые работают с общей переменной.
ДоступКогда какой-либо процесс обращается к общим ресурсам, он выполняет операцию wait () на S, а когда он освобождает общие ресурсы, он выполняет операцию signal () на S.Когда какой-либо процесс хочет получить доступ к общим переменным в мониторе, он должен получить к нему доступ с помощью процедур.
Переменная условияСемафор не имеет условных переменных.Монитор имеет условные переменные.


Определение семафора

Являясь инструментом синхронизации процессов, семафор является целочисленная переменная S. Эта целочисленная переменная S инициализируется количество ресурсов присутствует в системе. Значение семафора S может быть изменено только двумя функциями Подождите() а также сигнал() кроме инициализации.

Операции wait () и signal () изменяют значение семафора S неделимо. Это означает, что когда процесс изменяет значение семафора, никакой другой процесс не может одновременно изменить значение семафора. Кроме того, операционная система различает семафор по двум категориям: подсчет семафоров и двоичный семафор.

В Считая семафорзначение семафора S инициализируется количеством ресурсов, присутствующих в системе. Всякий раз, когда процесс хочет получить доступ к общим ресурсам, он выполняет Подождите() операция над семафором, которая декременты значение семафора по одному. Когда он освобождает общий ресурс, он выполняет сигнал() операция над семафором, которая приращений значение семафора по одному. Когда счетчик семафоров переходит к 0, это значит все ресурсы заняты по процессам. Если процессу нужно использовать ресурс, когда счетчик семафоров равен 0, он выполняет wait () и получает блокированный пока процесс, использующий общие ресурсы, не освободит его и значение семафора не станет больше 0.


В Бинарный семафорзначение семафора находится в диапазоне от 0 до 1. Это похоже на блокировку мьютекса, но мьютекс - это механизм блокировки, тогда как семафор - это механизм сигнализации. В двоичном семафоре, если процесс хочет получить доступ к ресурсу, он выполняет операцию wait () для семафора и декременты значение семафора от 1 до 0. Когда процесс освобождает ресурс, он выполняет сигнал() над семафором и увеличивает его значение до 1. Если значение семафора равно 0 и процесс хочет получить доступ к ресурсу, он выполняет операцию wait () и блокирует себя до тех пор, пока текущий процесс, использующий ресурсы, не освободит ресурс.

Определение монитора

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

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

Синтаксис монитора следующий:

monitor monitor_name {// процедура объявления общих переменных P1 (...) {} процедура P2 (...) {} процедура Pn (...) {} код инициализации (...) {}}

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

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

условная переменная может вызвать только две операции Подождите() а также сигнал(). Где, если процесс P вызывает ожидание () операция приостановлена ​​в мониторе до другого процесса Q вызвать сигнал () операция, то есть операция signal (), вызванная процессом, возобновляет приостановленный процесс.

  1. Основное различие между семафором и монитором состоит в том, что семафор является целочисленная переменная S которые указывают количество ресурсов, доступных в системе, тогда как монитор это абстрактный тип данных который позволяет одновременно выполнять только один процесс в критической секции.
  2. Значение семафора может быть изменено Подождите() а также сигнал() только операция С другой стороны, монитор имеет общие переменные и процедуры, с помощью которых процессы могут получить доступ к общим переменным.
  3. В семафоре, когда процесс хочет получить доступ к общим ресурсам, процесс выполняет Подождите() и блокирует ресурсы, а когда освобождает ресурсы, выполняет сигнал() операция. В мониторах, когда процессу требуется доступ к общим ресурсам, он должен получать к ним доступ с помощью процедур в мониторе.
  4. Тип монитора имеет переменные условия какой семафор не имеет.

Вывод:

Мониторы проще в реализации, чем семафор, и по сравнению с семафорами вероятность ошибки в мониторе ниже.