Mutex vs szemafor: Mi a különbség?

Tartalomjegyzék:

Anonim

Mi a szemafor?

A szemafor egyszerűen olyan változó, amely nem negatív és megosztott a szálak között. A szemafor jelzési mechanizmus, és a szemaforon várakozó szálat egy másik szál is jelezheti. Két atomműveletet használ: 1) várakozást és 2) jelet a folyamat szinkronizálásához.

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

Ebben az oktatóanyagban megtudhatja:

  • Mi az a Mutex?
  • Szemafor használata
  • A Mutex használata
  • Különbség a szemafor és a Mutex között
  • Gyakori tévhitek a Mutexről és a szemaforról
  • A szemafor előnyei
  • A Mutex előnyei
  • A szemaforok hátránya
  • A Mutex hátrányai

Mi az a Mutex?

A Mutex teljes formája a kölcsönös kizárási objektum. Ez egy speciális típusú bináris szemafor, amelyet a megosztott erőforráshoz való hozzáférés ellenőrzésére használnak. Ez magában foglal egy elsőbbségi öröklődési mechanizmust a kiterjesztett prioritási inverziós problémák elkerülése érdekében. Lehetővé teszi az aktuális magasabb prioritású feladatok blokkolt állapotban tartását a lehető legrövidebb időn belül. Az elsőbbségi öröklés azonban nem korrigálja a prioritás-inverziót, csak minimalizálja annak hatását.

FŐ KÜLÖNBSÉG

  • A Mutex egy reteszelő mechanizmus, míg a szemafor egy jelző mechanizmus
  • A Mutex csak egy objektum, míg a szemafor egy egész szám
  • A Mutexnek nincs altípusa, míg a szemafornak két típusa van, amelyek a szemaforot és a bináris szemaforot számlálják.
  • A szemafor támogatja a várakozási és jelzési műveletek módosítását, míg a Mutexet csak az a folyamat módosítja, amely erőforrást kérhet vagy kiadhat.
  • A szemafor értéket a wait () és a signal () műveletekkel módosítják, másrészt a Mutex műveletek zárolva vannak.

Szemafor használata

Egyetlen puffer esetén a 4 KB-os puffert szétválaszthatjuk négy 1 KB-os pufferre. A szemafor ehhez a négy pufferhez társítható. Ez lehetővé teszi a felhasználók és a gyártók számára, hogy egyszerre különböző puffereken dolgozzanak.

A Mutex használata

A mutex kölcsönös kirekesztést biztosít, amely lehet akár gyártó, akár fogyasztó, aki rendelkezhet a kulccsal (mutex) és folytathatja munkájukat. Amíg a gyártó tölti a puffert, a felhasználónak várnia kell, és fordítva. A Mutex lock alkalmazásban mindig csak egyetlen szál működhet a teljes pufferrel.

Különbség a szemafor és a Mutex között

Paraméterek Szemafor Mutex
Gépezet Ez egyfajta jelző mechanizmus. Ez egy reteszelő mechanizmus.
Adattípus A szemafor egész változó. A Mutex csak egy tárgy.
Módosítás A várakozási és jelzési műveletek módosíthatják a szemaforot. Csak az a folyamat módosítja, amely erőforrást kérhet vagy adhat ki.
Erőforrás menedzsment Ha egyetlen erőforrás sem szabad, akkor a folyamathoz olyan erőforrásra van szükség, amelynek végre kell hajtania a várakozási műveletet. Várnia kell, amíg a szemafor száma nagyobb lesz, mint 0. Ha le van zárva, a folyamatnak várnia kell. A folyamatot sorban kell tartani. Ehhez csak akkor kell hozzáférni, ha a mutex fel van oldva.
cérna Több programszála is lehet. Több programszála is lehet a mutex-ben, de nem egyszerre.
Tulajdonjog Az érték megváltoztatható az erőforrás felszabadításával vagy megszerzésével. Az objektumzárat csak az a folyamat engedi fel, amely megszerezte a zárat rajta.
Típusok A szemafor típusai a szemafor és a bináris szemafor számlálása. A Mutexnek nincsenek altípusai.
Művelet A szemafor érték a várakozás () és a jel () művelettel módosul. A Mutex objektum zárolva vagy feloldva.
Források Foglaltság Foglalt, ha az összes erőforrást felhasználják, és az erőforrást igénylő folyamat várakozási () műveletet hajt végre, és blokkolja magát, amíg a szemaforszám nem lesz> 1. Abban az esetben, ha az objektum már zárolva van, az erőforrást igénylő folyamat várat, és a rendszer sorba állítja a zár feloldása előtt.

Általános tények a Mutexről és a szemaforról

Íme néhány általános tény a Mutexről és a szemaforról:

  • Csak egy feladat képes megszerezni a mutexet. Tehát van tulajdonjog egy mutexhez társítva, és csak a tulajdonos engedheti el a mutexet.
  • A mutex és a szemafor használatának okai eltérőek lehetnek, talán a megvalósításuk hasonlósága miatt a mutexet bináris szemafornak nevezzük.
  • Az egyik közismert tévhit, hogy a Mutexek és a Szemaforok szinte azonosak, az egyetlen különbség az, hogy a Mutex képes 1-ig, míg a Semaforok 0-tól N-ig számolni.
  • A bináris szemafor és a mutex között mindig van bizonytalanság. Hallhatja, hogy a mutex bináris szemafor, ami nem helyes.

A szemafor előnyei

A szemafor használatának előnyei / előnyei:

  • Több szál hozzáférését teszi lehetővé a kritikus szakaszhoz
  • A szemaforok gépfüggetlenek.
  • A szemaforok a mikrokernek gépfüggetlen kódjában valósulnak meg.
  • Nem engedik, hogy több folyamat is belépjen a kritikus szakaszba.
  • Mivel a szemaforban sok a várakozás, soha nem pazarolja a folyamat idő és erőforrások.
  • Gépfüggetlenek, amelyeket a mikromag gépfüggetlen kódjában kell futtatni.
  • Lehetővé teszik az erőforrások rugalmas kezelését.

A Mutex előnyei

Itt vannak a Mutex fontos előnyei / előnyei

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

A szemaforok hátránya

Itt vannak a szemafor hátrányai / hátrányai

  • A szemafor egyik legnagyobb korlátja a prioritás inverziója.
  • Az operációs rendszernek nyomon kell követnie az összes várakozási hívást és a szemafor jelzését.
  • Használatukat soha nem hajtják végre, de csak egyezmény alapján.
  • A szemafor holtpontjainak elkerülése érdekében a Várakozás és Jelzés műveleteket a megfelelő sorrendben kell végrehajtani.
  • A szemafor programozás összetett módszer, így van esély arra, hogy ne érjük el a kölcsönös kirekesztést.
  • Szintén nem praktikus módszer nagyüzemi használatra, mivel használatuk a modularitás elvesztéséhez vezet.
  • A szemafor sokkal hajlamosabb a programozói hibákra.
  • Programozói hiba miatt holtponthoz vagy a kölcsönös kizárás megsértéséhez vezethet.

A Mutex hátrányai

Itt a Mutex hátrányai / hátrányai

  • Ha egy szál zárat kap, és alszik, vagy meg van előzve, akkor előfordulhat, hogy a másik szál nem képes előre lépni. Ez éhezéshez vezethet.
  • Nem zárható le és nem oldható fel más kontextusból, mint amelyik megszerezte.
  • Egyszerre csak egy szálat szabad engedélyezni a kritikus szakaszban.
  • A normál megvalósítás forgalmas várakozási állapothoz vezethet, ami pazarolja a CPU idejét.