Mi az 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 operációs rendszer (OS) oktatóanyagban megtudhatja:
- A szemaforra jellemző
- Mi az a szemafor?
- A szemaforok típusai
- Példa a szemaforra
- Várakozás és jelzés műveletek a szemaforokban
- A szemafor és a bináris szemafor beszámítása
- Különbség a szemafor és a Mutex között
- A szemaforok előnyei
- A szemaforok hátránya
A szemaforra jellemző
Itt jellemzőek a szemaforra:
- Ez egy olyan mechanizmus, amely felhasználható a feladatok szinkronizálására.
- Alacsony szintű szinkronizációs mechanizmus.
- A szemafor mindig nem negatív egész értéket tartalmaz.
- A szemafor tesztmûveletekkel és megszakításokkal valósítható meg, amelyeket fájlleírók segítségével kell végrehajtani.
A szemaforok típusai
A két általános szemaforfajta
- Szemaforok számlálása
- Bináris szemaforok.
Szemaforok számlálása
Ez a típusú szemafor egy olyan számlálást használ, amely elősegíti a feladat megszerzését vagy kiadását számos alkalommal. Ha a kezdeti számlálás = 0, akkor a számláló szemaforot nem elérhető állapotban kell létrehozni.
Ha azonban a számlálás> 0, akkor a szemafor a rendelkezésre álló állapotban jön létre, és a rendelkezésére álló tokenek száma megegyezik a számlálásával.
Bináris szemaforák
A bináris szemaforok meglehetősen hasonlóak a szemaforok számlálásához, de ezek értéke 0-ra és 1-re korlátozódik. Ebben a típusú szemaforban a várakozási művelet csak akkor működik, ha a szemafor = 1, és a jelművelet akkor sikerül, ha a szemafor = 0. Könnyű végrehajtani, mint a szemaforokat számlálni.
Példa a szemaforra
Az alábbiakban megadott program lépésről lépésre megvalósítás, amely magában foglalja a szemafor használatát és deklarálását.
Shared var mutex: semaphore = 1;Process ibegin… P(mutex);execute CS;V(mutex);… End;
Várakozás és jelzés műveletek a szemaforokban
Mindkét műveletet a folyamatszinkronizálás megvalósítására használják. A szemafor művelet célja a kölcsönös kirekesztés megszerzése.
Várja meg a műveletet
Az ilyen típusú szemafor műveletek segítenek a feladatok kritikus szakaszba történő bejegyzésének ellenőrzésében. 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 hajtanak végre műveletet. P (S) műveletnek is nevezik.
Miután a szemafor érték csökken, amely negatívvá válik, a parancs addig tart, amíg a szükséges feltételek nem teljesülnek.
Copy CodeP(S){while (S<=0);S--;}
Jel működés
Ez a fajta szemafor művelet a feladatok kritikus szakaszból való kilépésének vezérlésére szolgál. Segít növelni az argumentum értékét 1-vel, amelyet V (S) -ként jelölünk.
Copy CodeP(S){while (S>=0);S++;}
A szemafor és a bináris szemafor beszámítása
Íme néhány fő különbség a számlálás és a bináris szemafor között:
Szemafor számlálása | Bináris szemafor |
Nincs kölcsönös kirekesztés | Kölcsönös kizárás |
Bármely egész érték | Csak 0 és 1 érték |
Több rés | Csak egy rés |
Adjon meg egy sor folyamatot | Kölcsönös kizárási mechanizmussal rendelkezik. |
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 és | 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. |
A szemaforok 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 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 bonyolult, ezért 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.
Összegzés:
- A szemafor egy olyan változó, amely nem negatív és megosztott a szálak között.
- Ez egy olyan mechanizmus, amely felhasználható a feladatok szinkronizálására.
- A szemafor számlálása olyan számlálást használ, amely elősegíti a feladat sokszoros megszerzését vagy kiadását.
- 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.
- A Várakozás művelet segít a feladatok kritikus szakaszba történő belépésének ellenőrzésében
- A szemafor műveletet a feladat kilépésének vezérléséhez használják egy kritikus szakaszból
- A szemafor számlálásának nincs kölcsönös kizárása, míg a bináris szemafornak kölcsönös kizárása van
- A szemafor egy jelző mechanizmust jelent, míg a Mutex egy reteszelő mechanizmus
- A szemafor egynél több szál számára teszi lehetővé a kritikus szakasz elérését
- A szemafor egyik legnagyobb korlátja a prioritás inverziója.