Különbség a szemafor és a monitor között az operációs rendszerben
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.
- Összehasonlító táblázat
- Meghatározás
- Főbb különbségek
- Következtetés
Összehasonlító táblázat
Az összehasonlítás alapja | Szemafor | 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át | A 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és | Amikor 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.
- 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.
- 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á.
- 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.
- 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.