Razlika med Semaphore in Monitorjem v OS

Avtor: Laura McKinney
Datum Ustvarjanja: 1 April 2021
Datum Posodobitve: 5 Maj 2024
Anonim
C++ | Конструктор | Деструктор | Оператор присваивания | Введение в ООП | 04
Video.: C++ | Конструктор | Деструктор | Оператор присваивания | Введение в ООП | 04

Vsebina


Semaphore in Monitor omogočata postopkom dostop do skupnih virov medsebojno izključeno. Oboje je orodje za sinhronizacijo procesov. Namesto tega se med seboj zelo razlikujejo. Kje Semafor je cela spremenljivka, ki jo lahko upravljamo samo s funkcijo čakanja () in signala (), razen inicializacije. Po drugi strani pa Monitor type je abstraktna podatkovna vrsta, katere konstrukcija omogoča, da se en proces hkrati aktivira. V tem članku bomo obravnavali razlike med semaforjem in monitorjem s pomočjo spodnje primerjalne tabele.

  1. Primerjalna tabela
  2. Opredelitev
  3. Ključne razlike
  4. Zaključek

Primerjalna tabela

Osnove za primerjavoSemafor Monitor
Osnovni Semafore so cela spremenljivka S.Monitor je abstraktna podatkovna vrsta.
UkrepVrednost Semaphore S označuje število skupnih virov, ki so na voljo v sistemuVrsta Monitorja vsebuje spremenljive spremenljivke in nabor postopkov, ki delujejo na skupni spremenljivki.
DostopKadar kateri koli postopek dostopa do skupnih virov, izvede operacijo wait () na S in ko sprosti skupne vire, izvede signal signal () na S.Kadar katerikoli postopek želi dostopati do skupnih spremenljivk na monitorju, mora do njega dostopati s postopki.
Pogoj spremenljivkaSemafor nima spremenljivk stanja.Monitor ima spremenljivke stanja.


Opredelitev Semaphore

Kot orodje za sinhronizacijo procesov, Semafor je cela spremenljivka S. Ta cela spremenljivka S je inicializirana v število virov prisotni v sistemu. Vrednost semaforja S lahko spreminjamo samo z dvema funkcijama počakaj() in signal() razen inicializacije.

Postopek čakanja () in signala () nepomembno spreminja vrednost semaforja S. Kar pomeni, da ko postopek spreminja vrednost semaforja, noben drug postopek ne more hkrati spremeniti vrednosti semafore. Poleg tega operacijski sistem razlikuje semafor v dveh kategorijah Štetje semafor in Binarni semafor.

V Štetje Semaforja, vrednost semaforja S se inicializira na število virov, ki so prisotni v sistemu. Kadarkoli želi postopek dostopati do skupnih virov, se izvaja počakaj() delovanje na semaforju ki odloki vrednost semaforja za eno. Ko sprosti skupni vir, izvede a signal() delovanje na semaforju ki prirastek vrednost semaforja za eno. Ko se šteje semafor 0, to pomeni vsi viri so zasedeni po procesih. Če mora postopek uporabiti vir, ko je število semaforjev 0, izvede wait () in pride blokiran dokler se postopek, ki uporablja skupne vire, ne sprosti in vrednost semaforja ne postane večja od 0.


V Binarni semafor, vrednost semaforja se giblje med 0 in 1. Podobna je blokadi mutexa, vendar je mutex zaklepni mehanizem, medtem ko je semafor signalni mehanizem. V binarnem semaforju, če želi postopek dostopati do vira, izvaja operacijo wait () na semaforju in odloki vrednost semaforja od 1 do 0. Ko proces sprosti vir, izvede a signal() deluje na semaforju in poveča njegovo vrednost na 1. Če je vrednost semaforja 0 in postopek želi dostopati do vira, izvede operacijo wait () in se blokira, dokler trenutni postopek, ki uporablja vire, sprosti vir.

Opredelitev Monitorja

Da bi premagali časovne napake, ki se pojavljajo pri uporabi semaforja za sinhronizacijo procesov, so raziskovalci uvedli sinhronizacijski konstrukt na visoki ravni, tj. vrsta monitorja. Vrsta monitorja je abstraktni podatkovni tip ki se uporablja za sinhronizacijo procesov.

Ker je vrsta monitorja abstraktne vrste podatkov, vsebuje deljene spremenljivke podatkov ki jih morajo deliti vsi procesi in določeni nekateri programerji operacije ki omogočajo, da se procesi izvajajo v medsebojni izključitvi znotraj monitorja. Proces lahko neposrednega dostopa spremenljivka deljenih podatkov v monitorju; postopek mora imeti dostop do njega s postopki opredeljeno v monitorju, ki omogočajo samo enemu postopku dostop do skupnih spremenljivk hkrati.

Sintaksa monitorja je naslednja:

monitor monitor_name {// postopek deklaracije spremenljive spremenljivke P1 (.) {} postopek P2 (.). {} postopek Pn (.) {} inicializacijska koda (.) {}}

Monitor je konstrukcija, kot je naenkrat znotraj monitorja aktiven samo en postopek. Če poskuša drug postopek dostopati do spremenljive spremenljivke na monitorju, se blokira in se postavi v čakalno vrsto, da dobi dostop do skupnih podatkov, ko predhodni postopek sprosti.

Pogojne spremenljivke uvedeni za dodatni sinhronizacijski mehanizem. Pogojna spremenljivka omogoča postopek, da čaka znotraj monitorja in omogoča, da se čakalni postopek takoj nadaljuje, ko drugi postopek sprosti vire.

The pogojna spremenljivka lahko prikliče samo dve operaciji počakaj() in signal(). Kje, če postopek P prikliče čakanje () delovanje se v monitorju prekine do drugega postopka Q prikliči signal () operacija, tj. signal (), ki ga sproži postopek, nadaljuje prekinjeni postopek.

  1. Osnovna razlika med semaforjem in monitorjem je, da je semafor je cela spremenljivka S ki kažejo število virov, ki so na voljo v sistemu, medtem ko monitor ali je abstraktni tip podatkov ki omogoča, da se hkrati v kritičnem odseku izvede samo en postopek.
  2. Vrednost semaforja lahko spremenite z počakaj () in signal () samo delovanje. Na drugi strani ima monitor skupne spremenljivke in samo postopke, prek katerih lahko procesi dostopajo do skupnih spremenljivk.
  3. V programu Semaphore, ko želi proces dostopati do skupnih virov, ki ga proces izvaja počakaj() delovanje in blokiranje virov in ko sprosti vire, ki jih izvaja signal() delovanje. Pri monitorjih, ko mora proces dostopati do skupnih virov, mora do njih dostopati s postopki v monitorju.
  4. Vrsta monitorja je spremenljivke stanja ki semaforja nima.

Zaključek:

Monitorji so enostavnejši za izvedbo kot semaforji in v primerjavi z semaforji je malo možnosti, da bi prišlo do napake.