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.