Ajánlott, 2024

Szerkesztő Választása

A szemafor és a mutex közötti különbség

A folyamat szinkronizálása fontos szerepet játszik a megosztott adatok következetességének fenntartásában. Mind a szoftver-, mind a hardveres megoldások jelen vannak a kritikus szakaszok kezelésére. De a kritikus szakaszok problémájára vonatkozó hardveres megoldásokat meglehetősen nehéz megvalósítani. A mai cikkben két szoftver alapú megoldást fogunk megvitatni a kritikus szakaszok problémájának kezelésére, azaz a Szemafor és a Mutex.

A szemafor és a mutex közötti különbség az, hogy a szemafor egy jelátviteli mechanizmus, azaz a folyamatok várakozási () és jel () műveletet hajtanak végre annak jelzésére, hogy az erőforrást megszerzik-e, míg a Mutex záró mechanizmus, a folyamatnak be kell szereznie a zárolást mutex objektum, ha meg akarja szerezni az erőforrást. Van még néhány különbség a szemafor és a mutex között, vitassuk meg őket az alábbi táblázat segítségével.

Összehasonlító táblázat

Az összehasonlítás alapjaSzemaformutex
AlapvetőA szemafor egy jelző mechanizmus.A Mutex egy reteszelő mechanizmus.
LétezésA szemafor egy egész változó.A Mutex egy objektum.
FunkcióA szemafor lehetővé teszi, hogy a többszörös programszálak hozzáférjenek a források véges példányához.A Mutex lehetővé teszi, hogy a többszörös programszál egyetlen erőforráshoz férjen hozzá, de nem egyszerre.
TulajdonjogA szemafor értékét az erőforrást megszerző vagy felszabadító bármely folyamat módosíthatja.A Mutex objektum zárolását csak az a folyamat hajtja végre, amely a zárat megszerezte.
kategorizálA szemafor kategorizálható szemaforra és bináris szemaforra.A Mutex nem kategorizálódik tovább.
MűveletA szemafor értékét a várakozási () és a jel () művelettel módosítják.A Mutex objektum zárolása vagy feloldása az erőforrást kérő vagy felszabadító eljárással történik.
Foglalt forrásokHa minden erőforrást használnak, az erőforrást igénylő folyamat a várakozási () műveletet végrehajtja, és blokkolja magát, amíg a szemaforszám nem lesz nagyobb.Ha egy mutex objektum már zárolva van, akkor az erőforrásokat igénylő folyamat várakozik és várakozással áll a rendszer által, amíg a zár ki nem jelenik.

A szemafor definíciója

A szemafor egy folyamat szinkronizáló eszköz. A szemafor jellemzően egy S változó egész változó, amelyet a rendszerben lévő erőforrások számához inicializálnak, és a szemafor értékét csak két funkció várhatja () és jelet () az inicializáláson kívül.

A várakozási () és a jel () művelet megválaszthatatlanul módosítja a szemafor értékét. Ez azt jelenti, hogy amikor egy folyamat módosítja a szemafor értékét, egyetlen más folyamat sem módosíthatja egyszerre a szemafor értékét. A szemaforot az operációs rendszer megkülönbözteti két kategóriában: szemaforok és bináris szemafor .

A Semaphore számlálás során a szemafor S értéket a rendszerben lévő erőforrás számának inicializálására inicializáljuk. Amikor egy folyamat meg akarja férni az erőforráshoz, akkor a szemaforon várakozó () műveletet hajt végre, és a szemafor értékét egyenként csökkenti. Amikor felszabadítja az erőforrást, a szemaforon jel () műveletet hajt végre, és a szemafor értékét egyenként növeli . Amikor a szemaforszám 0-ra megy, ez azt jelenti, hogy az összes erőforrást a folyamatok foglalják el. Ha egy folyamatnak erőforrást kell használnia, ha a szemaforszám 0, akkor végrehajtja a várakozást () és blokkolja, amíg a szemafor értéke nem lesz nagyobb, mint 0.

A bináris szemaforban a szemafor értéke 0 és 1 között van . Ez hasonló a mutex zárhoz, de a mutex egy reteszelő mechanizmus, míg a szemafor egy jelző mechanizmus. A bináris szemaforban, ha egy folyamat elérni kívánja az erőforrást, akkor a szemaforon várakozó () műveletet hajt végre, és 1-ről 0-ra csökkenti a szemafor értékét. Amikor kiadja az erőforrást, akkor egy szignál () műveletet hajt végre a szemaforon és a lépéseken. értéke 1. Ha a szemafor értéke 0, és a folyamat elérni kívánja az erőforrást, akkor a várakozási () műveletet hajtja végre, és blokkolja magát, amíg az aktuális erőforrást kihasználó folyamat ki nem adja az erőforrást.

A Mutex meghatározása

A kölcsönös kizárási objektumot rövid időre Mutex-nak nevezik. A kölcsönös kirekesztés fogalmából megérthetjük, hogy csak egy folyamat egyszerre férhet hozzá az adott erőforráshoz. A mutex objektum lehetővé teszi, hogy a többszörös programszálak ugyanazt az erőforrást használják, de egyszerre nem egyszerre.

Amikor egy program elindítja, kérje a rendszert, hogy hozzon létre egy mutex objektumot egy adott erőforráshoz. A rendszer létrehoz egy egyedi nevet vagy azonosítót tartalmazó mutex objektumot. Amikor a program szál használni akarja az erőforrást, amely lezárja a mutex objektumot, kihasználja az erőforrást, és használat után a mutex objektum zárját adja ki. Ezután a következő folyamat megszerzi a mutex objektum zárolását.

Eközben egy folyamat megszerezte a zárat a mutex objektumon, és más szál / folyamat nem fér hozzá az erőforráshoz. Ha a mutex objektum már zárolva van, a mutex objektum zárolásának megszerzését kívánó folyamatnak várnia kell, és a rendszer sorba állítja a mutex objektum feloldását.

A szemafor és a mutex közötti különbségek

  1. A szemafor egy jelzőmechanizmus, mint a várakozási () és a szignál () művelet, amely a szemafor változón keresztül történik, jelzi, hogy egy folyamat megszerzi-e az erőforrást vagy felszabadítja az erőforrást. Másrészt a mutex egy zárószerkezet, mivel az erőforrás megszerzéséhez a folyamatnak le kell zárnia az mutex objektumot, és az erőforrás-folyamat felszabadításakor fel kell oldania a mutex objektumot.
  2. A szemafor általában egy egész változó, míg a mutex egy objektum .
  3. A szemafor lehetővé teszi több programszál elérését az erőforrások véges példányához . Másrészről a Mutex lehetővé teszi, hogy több programszál egyetlen egyedi erőforráshoz férjen hozzá, de egyenként.
  4. A szemafor változó értéket bármely olyan folyamat módosíthatja, amely az erőforrást a várakozási () és a jel () művelet végrehajtásával szerezheti meg. Másrészről a mutex objektumon szerzett zár csak akkor oldható meg , ha a mutex objektum zárolását megszerezte.
  5. A szemafor kétféle szemaforból és bináris szemaforból áll, amely meglehetősen hasonlít a mutexhez.
  6. A szemafor változó értékét a várakozási () és a jel () művelet módosítja az inicializáláson kívül. Azonban az elnémító objektum zárolva van vagy feloldódik az erőforrás megszerzése vagy feloldása által.
  7. Ha az összes erőforrást a folyamat megszerzi, és nincs erőforrás szabad, akkor az erőforrást szerezni kívánó folyamat várakozási () műveletet hajt végre a szemafor változón, és blokkolja magát addig, amíg a szemafor száma nem lesz nagyobb, mint 0. De ha már van egy mutex objektum zárolt, majd az erőforrást megszerző folyamat várakozással és várakozással vár a rendszerben, amíg az erőforrás felszabadul és a mutex objektum kinyit.

Következtetés:

A szemafor jobb megoldás, ha több erőforrás áll rendelkezésre. Egyetlen közös erőforrás esetén a mutex jobb választás.

Top