Skirtumas tarp semaforo ir monitoriaus OS

Autorius: Laura McKinney
Kūrybos Data: 1 Balandis 2021
Atnaujinimo Data: 5 Gegužė 2024
Anonim
Have any of you heard of the midnight game? Horror stories. Mystic. Horror
Video.: Have any of you heard of the midnight game? Horror stories. Mystic. Horror

Turinys


Tiek „Semaforas“, tiek „Monitor“ suteikia procesams prieigą prie bendrų išteklių abipusės atskirties sąlygomis. Abu yra proceso sinchronizacijos įrankis. Vietoj to, jie labai skiriasi vienas nuo kito. Kur Semaforas yra sveikasis kintamasis, kurį galima valdyti tik laukiant () ir signalu () veikiant atskirai nuo inicializacijos. Kita vertus, Monitorius tipas yra abstraktus duomenų tipas, kurio konstrukcija leidžia vienu metu suaktyvinti vieną procesą. Šiame straipsnyje mes aptarsime skirtumus tarp semaforo ir monitoriaus, naudodami palyginimo lentelę, parodytą žemiau.

  1. Palyginimo diagrama
  2. Apibrėžimas
  3. Pagrindiniai skirtumai
  4. Išvada

Palyginimo diagrama

Palyginimo pagrindasSemaforas Monitorius
Pagrindinis Semaforai yra sveikasis kintamasis S.Monitorius yra abstraktus duomenų tipas.
Veiksmas„Semaphore S“ vertė nurodo sistemoje esančių bendrų išteklių skaičiųMonitoriaus tipą sudaro bendri kintamieji ir procedūrų rinkinys, veikiantis su bendruoju kintamuoju.
PrieigaKai bet kuris procesas pasiekia bendrai naudojamus išteklius, jis vykdo „S“ laukimo () operaciją ir, išleidęs bendrinamus išteklius, „S“ atlieka signalo () operaciją.Kai kuris nors procesas nori prieiti prie bendrų kintamųjų monitoriuje, jis turi prie jo prieiti per procedūras.
Sąlygos kintamasisSemaforas neturi sąlygų kintamųjų.Monitoriuje yra sąlygų kintamieji.


Semaforo apibrėžimas

Būdami proceso sinchronizacijos įrankiu, Semaforas yra sveikasis kintamasis S. Šis sveikasis kintamasis S yra inicializuotas į išteklių skaičius esančių sistemoje. Semaforo S vertę galima pakeisti tik dviem funkcijomis laukti() ir signalas() išskyrus inicializavimą.

Laukimo () ir signalo () operacija nedalomai keičia semaforo S vertę. Tai reiškia, kad kai procesas keičia semaforo vertę, joks kitas procesas negali tuo pačiu metu pakeisti semaforo vertės. Be to, operacinė sistema išskiria semaforą į dvi kategorijas - Skaičiavimo semaforai ir Dvejetainiai - semaforai.

Į Skaičiavimas semaforas, semaforo S vertė yra nustatoma atsižvelgiant į sistemoje esančių išteklių skaičių. Kai procesas nori pasiekti bendrai naudojamus išteklius, jis vykdomas laukti() operacija semaforoje, kuri potvarkiai semaforo reikšmė viena. Kai jis išleidžia bendrą resursą, jis atlieka a signalas() operacija semaforoje, kuri prieaugiai semaforo reikšmė viena. Kai semaforų skaičius eina į 0, tai reiškia visi ištekliai yra užimti pagal procesus. Jei procesas turi naudoti išteklius, kai semaforų skaičius yra 0, jis vykdo laukimą () ir gaukite užblokuotas kol procesas, kuriame naudojami bendri ištekliai, jį išlaisvina, o semaforo vertė tampa didesnė nei 0.


Į Dvejetainis semaforas, semaforo vertė svyruoja nuo 0 iki 1. Jis panašus į mutekso užraktą, tačiau muteksas yra užrakinimo mechanizmas, tuo tarpu semaforas yra signalinis mechanizmas. Dvejetainiame semaforoje, jei procesas nori pasiekti išteklius, jis palaiko () operaciją semaforoje ir potvarkiai semaforo reikšmė nuo 1 iki 0. Kai procesas išleidžia resursą, jis atlieka a signalas() operacija semaforu ir padidina jo vertę iki 1. Jei semaforo reikšmė yra 0, o procesas nori pasiekti išteklius, jis atlieka laukimo () operaciją ir blokuoja save, kol dabartinis išteklius naudojantis procesas išleidžia resursą.

Monitoriaus apibrėžimas

Norėdami pašalinti laiko klaidas, atsirandančias naudojant semaforą proceso sinchronizavimui, tyrėjai pristatė aukšto lygio sinchronizacijos konstrukciją, t. monitoriaus tipas. Monitoriaus tipas yra abstraktus duomenų tipas kuris naudojamas proceso sinchronizavimui.

Būdamas abstrakčiu duomenų tipu, monitoriaus tipą sudaro dalijami duomenų kintamieji kuriuos turi bendrinti visi procesai ir kurie yra apibrėžti programuotojo operacijos kurie leidžia procesus vykdyti abipusiai atskirtuose monitoriuje. Procesas gali nėra tiesiogiai prieinama bendras duomenų kintamasis monitoriuje; procesas turi prie jo prieiti per procedūras apibrėžtos monitoriuje, kurios leidžia tik vienam procesui vienu metu pasiekti prie monitoriaus bendrai naudojamus kintamuosius.

Monitoriaus sintaksė yra tokia:

monitoriaus monitoriaus vardas {// bendro kintamojo deklaravimo procedūra P1 (...) {} procedūra P2 (..) {} procedūra Pn (...) {} inicializacijos kodas (..) {}}

Monitorius yra tokia konstrukcija, kad monitoriuje vienu metu yra aktyvus tik vienas procesas. Jei kitas procesas bando prieiti prie bendrai naudojamo kintamojo monitoriuje, jis užblokuojamas ir yra išdėstomas eilėje, kad gautų prieigą prie bendrai naudojamų duomenų, kai anksčiau naudodamiesi procesu jie išleidžia.

Sąlyginiai kintamieji buvo pristatyti papildomam sinchronizacijos mechanizmui. Sąlyginis kintamasis leidžia procesą laukti monitoriaus viduje ir leidžia laukimo procesą tęsti iš karto, kai kitas procesas išlaisvina išteklius.

sąlyginis kintamasis gali sukelti tik dvi operacijas laukti() ir signalas(). Kur, jei procesas P iškviečia laukimą () operacija sustabdoma monitoriuje iki kito proceso Q iškvietimo signalas () operacija, t. y. signalo () operacija, kurią sukviečia procesas, sustabdo sustabdytą procesą.

  1. Pagrindinis skirtumas tarp semaforo ir monitoriaus yra tas, kad semaforas yra sveikasis kintamasis S kurie nurodo sistemoje esančių išteklių skaičių, tuo tarpu monitorius yra abstraktus duomenų tipas o tai leidžia vienu metu vykdyti tik vieną procesą kritinėje skiltyje.
  2. Semaforo vertę galima pakeisti laukti() ir signalas () tik operacija. Kita vertus, monitoriuje yra bendri kintamieji ir tik tos procedūros, per kurias procesai gali pasiekti bendrus kintamuosius.
  3. Semaforoje, kai procesas nori pasiekti bendrus išteklius, procesas vykdomas laukti() operacija ir blokuoja išteklius, o kai išleidžia resursus, kuriuos ji vykdo signalas() operacija. Monitoriuose, kai procesas turi pasiekti bendrus išteklius, jis turi prieiti prie jų naudodamas monitoriaus procedūras.
  4. Monitoriaus tipas turi būklės kintamieji kurio semaforas neturi.

Išvada:

Monitoriai yra lengvai įgyvendinami nei semaforiniai, o monitorių klaidų tikimybė yra maža, palyginti su semaforais.