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

Автор: Laura McKinney
Дата Створення: 1 Квітень 2021
Дата Оновлення: 5 Травень 2024
Anonim
QLED vs OLED: В ЧЕМ РАЗНИЦА?
Відеоролик: QLED vs OLED: В ЧЕМ РАЗНИЦА?

Зміст


І семафор, і монітор дозволяють процесам отримувати доступ до спільних ресурсів взаємним виключенням. Обидва є інструментом синхронізації процесів. Натомість вони сильно відрізняються один від одного. Де Семафор це ціла змінна, якою можна керувати лише операцією wait () та signal (), крім ініціалізації. З іншого боку, Монітор type - абстрактний тип даних, конструкція якого дозволяє одночасно активувати один процес. У цій статті ми обговоримо відмінності між семафором та монітором за допомогою таблиці порівняння, показаної нижче.

  1. Порівняльна діаграма
  2. Визначення
  3. Ключові відмінності
  4. Висновок

Порівняльна діаграма

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


Визначення Семафора

Будучи інструментом синхронізації процесів, Семафор є ціла змінна S. Ця ціла змінна S ініціалізується на кількість ресурсів присутній у системі. Значення семафору S можна змінювати лише двома функціями чекати() і сигнал() крім ініціалізації.

Операція зачекання () та сигналу () змінює значення семафору S неподільно. Що означає, коли процес змінює значення семафору, жоден інший процес не може одночасно змінювати значення семафору. Далі операційна система розрізняє семафор на дві категорії підрахунок семафорів та бінарний семафор.

В Підрахунок Семафора, значення семафору S ініціалізується на кількість ресурсів, присутніх у системі. Щоразу, коли процес хоче отримати доступ до спільних ресурсів, він виконує свою дію чекати() операція на семафорі який декременти значення семафору на одиницю. Коли він випускає спільний ресурс, він виконує a сигнал() операція на семафорі який прирости значення семафору на одиницю. Коли підрахунок семафору переходить до 0, це означає всі ресурси зайняті процесами. Якщо процес потребує використання ресурсу, коли кількість семафорів дорівнює 0, він виконує wait () та get заблокований поки процес, що використовує спільні ресурси, не звільнить його, і значення семафору не стане більше 0.


В Бінарний семафор, значення семафору коливається в межах від 0 до 1. Це аналогічно блокуванню мютексу, але мутекс є блокувальним механізмом, тоді як семафор є сигнальним механізмом. У двійковому семафорі, якщо процес хоче отримати доступ до ресурсу, він виконує операцію wait () на семафорі та декременти значення семафору від 1 до 0. Коли процес звільняє ресурс, він виконує a сигнал() робота над семафором і збільшення його значення до 1. Якщо значення семафору дорівнює 0 і процес хоче отримати доступ до ресурсу, він виконує операцію wait () і блокує себе до поточного процесу, що використовує ресурси, звільняє ресурс.

Визначення монітора

Щоб подолати помилки синхронізації, що виникають під час використання семафору для синхронізації процесу, дослідники запровадили конструкцію синхронізації високого рівня, тобто тип монітора. Тип монітора є абстрактний тип даних що використовується для синхронізації процесів.

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

Синтаксис монітора такий:

монітор monitor_name {// процедура загальних змінних оголошень процедура P1 (.) {} процедура P2 (.). {} процедура Pn (.) {} код ініціалізації (.). {}}

Монітор - це така конструкція, що одночасно в моніторі активний лише один процес. Якщо інший процес намагається отримати доступ до спільної змінної на моніторі, він блокується і вишикується у черзі, щоб отримати доступ до спільних даних, коли раніше доступний процес звільняє його.

Умовні змінні були введені для додаткового механізму синхронізації. Умовна змінна дозволяє процес чекати всередині монітора і дозволяє негайно відновити процес очікування, коли інший процес звільнить ресурси.

The умовна змінна може викликати лише дві операції чекати() і сигнал(). Де якщо процес P викликає очікування () Операцію він призупиняє в моніторі до іншого процесу Q викликає сигнал () операція, тобто операція сигнал (), викликана процесом, відновлює призупинений процес.

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

Висновок:

Монітори прості в застосуванні, ніж семафор, і шанси помилок у моніторі мало порівняно із семафорами.