Mutex vs Semaphore – Különbség köztük

Főbb különbség a Mutex és a Semaphore

  • A Mutex egy zárszerkezet, míg Semaphore egy jelzőmechanizmus
  • A Mutex csak egy tárgy Semaphore egy egész szám
  • A Mutexnek nincs altípusa, míg a szemafornak két típusa van: a számláló szemafor és a bináris szemafor.
  • Semaphore támogatja a várakozási és jelzési műveletek módosítását, míg a Mutexet csak az erőforrást kérő vagy felszabadító folyamat módosítja.
  • Semaphore Az érték módosítása a várakozás () és a signal () műveletekkel történik, másrészt a Mutex műveletek zárolása vagy feloldása történik.

Különbség a Mutex és a Semaphore
Különbség a Mutex és a Semaphore

Itt elemeztem a különbséget a Mutex és a Semaphore és átfogóan értékelni fogja előnyeiket és hátrányaikat.

Gyakori tények a Mutexről és Semaphore

Gyakorlatomból levonva íme néhány gyakori tény a Mutex vs Semaphore:

  • Csak egy feladat szerezheti meg a mutexet. Így a mutex tulajdonjoggal rendelkezik, és csak a tulajdonos engedheti el.
  • A mutex és a szemafor használatának okai eltérőek, talán a megvalósításuk hasonlósága miatt, a mutexet bináris szemafornak nevezik.
  • Az egyik nagyon ismert tévhit az, hogy a Mutexes és Semaphores majdnem azonos, azzal az egyetlen különbséggel, hogy a Mutex képes 1-ig számolni, míg Semaphoreképes 0-tól N-ig számolni.
  • Mindig van bizonytalanság a bináris szemafor és a mutex között. Hallhatja, hogy a mutex egy bináris szemafor, ami nem helyes.

Mi az a Semaphore?

Egy szemafor Egyszerűen egy változó, amely nem negatív és megosztva a szálak között. A szemafor egy jelzőmechanizmus, és a szemaforon várakozó szálat egy másik szál jelezheti. Két atomi műveletet használ, 1) várakozást és 2) jelet a folyamat szinkronizálás.

A szemafor vagy engedélyezi vagy letiltja az erőforráshoz való hozzáférést, ami a beállítás módjától függ.

Használata Semaphore

Egyetlen puffer esetén a 4 KB-os puffert négy 1 KB-os pufferre választhatjuk szét. Semaphore társítható ehhez a négy pufferhez. Ez lehetővé teszi a felhasználóknak és a gyártóknak, hogy egyidejűleg különböző puffereken dolgozzanak.

Előnyei Semaphore

Gyakorlatomban itt vannak a szemafor használatának legfontosabb pozitívumai:

  • Lehetővé teszi, hogy egynél több szál hozzáférjen a kritikus részhez
  • Semaphores gépfüggetlenek.
  • Semaphores a mikrokernel gépfüggetlen kódjában vannak megvalósítva.
  • Nem teszik lehetővé több folyamat belépését a kritikus szakaszba.
  • Mivel a szemaforban elfoglalt várakozási idő van, soha nem kell a folyamatidőt és az erőforrásokat pazarolni.
  • Gépfüggetlenek, amelyeket a mikrokernel gépfüggetlen kódjában kell futtatni.
  • Lehetővé teszik az erőforrások rugalmas kezelését.

Hátrányai Semaphores

Itt vannak a szemafor hátrányai, amelyekkel találkoztam.

  • A szemafor egyik legnagyobb korlátja az elsőbbségi inverzió.
  • Az operációs rendszernek nyomon kell követnie minden hívást a várakozáshoz és a szemafor jelzéséhez.
  • Használatukat soha nem kényszerítik ki, de csak megállapodás alapján.
  • A szemafor holtpontjainak elkerülése érdekében a Várj és Signal a műveleteket a megfelelő sorrendben kell végrehajtani.
  • Semaphore a programozás egy összetett módszer, így van esély arra, hogy ne érjük el a kölcsönös kizárást.
  • Szintén nem praktikus módszer nagyüzemi használatra, mivel használatuk a modularitás elvesztéséhez vezet.
  • Semaphore hajlamosabb a programozói hibákra.
  • Előfordulhat holtpont vagy a kölcsönös kizárás megsértése programozói hiba miatt.

Mi az a Mutex?

A Mutex teljes formája a Mutual Exclusion Object. Ez egy speciális típusú bináris szemafor, amely a megosztott erőforráshoz való hozzáférés szabályozására szolgál. Tartalmaz egy prioritás öröklődési mechanizmust a kiterjesztett prioritás-inverziós problémák elkerülése érdekében. Lehetővé teszi, hogy az aktuális magasabb prioritású feladatokat a lehető legrövidebb ideig blokkolt állapotban tartsák. A prioritási öröklődés azonban nem korrigálja a prioritás-inverziót, hanem csak minimalizálja annak hatását.

Mutex használata

A mutex kölcsönös kizárást biztosít, amely lehet termelő vagy fogyasztó, aki birtokában van a kulcsnak (mutex) és folytathatja munkáját. Amíg a gyártó tölti a puffert, a felhasználónak várnia kell, és fordítva. A Mutex zárban mindig csak egy szál tud működni a teljes pufferrel.

A Mutex előnyei

A megfigyelések alapján a Mutex legfontosabb előnyei:

  • A mutexek csak egyszerű zárak, amelyeket a kritikus szakaszba való belépés, majd az elengedés előtt szereznek be.
  • Mivel egy adott időpontban csak egy szál van a kritikus szakaszában, nincsenek versenyfeltételek, és az adatok mindig konzisztensek maradnak.

A Mutex hátrányai

A gyakorlatom során a Mutex számos hátrányát azonosítottam.

  • Ha egy szál zárolást kap, és alvó állapotba kerül, vagy megelőzi, akkor előfordulhat, hogy a másik szál nem tud előrelépni. Ez éhezéshez vezethet.
  • Nem zárolható vagy oldható fel más kontextusból, mint amelyik megszerezte.
  • Egyszerre csak egy szál engedélyezhető a kritikus szakaszban.
  • A normál megvalósítás foglalt várakozási állapothoz vezethet, ami CPU-időt veszít.

A különbség köztük Semaphore és Mutex

A velük való munka során tanultak alapján a Mutexes és a Semaphorekülönböznek:

Semaphore vs Mutex
Semaphore vs Mutex
paraméterek Semaphore mutexek
Szerkezet Ez egyfajta jelzőmechanizmus. Ez egy zárszerkezet.
Adattípus Semaphore egy egész változó. A Mutex csak egy tárgy.
Módosítás A várakozás és jelzés műveletek módosíthatják a szemafort. Csak az erőforrást kérő vagy felszabadító folyamat módosítja.
Erőforrás menedzsment Ha nincs szabad erőforrás, akkor a folyamathoz olyan erőforrásra van szükség, amelynek végre kell hajtania a várakozási műveletet. Meg kell várnia, amíg a szemaforok száma nagyobb, mint 0. Ha zárolva van, a folyamatnak várnia kell. A folyamatot sorban kell tartani. Ezt csak akkor kell elérni, ha a mutex fel van oldva.
Szál Több programszál is lehet. Több programszál is lehet a mutexben, de nem egyszerre.
Tulajdon Az értéket bármely, az erőforrást felszabadító vagy megszerző folyamat megváltoztathatja. Az objektumzárat csak az a folyamat oldja fel, amelyik megkapta a zárolást.
Típusai Típusok Semaphore szemafort és bináris szemafort számol. A Mutexnek nincsenek altípusai.
OperaCIÓ Semaphore az érték módosítása a várakozás () és a jel () művelettel történik. A Mutex objektum zárolva van vagy fel van oldva.
Erőforrások Foglaltság Lefoglalt, ha minden erőforrás használatban van, és az erőforrást kérő folyamat várakozási () műveletet hajt végre, és blokkolja magát, amíg a szemaforok száma >1 lesz. Abban az esetben, ha az objektum már zárolva van, az erőforrásokat kérő folyamat vár, és sorba állítja a rendszer a zárolás feloldása előtt.

Következtetés

Tapasztalataim szerint a mutexek és a szemaforok közötti választás kulcsa a működési árnyalatok felismerése. Semaphores ideálisak összetett szinkronizáláshoz, míg a mutexek az egyszerű kölcsönös kizárásokhoz alkalmasak, biztosítva az erőforrások biztonságát egyszerűbb összefüggésekben.