Rozdíl mezi Semaforem a monitorem v OS

Autor: Laura McKinney
Datum Vytvoření: 1 Duben 2021
Datum Aktualizace: 5 Smět 2024
Anonim
Rozdíl mezi Semaforem a monitorem v OS - Technologie
Rozdíl mezi Semaforem a monitorem v OS - Technologie

Obsah


Semaphore a Monitor umožňují procesům přístup ke sdíleným prostředkům ve vzájemném vyloučení. Oba jsou nástrojem synchronizace procesu. Místo toho se od sebe velmi liší. Kde Semafor je celočíselná proměnná, kterou lze kromě inicializace ovládat pouze pomocí operace wait () a signal (). Na druhé straně, Monitor typ je abstraktní datový typ, jehož konstrukce umožňuje aktivaci jednoho procesu najednou. V tomto článku budeme diskutovat rozdíly mezi semaforem a monitorem pomocí níže uvedené srovnávací tabulky.

  1. Srovnávací tabulka
  2. Definice
  3. Klíčové rozdíly
  4. Závěr

Srovnávací tabulka

Základ pro srovnáníSemafor Monitor
Základní Semafory jsou celočíselná proměnná S.Monitor je abstraktní datový typ.
AkceHodnota Semaphore S označuje počet sdílených zdrojů dostupných v systémuTyp Monitor obsahuje sdílené proměnné a sadu procedur, které pracují na sdílené proměnné.
PřístupKdyž jakýkoli proces přistupuje ke sdíleným prostředkům, provede operaci wait () na S a když uvolní sdílené prostředky, provede operaci signal () na S.Pokud chce jakýkoli proces přistupovat ke sdíleným proměnným na monitoru, musí k nim přistupovat prostřednictvím procedur.
Proměnná stavuSemafor nemá proměnné podmínek.Monitor má proměnné stavu.


Definice Semaforu

Být nástrojem synchronizace procesů, Semafor je celočíselná proměnná S. Tato celočíselná proměnná S je inicializována do počet zdrojů přítomen v systému. Hodnota semaforu S může být změněna pouze dvěma funkcemi Počkejte() a signál() kromě inicializace.

Operace wait () a signal () modifikuje hodnotu semaforu S nedělitelně. Což znamená, že když proces mění hodnotu semaforu, žádný jiný proces nemůže současně změnit hodnotu semaforu. Dále operační systém rozlišuje semafor ve dvou kategoriích Počítání semaforů a Binární semafor.

v Počítání Semaphoreje hodnota semaforu S inicializována na počet zdrojů přítomných v systému. Kdykoli proces chce získat přístup ke sdíleným prostředkům, provede se Počkejte() operace na semaforu, který úbytky hodnota semaforu o jednu. Když uvolní sdílený prostředek, provede signál() operace na semaforu, který přírůstky hodnota semaforu o jednu. Když počet semaforů klesne na 0, to znamená všechny zdroje jsou obsazeny procesy. Pokud proces potřebuje použít prostředek, když počet semaforů je 0, provede wait () a get blokováno dokud jej nevyužije proces využívající sdílené prostředky a dokud nebude hodnota semaforu větší než 0.


v Binární semafor, hodnota semaforu se pohybuje mezi 0 a 1. Je podobná zámku mutex, ale mutex je blokovací mechanismus, zatímco semafor je signalizační mechanismus. V případě binárního semaforu, pokud chce proces získat přístup ke zdroji, provede operaci wait () na semaforu a úbytky hodnota semaforu od 1 do 0. Když proces uvolní prostředek, provede a signál() operace na semaforu a zvyšuje jeho hodnotu na 1. Pokud je hodnota semaforu 0 a proces chce získat přístup ke zdroji, provede operaci wait () a sám se zablokuje, dokud aktuální proces využívající zdroje uvolní prostředek.

Definice monitoru

K překonání chyb časování, ke kterým dochází při používání semaforu pro synchronizaci procesů, vědci zavedli konstrukci synchronizace na vysoké úrovni, tj. typ monitoru. Typ monitoru je abstraktní datový typ který se používá pro synchronizaci procesů.

Jako typ monitoru abstraktní datový typ obsahuje sdílené datové proměnné které mají být sdíleny všemi procesy a některými definovanými programátory operace které umožňují provádění procesů ve vzájemném vyloučení v rámci monitoru. Proces může není přímý přístup proměnná sdílených dat v monitoru; proces k němu musí mít přístup prostřednictvím postupů definované v monitoru, které umožňují pouze jednomu procesu přístup ke sdíleným proměnným v monitoru současně.

Syntaxe monitoru je následující:

monitor monitor_name {// procedura deklarace sdílené proměnné P1 (..) {} procedura P2 (..) {} procedura Pn (..) {} inicializační kód (...) {}}

Monitor je konstrukt, jako je v monitoru aktivní současně pouze jeden proces. Pokud se jiný proces pokusí o přístup ke sdílené proměnné na monitoru, zablokuje se a je ve frontě seřazen, aby získal přístup ke sdíleným datům, když ji předchozí přístup uvolní.

Podmíněné proměnné byly zavedeny pro další synchronizační mechanismus. Podmíněná proměnná umožňuje proces čekat uvnitř monitoru a umožňuje čekajícímu procesu pokračovat okamžitě, jakmile druhý proces uvolní zdroje.

podmíněná proměnná může vyvolat pouze dvě operace Počkejte() a signál(). Kde když proces P vyvolá čekání () operace se pozastaví v monitoru až do dalšího procesu Signál vyvolání Q () operace tj. operace signálu () vyvolaná procesem pokračuje v pozastaveném procesu.

  1. Základní rozdíl mezi semaforem a monitorem je ten semafor je celočíselná proměnná S které označují počet zdrojů dostupných v systému, zatímco monitor je abstraktní datový typ což umožňuje provádět v kritické sekci najednou pouze jeden proces.
  2. Hodnotu semaforu lze změnit pomocí Počkejte() a signál() pouze operace. Na druhé straně má monitor sdílené proměnné a procedury pouze skrze které mohou procesní procesy přistupovat ke sdíleným proměnným.
  3. V Semaphore, když chce proces získat přístup ke sdíleným prostředkům, proces provede Počkejte() operace a blokovat prostředky a když uvolní prostředky, které provádí signál() úkon. U monitorů, kdy proces potřebuje přístup ke sdíleným prostředkům, musí k nim přistupovat prostřednictvím postupů na monitoru.
  4. Typ monitoru má proměnné podmínek který semafor nemá.

Závěr:

Monitory jsou snadno implementovatelné než semafory a ve srovnání s semafory existuje malá šance na chybu na monitoru.