Különbség a szemafor és a monitor között az operációs rendszerben

Szerző: Laura McKinney
A Teremtés Dátuma: 1 Április 2021
Frissítés Dátuma: 5 Lehet 2024
Anonim
Különbség a szemafor és a monitor között az operációs rendszerben - Technológia
Különbség a szemafor és a monitor között az operációs rendszerben - Technológia

Tartalom


A Semafor és a Monitor egyaránt lehetővé teszik a folyamatok számára a megosztott erőforrások elérését kölcsönös kizárás mellett. Mindkettő a folyamatszinkronizáló eszköz. Ehelyett nagyon különböznek egymástól. Ahol Szemafor egy egész szám, amely csak a várakozás () és a jel () művelettel működtethető, az inicializálástól eltekintve. Másrészt a Monitor típus egy elvont adattípus, amelynek konstrukciója lehetővé teszi, hogy egy folyamat egyszerre aktiválódjon. Ebben a cikkben az alább bemutatott összehasonlító táblázat segítségével tárgyaljuk a szemafor és a monitor közötti különbségeket.

  1. Összehasonlító táblázat
  2. Meghatározás
  3. Főbb különbségek
  4. Következtetés

Összehasonlító táblázat

Az összehasonlítás alapjaSzemafor Monitor
Alapvető A szemaforok egész S változó.A Monitor egy absztrakt adattípus.
AkcióA Semaphore S értéke megmutatja a rendszerben rendelkezésre álló megosztott erőforrások számátA Monitor típus megosztott változókat és a megosztott változón működő eljárások halmazát tartalmazza.
HozzáférésAmikor valamelyik folyamat hozzáfér a megosztott erőforrásokhoz, az S-n vár () műveletet hajt végre, és amikor a megosztott erőforrásokat elengedi, az S-en jel () műveletet hajt végre.Ha valamelyik folyamat meg akarja férni a megosztott változókhoz a monitoron, hozzá kell férnie ehhez az eljárásokon keresztül.
Feltétel változóA szemafornak nincs feltételes változója.A monitor állapotváltozókkal rendelkezik.


A szemafor meghatározása

Mivel a folyamat szinkronizáló eszköz, Szemafor egy egész S. változó Ez az S egész szám változót inicializálja források száma jelen vannak a rendszerben. Az S szemafor értékét csak két függvény módosíthatja várjon() és jel() az inicializálástól eltekintve.

A várakozás () és a jel () művelet elválaszthatatlanul módosítja az S szemafor értékét. Ami azt jelenti, hogy amikor egy folyamat módosítja a szemafor értékét, akkor semmilyen más folyamat nem tudja egyszerre módosítani a szemafor értékét. Ezenkívül az operációs rendszer megkülönbözteti a szemaforot két kategóriában: Semaforok számlálása és Bináris szemafor.


Ban ben A semafor számlálása, az S szemafor értékét a rendszerben lévő erőforrások számával kell inicializálni. Ha egy folyamat hozzáférni akar a megosztott erőforrásokhoz, akkor végrehajtja várjon() működés a szemaforon, amely csökkenéssel a szemafor értéke egyenként. Amikor kiadja a megosztott erőforrást, végrehajtja a jel() működés a szemaforon, amely lépésekben a szemafor értéke egyenként. Amikor a szemafor szám megy 0, azt jelenti az összes erőforrás el van foglalva a folyamatok által. Ha egy folyamatnak erőforrást kell használnia, ha a szemaforszám 0, akkor végrehajtja a wait () és get parancsot zárolt amíg a megosztott erőforrásokat felhasználó folyamat fel nem engedi azt, és a szemafor értéke nullánál nagyobb lesz.

Ban ben Bináris szemafor, a szemafor értéke 0 és 1 között mozog. Ez hasonló a mutex reteszeléshez, de a mutex reteszelő mechanizmus, míg a szemafor jelző mechanizmus. A bináris szemaforban, ha egy folyamat hozzáférni akar az erőforráshoz, a (semafor) és csökkenéssel a szemafor értéke 1-től 0-ig. Amikor a folyamat felszabadítja az erőforrást, akkor végrehajtja a jel() művelet a szemaforon és növeli annak értékét 1-re. Ha a szemafor értéke 0, és egy folyamat szeretne hozzáférni az erőforráshoz, elvégzi a (

A monitor meghatározása

Annak érdekében, hogy kiküszöböljék az időzítési hibákat, amelyek során a szemaforot használják a folyamat szinkronizálására, a kutatók bevezettek egy magas szintű szinkronizációs konstrukciót, azaz a monitor típusa. A monitor típusa egy absztrakt adattípus amelyet a folyamat szinkronizálására használnak.

Mint elvont adattípus, a monitor típusa tartalmazza a megosztott adatváltozók amelyeket meg kell osztani az összes folyamatnak, és néhány programozónak kell meghatároznia tevékenységek amelyek lehetővé teszik a folyamatok kölcsönös kizárásával történő végrehajtását a monitoron belül. Egy folyamat képes nincs közvetlen hozzáférés a megosztott adatváltozó a monitoron; a folyamatnak hozzá kell férnie ehhez eljárásokon keresztül A monitoron definiált meghatározások, amelyek lehetővé teszik, hogy csak egy folyamat érje el egyszerre a monitor megosztott változóit.

A monitor szintaxisa a következő:

monitor monitor_neve {// megosztott változó deklarációk P1 (...) {} eljárás P2 (...) {} eljárás Pn (..) {} eljárás Pn (..) {} inicializálási kód (..) {}}

A monitor olyan konstrukció, amelynél a monitoron belül egyszerre csak egy folyamat aktív. Ha más folyamat megpróbálja elérni a megosztott változót a monitoron, akkor az blokkolódik, és sorakoznak a sorban, hogy hozzáférjenek a megosztott adatokhoz, amikor a folyamathoz korábban hozzáférve felszabadítja azt.

Feltételes változók bevezették a további szinkronizációs mechanizmushoz. A feltételes változó lehetővé teszi egy folyamat várakozását a monitoron belül és lehetővé teszi a várakozási folyamat azonnali folytatódását, amikor a másik folyamat felszabadítja az erőforrásokat.

A feltételes változó csak két műveletet képes meghívni várjon() és jel(). Hol, ha egy folyamat P várakozást hív fel () A művelet felfüggesztésre kerül a monitoron egy másik folyamatig Q hívójel () művelet, azaz egy folyamat által kiváltott jel () művelet folytatja a felfüggesztett folyamatot.

  1. Az alapvető különbség a szemafor és a monitor között az, hogy a szemafor egy egész változó S amelyek jelzik a rendszerben rendelkezésre álló erőforrások számát, míg a monitor az a elvont adattípus amely egyszerre csak egy folyamatot képes végrehajtani a kritikus szakaszban.
  2. A szemafor értéke a következővel módosítható: várjon() és jel() csak működés. Másrészt, a monitor megosztott változókkal és azokkal az eljárásokkal rendelkezik, amelyeken keresztül a megosztott változók csak a folyamatokhoz férhetnek hozzá.
  3. A Semaphore alkalmazásban, amikor egy folyamat meg akarja férni a megosztott erőforrásokhoz, a folyamat végrehajtja várjon() működtetheti és blokkolja az erőforrásokat, és amikor kiadja az általuk végrehajtott erőforrásokat jel() működés. Monitorokban, amikor egy folyamatnak meg kell férnie a megosztott erőforrásokhoz, meg kell férnie hozzájuk.
  4. A monitor típusa: állapotváltozók melynek a szemafornak nincs.

Következtetés:

A monitorokat könnyű megvalósítani, mint a szemaforokat, és kevés a tévedés esélye a monitorokban a szemaforokhoz képest.