Rozdiel medzi semaforom a monitorom v OS

Autor: Laura McKinney
Dátum Stvorenia: 1 Apríl 2021
Dátum Aktualizácie: 5 Smieť 2024
Anonim
Rozdiel medzi semaforom a monitorom v OS - Technológie
Rozdiel medzi semaforom a monitorom v OS - Technológie

Obsah


Semaphore a Monitor umožňujú procesom prístup k zdieľaným zdrojom pri vzájomnom vylúčení. Obidva sú nástrojom na synchronizáciu procesov. Namiesto toho sa od seba veľmi líšia. Kde semafor je celočíselná premenná, ktorú je možné inicializovať iba pomocou operácie wait () a signal (). Na druhej strane monitor typ je abstraktný typ údajov, ktorého konštrukcia umožňuje aktiváciu jedného procesu naraz. V tomto článku budeme diskutovať o rozdieloch medzi semaforom a monitorom pomocou porovnávacej tabuľky uvedenej nižšie.

  1. Porovnávacia tabuľka
  2. definícia
  3. Kľúčové rozdiely
  4. záver

Porovnávacia tabuľka

Základ pre porovnaniesemafor monitor
základné Semafory sú celočíselné premenné S.Monitor je abstraktný typ údajov.
akčnéHodnota Semaphore S označuje počet zdieľaných zdrojov dostupných v systémeTyp monitora obsahuje zdieľané premenné a množinu procedúr, ktoré pracujú so zdieľanou premennou.
prístupKeď akýkoľvek proces pristupuje k zdieľaným zdrojom, vykoná operáciu wait () na S a keď uvoľní zdieľané zdroje, vykoná operáciu signal () na S.Ak chce ktorýkoľvek proces získať prístup k zdieľaným premenným na monitore, musí k nim pristupovať prostredníctvom postupov.
Premenná stavuSemafor nemá premenné podmienok.Monitor má premenné stavu.


Definícia Semaforu

Ako nástroj na synchronizáciu procesov semafor je celočíselná premenná S. Táto celočíselná premenná S sa inicializuje na počet zdrojov prítomný v systéme. Hodnota semafora S môže byť modifikovaná iba dvoma funkciami čakania() a signál() okrem inicializácie.

Operácia wait () a signal () modifikuje hodnotu semafora S neoddeliteľne. Čo znamená, že keď proces upravuje hodnotu semafora, žiadny iný proces nemôže súčasne zmeniť hodnotu semafora. Operačný systém ďalej rozlišuje semafor do dvoch kategórií Počítanie semaforov a Binárny semafor.

v Počítanie Semaphoresa hodnota semafora S inicializuje na počet zdrojov prítomných v systéme. Kedykoľvek proces chce získať prístup k zdieľaným zdrojom, vykoná sa čakania() operácia na semafore, ktorá úbytky hodnota semafora jedna. Keď uvoľní zdieľaný prostriedok, vykoná signál() operácia na semafore, ktorá krokoch hodnota semafora jedna. Keď počet semaforov klesne na 0, to znamená všetky zdroje sú obsadené procesmi. Ak proces musí použiť prostriedok, keď počet semaforov je 0, vykoná wait () a get upchatý pokiaľ ho proces využívajúci zdieľané zdroje neuvoľní a hodnota semafora nebude väčšia ako 0.


v Binárny semafor, hodnota semafora je v rozsahu 0 až 1. Je podobná zámke mutex, ale mutex je blokovacím mechanizmom, zatiaľ čo semafor je signalizačným mechanizmom. Ak chce binárny semafor získať prístup k prostriedku, vykoná operáciu wait () na semafore a úbytky hodnota semafora od 1 do 0. Keď proces uvoľní zdroj, vykoná a signál() operácia na semafore a zvyšuje svoju hodnotu na 1. Ak je hodnota semafora 0 a proces chce získať prístup k prostriedku, vykoná operáciu wait () a zablokuje sa, až kým súčasný proces využívajúci zdroje neuvoľní zdroj.

Definícia monitora

Na prekonanie chýb časovania, ktoré sa vyskytujú pri používaní semafora na synchronizáciu procesov, vedci zaviedli konštrukciu synchronizácie na vysokej úrovni, t.j. typ monitora, Typ monitora je abstraktný dátový typ ktorý sa používa na synchronizáciu procesov.

Ako typ monitora abstraktného typu údajov obsahuje zdieľané dátové premenné ktoré majú zdieľať všetky procesy a niektoré definované programátorom operácie ktoré umožňujú vykonávanie procesov vo vzájomnom vylúčení v rámci monitora. Proces môže nie priamy prístup premenná zdieľaných údajov na monitore; tento proces musí mať prístup prostredníctvom postupov definované na monitore, ktoré umožňujú naraz prístup iba k jednému procesu.

Syntax monitora je nasledovná:

monitor monitor_name {// postup deklarovania zdieľanej premennej P1 (...) {} postup P2 (...) {} postup Pn (...) {} inicializačný kód (...) {}}

Monitor je konštrukcia, ako je aktívny súčasne iba jeden proces na monitore. Ak sa iný proces pokúsi získať prístup k zdieľanej premennej na monitore, zablokuje sa a vo fronte je zoradený, aby získal prístup k zdieľaným údajom, keď ich predtým otvorený proces uvoľní.

Podmienené premenné boli zavedené pre ďalší synchronizačný mechanizmus. Podmienená premenná umožňuje proces čakať vo vnútri monitora a umožňuje čakaciemu procesu okamžite pokračovať, keď druhý proces uvoľní prostriedky.

podmienená premenná môže vyvolať iba dve operácie čakania() a signál(). Kde ak proces P vyvolá čakanie () operácia sa pozastaví v monitore až do ďalšieho procesu Signál vyvolania Q () operácia signálu () vyvolaná procesom obnoví pozastavený proces.

  1. Základný rozdiel medzi semaforom a monitorom je, že semafor je celočíselná premenná S ktoré označujú počet zdrojov dostupných v systéme, zatiaľ čo monitor je abstraktný dátový typ čo umožňuje vykonávať naraz iba jeden proces v kritickej sekcii.
  2. Hodnota semafora môže byť zmenená pomocou počkať () a signál () iba operácia. Na druhej strane má monitor zdieľané premenné a postupy, prostredníctvom ktorých môžu procesy získať prístup k zdieľaným premenným.
  3. V Semaphore, keď chce proces získať prístup k zdieľaným zdrojom, tento proces vykonáva čakania() prevádzka a blokovanie zdrojov a keď uvoľní prostriedky, ktoré vykonáva signál() prevádzka. V prípade monitorov, keď proces potrebuje prístup k zdieľaným zdrojom, musí k nim pristupovať prostredníctvom postupov na monitore.
  4. Typ monitora má premenné podmienok ktorý semafor nemá.

záver:

Monitory sa dajú ľahko implementovať ako semafory a na monitore je malá pravdepodobnosť omylov v porovnaní so semaforami.