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.

Számolás Semaphores
Számolás Semaphores

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.

Kétkomponensű Semaphores

Kétkomponensű Semaphores

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ó.