Atšķirība starp semaforu un monitoru OS

Autors: Laura McKinney
Radīšanas Datums: 1 Aprīlis 2021
Atjaunināšanas Datums: 5 Maijs 2024
Anonim
НАРУШИЛА ПРАВИЛА - СНИМАЮ ОДЕЖДУ #2 ЧЕЛЛЕНДЖ EURO TRUCK SIMULATOR 2
Video: НАРУШИЛА ПРАВИЛА - СНИМАЮ ОДЕЖДУ #2 ЧЕЛЛЕНДЖ EURO TRUCK SIMULATOR 2

Saturs


Gan semafors, gan Monitor ļauj procesiem piekļūt kopīgiem resursiem, savstarpēji izslēdzoties. Abi ir procesa sinhronizācijas rīks. Tā vietā viņi ļoti atšķiras viens no otra. Kur Semafors ir vesels skaitlis, ko var darbināt tikai ar nogaidīšanas () un signāla () darbību, izņemot inicializāciju. No otras puses Monitor tips ir abstrakts datu tips, kura konstrukcija ļauj vienam procesam aktivizēties vienlaikus. Šajā rakstā mēs apskatīsim atšķirības starp semaforu un monitoru, izmantojot salīdzināšanas diagrammu, kas parādīta zemāk.

  1. Salīdzināšanas tabula
  2. Definīcija
  3. Galvenās atšķirības
  4. Secinājums

Salīdzināšanas tabula

Salīdzināšanas pamatsSemafors Monitor
Pamata Semafori ir vesels skaitlis S.Monitors ir abstrakts datu tips.
DarbībaSemafora S vērtība norāda sistēmā pieejamo koplietoto resursu skaituMonitora tips satur koplietotus mainīgos un procedūru kopumu, kas darbojas ar koplietojamo mainīgo.
PiekļuveKad kāds process piekļūst koplietotajiem resursiem, tas veic gaidīšanas () operāciju S un kad tas atbrīvo koplietojamos resursus, tas veic signāla () operāciju S.Ja kāds process vēlas piekļūt monitorā koplietotajiem mainīgajiem, tam tas jāpiekļūst, izmantojot procedūras.
Stāvokļa mainīgaisSemaforā nav stāvokļa mainīgo.Monitoram ir stāvokļa mainīgie.


Semafora definīcija

Būdams procesa sinhronizācijas rīks, Semafors ir vesels skaitlis S. Šis vesels skaitlis mainīgais S tiek inicializēts ar resursu skaits kas atrodas sistēmā. Semafora S vērtību var mainīt tikai ar divām funkcijām pagaidiet() un signāls() izņemot inicializēšanu.

Gaidīšana () un signāls () maina semafora S vērtību nedalāmi. Kas nozīmē, kad process maina semaforas vērtību, neviens cits process nevar vienlaikus modificēt semaforas vērtību. Turklāt operētājsistēma semaforu izšķir divās kategorijās Semaforu skaitīšana un Binārais semafors.

Iekšā Semafora skaitīšana, semafora S vērtība tiek inicializēta ar sistēmā esošo resursu skaitu. Ikreiz, kad process vēlas piekļūt koplietotajiem resursiem, tas tiek veikts pagaidiet() operācija semaforā, kura dekrēti semafora vērtība pa vienam. Atbrīvojot koplietoto resursu, tas veic a signāls() operācija semaforā, kura pieaugumi semafora vērtība pa vienam. Kad semaforu skaits iet uz 0, tas nozīmē visi resursi ir aizņemti pa procesiem. Ja procesam ir jāizmanto resurss, kad semaforu skaits ir 0, tas izpilda wait () un get bloķēts līdz process, kurā tiek izmantoti kopīgi resursi, to atbrīvo, un semafora vērtība kļūst lielāka par 0.


Iekšā Binārais semafors, semafora vērtība svārstās no 0 līdz 1. Tas ir līdzīgs mutex bloķēšanai, bet mutex ir bloķēšanas mehānisms, savukārt semafors ir signālmehānisms. Binārā semaforā, ja process vēlas piekļūt resursam, tas semaforā un dekrēti semafora vērtība no 1 līdz 0. Kad process atbrīvo resursu, tas veic a signāls() operācija semaforā un palielina tā vērtību līdz 1. Ja semaforas vērtība ir 0 un process vēlas piekļūt resursam, tas veic operācijas gaidīšanu () un bloķē sevi, līdz pašreizējais process, kurā tiek izmantoti resursi, resurss tiek atbrīvots.

Monitora definīcija

Lai novērstu laika kļūdas, kas rodas, lietojot semaforu procesa sinhronizēšanai, pētnieki ir ieviesuši augsta līmeņa sinhronizācijas konstrukciju, t.i. monitora tips. Monitora tips ir abstrakts datu tips ko izmanto procesu sinhronizēšanai.

Būdams abstrakts datu tips, monitora tips satur kopīgi datu mainīgie kas ir kopīgi visiem procesiem un ir definēti programmētājam operācijas kas ļauj procesiem veikt savstarpēju izslēgšanu monitorā. Process var nav tiešas piekļuves dalītais datu mainīgais monitorā; procesam tam ir jāpiekļūst izmantojot procedūras monitorā definēti, kas ļauj tikai vienam procesam vienlaikus piekļūt monitorā koplietotajiem mainīgajiem.

Monitora sintakse ir šāda:

monitors monitor_name {// dalītu mainīgo deklarēšanas procedūra P1 (...) {} procedūra P2 (...) {} procedūra Pn (..) {} inicializācijas kods (..) {}}

Monitors ir konstrukcija, piemēram, monitorā vienlaikus ir aktīvs tikai viens process. Ja cits process mēģina piekļūt koplietotajam mainīgajam monitorā, tas tiek bloķēts un tiek ierindots rindā, lai piekļūtu koplietotajiem datiem, iepriekš piekļūstot procesam, tas to atbrīvo.

Nosacīti mainīgie tika ieviesti papildu sinhronizācijas mehānismam. Nosacījuma mainīgais ļauj procesam gaidīt monitora iekšpusē un ļauj gaidīšanas procesu atsākt nekavējoties, kad otrs process atbrīvo resursus.

nosacīts mainīgais var izsaukt tikai divas operācijas pagaidiet() un signāls(). Kur, ja process P izsauc gaidīšanu () darbība tiek apturēta monitorā līdz citam procesam Q izsaukuma signāls () operācija, t.i., signāla () darbība, ko izsauc process, atsāk apturēto procesu.

  1. Galvenā atšķirība starp semaforu un monitoru ir tā, ka semafors ir vesels skaitlis mainīgais S kas norāda sistēmā pieejamo resursu skaitu, turpretī monitors ir abstrakts datu tips kas ļauj kritiskajā sadaļā vienlaikus veikt tikai vienu procesu.
  2. Semafora vērtību var mainīt ar pagaidiet () un signāls () tikai operācija. No otras puses, monitoram ir koplietojami mainīgie un tikai procedūras, ar kuru palīdzību procesiem var piekļūt kopīgotie mainīgie.
  3. Semaforā, kad process vēlas piekļūt koplietotajiem resursiem, process to veic pagaidiet() operē un bloķē resursus, un kad tas atbrīvo resursus, ko tas veic signāls() darbība. Monitoros, kad procesam ir jāpiekļūst kopīgiem resursiem, tam ir jāpiekļūst, izmantojot monitorā esošās procedūras.
  4. Monitora tipam ir stāvokļa mainīgie kura semaforam nav.

Secinājums:

Monitorus ir viegli ieviest nekā semaforus, un monitorā, salīdzinot ar semaforiem, ir maz iespēju kļūdīties.