Mi az a szemafor? Bináris, számláló típusok példával

Tartalomjegyzék:

Anonim

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.