Co je to Semaphore? Počítání, binární typy s příkladem

Co je to Semaphore?

Semaphore je jednoduše proměnná, která je nezáporná a sdílená mezi vlákny. Semafor je signalizační mechanismus a vlákno, které čeká na semafor, může být signalizováno jiným vláknem. Používá dvě atomické operace, 1) Počkejte a 2) Signal pro synchronizaci procesu.

Semafor buď povolí, nebo zakáže přístup ke zdroji, což závisí na tom, jak je nastaven.

Charakteristické pro Semaphore

Zde jsou charakteristické znaky semaforu:

  • Je to mechanismus, který lze použít k zajištění synchronizace úkolů.
  • Jedná se o nízkoúrovňový synchronizační mechanismus.
  • Semaphore bude vždy obsahovat nezápornou celočíselnou hodnotu.
  • Semaphore lze implementovat pomocí testovacích operací a přerušení, které by měly být prováděny pomocí deskriptorů souborů.

Druhy Semaphores

Dva běžné druhy semaforů jsou

  • Počítání semaforů
  • Binární semafory.

Počítací Semaphores

Tento typ Semaphore používá počet, který pomáhá úkolu získat nebo uvolnit mnohokrát. Pokud je počáteční počet = 0, měl by být počítací semafor vytvořen v nedostupném stavu.

Počítací Semaphores
Počítací Semaphores

Pokud je však počet > 0, semafor se vytvoří v dostupném stavu a počet tokenů, které má, se rovná jeho počtu.

Dvojitý Semaphores

Binární semafory jsou velmi podobné počítacím semaforům, ale jejich hodnota je omezena na 0 a 1. V tomto typu semaforu operace čekání funguje pouze v případě, že semafor = 1, a operace signálu je úspěšná, když semafor = 0. Je snadné implementovat než počítání semaforů.

Dvojitý Semaphores

Dvojitý Semaphores

Příklad Semaphore

Níže uvedený program je implementací krok za krokem, která zahrnuje použití a deklaraci semaforu.

Shared var mutex: semaphore = 1;
Process i
    begin
    .
    .
    P(mutex);
    execute CS;
    V(mutex);
    .
    .
    End;

Počkejte a Signal Operav Semaphores

Obě tyto operace se používají k implementaci synchronizace procesu. Cílem této semaforové operace je dosáhnout vzájemného vyloučení.

Čekat na Operavání

Tento typ semaforové operace vám pomáhá řídit vstup úlohy do kritické sekce. Pokud je však hodnota wait kladná, hodnota argumentu čekání X se sníží. V případě záporné nebo nulové hodnoty se neprovede žádná operace. Nazývá se také operace P(S).

Po snížení hodnoty semaforu, která se stane zápornou, je příkaz podržen, dokud nejsou splněny požadované podmínky.

Copy CodeP(S)
{ 
    while (S<=0);
    S--;
}

Signal operace

Tento typ Semaphore operace se používá k řízení ukončení úlohy z kritické sekce. Pomáhá zvýšit hodnotu argumentu o 1, což je označeno jako V(S).

Copy CodeP(S)
{ 
    while (S>=0);
    S++;
}

Počítací Semaphore vs. binární Semaphore

Zde jsou některé hlavní rozdíly mezi počítáním a binárním semaforem:

Počítací Semaphore Dvojitý Semaphore
Žádné vzájemné vyloučení Vzájemné vyloučení
Jakákoli celočíselná hodnota Hodnota pouze 0 a 1
Více než jeden slot Pouze jeden slot
Poskytněte sadu procesů Má mechanismus vzájemného vyloučení.

Rozdíl mezi Semaphore vs. Mutex

parametry Semaphore Mutex
Mechanismus Je to druh signalizačního mechanismu. Jedná se o uzamykací mechanismus.
Datový typ Semaphore je celočíselná proměnná. Mutex je jen objekt.
Změna Operace čekání a signálu mohou upravit semafor. Je modifikován pouze procesem, který může požadovat nebo uvolnit zdroj.
Řízení zdrojů Pokud není volný žádný prostředek, pak proces vyžaduje prostředek, který by měl provést operaci čekání. Mělo by počkat, až bude počet semaforu větší než 0. Pokud je uzamčen, proces musí počkat. Proces by měl být držen ve frontě. K tomu je potřeba přistupovat pouze tehdy, když je mutex odemčený.
Vlákno Můžete mít více programových vláken. V mutexu můžete mít více programových vláken, ale ne současně.
Vlastnictví Hodnotu lze změnit jakýmkoli procesem, který zdroj uvolní nebo získá. Zámek objektu uvolní pouze proces, který na něj zámek získal.
Typ nemovitosti Druhy Semaphore počítají semafor a binární semafor a Mutex nemá žádné podtypy.
Operavání Semaphore hodnota se upraví pomocí operace čekání () a signálu (). Objekt Mutex je uzamčen nebo odemčen.
Obsazenost zdrojů Je obsazen, pokud jsou využívány všechny zdroje a proces požadující zdroj provede operaci čekání () a zablokuje se, dokud počet semaforů nebude >1. V případě, že je objekt již zamčený, proces požadující prostředky čeká a je systémem zařazen do fronty, než se zámek uvolní.

výhody Semaphores

Zde jsou výhody/výhody použití Semaphore:

  • Umožňuje více než jednomu vláknu přístup ke kritické sekci
  • Semaphores jsou na stroji nezávislé.
  • Semaphores jsou implementovány ve strojově nezávislém kódu mikrokernelu.
  • Neumožňují více procesům vstoupit do kritické sekce.
  • Vzhledem k rušnému čekání v semaforu nedochází ke ztrátě času a zdrojů procesu.
  • Jsou strojově nezávislé, což by mělo být spuštěno ve strojově nezávislém kódu mikrokernelu.
  • Umožňují flexibilní řízení zdrojů.

Nevýhoda semaforů

Zde jsou nevýhody/nevýhody semaforu

  • Jedním z největších omezení semaforu je inverze priority.
  • Operační systém musí sledovat všechna volání na počkání a signalizovat semafor.
  • Jejich použití není nikdy vynuceno, ale je to pouze konvence.
  • Abyste se vyhnuli uváznutí v semaforu, použijte funkci Wait and Signal operace musí být provedeny ve správném pořadí.
  • Semaphore programování je složité, takže existuje šance, že nedosáhneme vzájemného vyloučení.
  • Není to také praktická metoda pro použití ve velkém měřítku, protože jejich použití vede ke ztrátě modularity.
  • Semaphore je náchylnější k chybě programátora.
  • To může způsobit zablokování nebo porušení vzájemného vyloučení z důvodu chyby programátora.

Shrnutí

  • Semaphore je definována jako proměnná, která je nezáporná a sdílená mezi vlákny.
  • Je to mechanismus, který lze použít k zajištění synchronizace úkolů.
  • Počítací semafor používá počet, který pomáhá úkolu získat nebo uvolnit mnohokrát.
  • Binární semafory jsou velmi podobné počítacím semaforům, ale jejich hodnota je omezena na 0 a 1.
  • Operace čekání vám pomáhá řídit vstup úlohy do kritické sekce
  • Signal semaforová operace se používá k řízení opuštění úlohy z kritické sekce
  • Počítací Semaphore nemá vzájemné vyloučení, zatímco binární Semaphore má Vzájemné vyloučení
  • Semaphore znamená signalizační mechanismus, zatímco Mutex je uzamykací mechanismus
  • Semaphore umožňuje více než jednomu vláknu přístup ke kritické sekci
  • Jedním z největších omezení semaforu je inverze priority.