Mi a Semaphore? Számlálás, bináris típusok példával
Mi a Semaphore?
Semaphore 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árjon és 2) Signal a folyamat szinkronizálásához.
A szemafor vagy engedélyezi vagy letiltja az erőforráshoz való hozzáférést, ami attól függ, hogyan van beállítva.
Jellemző Semaphore
Itt a szemafor jellemzői:
- Ez egy olyan mechanizmus, amely a feladatok szinkronizálására használható.
- Ez egy alacsony szintű szinkronizálási mechanizmus.
- Semaphore mindig tartalmaz egy nem negatív egész értéket.
- Semaphore tesztműveletekkel és megszakításokkal valósítható meg, amelyeket fájlleírók segítségével kell végrehajtani.
Típusok Semaphores
A szemaforok két gyakori fajtája az
- Szemaforok számolása
- Bináris szemaforok.
Számolás Semaphores
Ez a fajta Semaphore számlálót használ, amely számos alkalommal segíti a feladat megszerzését vagy felszabadítását. Ha a kezdeti szám = 0, akkor a számláló szemafort nem elérhető állapotban kell létrehozni.
Ha azonban a szám > 0, akkor a szemafor a rendelkezésre álló állapotban jön létre, és a benne lévő tokenek száma megegyezik a számával.
Kétkomponensű Semaphores
A bináris szemaforok meglehetősen hasonlóak a szemaforok számlálásához, de értékük 0-ra és 1-re korlátozódik. Ennél a szemafortípusnál a várakozás művelet csak akkor működik, ha a szemafor = 1, és a jelművelet sikeres, ha a szemafor = 0. Könnyű megvalósítani, mint a szemaforok számolását.
Például az Semaphore
Az alábbi program egy lépésről lépésre történő megvalósítás, amely magában foglalja a szemafor használatát és deklarálását.
Shared var mutex: semaphore = 1; Process i begin . . P(mutex); execute CS; V(mutex); . . End;
Várj és Signal Operabe Semaphores
Mindkét művelet végrehajtására szolgál folyamat szinkronizálás. Ennek a szemafor műveletnek a célja a kölcsönös kizárás.
Várni rá OperaCIÓ
Ez a fajta szemaforművelet segít a feladat kritikus szakaszba való belépésének szabályozásában. Ha azonban a várakozás értéke pozitív, akkor az X várakozási argumentum értéke csökken. Negatív vagy nulla érték esetén nem történik művelet. P(S) műveletnek is nevezik.
A szemafor értékének csökkentése után, amely negatívvá válik, a parancs addig marad fenn, amíg a szükséges feltételek teljesülnek.
Copy CodeP(S) { while (S<=0); S--; }
Signal működés
Ez a fajta Semaphore művelet egy feladat kritikus szakaszból való kilépésének vezérlésére szolgál. Segít növelni az argumentum értékét 1-gyel, amelyet V(S)-ként jelölünk.
Copy CodeP(S) { while (S>=0); S++; }
Számolás Semaphore vs. Bináris Semaphore
Íme néhány fő különbség a számlálás és a bináris szemafor között:
Számolás Semaphore | Kétkomponensű Semaphore |
---|---|
Nincs kölcsönös kizárás | Kölcsönös kizárás |
Bármilyen egész érték | Csak 0 és 1 érték |
Egynél több slot | Csak egy slot |
Adja meg a folyamatok készletét | Kölcsönös kizárási mechanizmussal rendelkezik. |
A különbség köztük 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ámolnak és | 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. |
Előnyei Semaphores
Itt vannak a használat előnyei/előnyei Semaphore:
- 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 nyüzsgő várakozás folyik, soha nem vesztegetik a folyamatidőt és az erőforrásokat.
- 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.
A szemaforok hátránya
Itt vannak a szemafor hátrányai/hátrányai
- 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 bonyolult, ezért 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.
Összegzésként
- Semaphore nem negatív és a szálak között megosztott változóként van definiálva.
- Ez egy olyan mechanizmus, amely a feladatok szinkronizálására használható.
- A szemafor számlálása olyan számlálást használ, amely számos alkalommal segíti a feladat megszerzését vagy felszabadítását.
- A bináris szemaforok nagyon hasonlítanak a számláló szemaforokhoz, de értékük 0-ra és 1-re korlátozódik.
- A várakozási művelet segít a feladat kritikus szakaszba való belépésének szabályozásában
- Signal A szemafor művelet egy feladat kritikus szakaszból való kilépésének vezérlésére szolgál
- Számolás Semaphore nincs kölcsönös kizárás, míg a bináris Semaphore kölcsönös kizárással rendelkezik
- Semaphore jelzőmechanizmust jelent, míg a Mutex egy reteszelő mechanizmust
- Semaphore lehetővé teszi egynél több szál elérését a kritikus szakaszhoz
- A szemafor egyik legnagyobb korlátja az elsőbbségi inverzió.