Čo je Semafor? Binárne, typy počítania s príkladom

Obsah:

Anonim

Čo je Semafor?

Semafor je jednoducho premenná, ktorá nie je negatívna a je zdieľaná medzi vláknami. Semafor je signalizačný mechanizmus a vlákno, ktoré čaká na semafore, môže byť signalizované iným vláknom. Využíva dve atómové operácie, 1) čakací a 2) signál na synchronizáciu procesu.

Semafor buď povoľuje, alebo zakazuje prístup k prostriedku, čo závisí od spôsobu jeho nastavenia.

V tejto príručke k operačnému systému (OS) sa dozviete:

  • Charakteristické pre Semafor
  • Čo je Semafor?
  • Druhy semaforov
  • Ukážka semaforu
  • Čakanie a operácie so signálmi v semaforoch
  • Počítanie semafor vs. binárny semafor
  • Rozdiel medzi Semaforom a Mutexom
  • Výhody semaforov
  • Nevýhoda semaforov

Charakteristické pre Semafor

Tu sú charakteristické vlastnosti semaforu:

  • Je to mechanizmus, ktorý možno použiť na zabezpečenie synchronizácie úloh.
  • Je to synchronizačný mechanizmus na nízkej úrovni.
  • Semafor bude vždy obsahovať nezápornú celočíselnú hodnotu.
  • Semafor je možné implementovať pomocou testovacích operácií a prerušení, ktoré by sa mali vykonať pomocou deskriptorov súborov.

Druhy semaforov

Dva bežné druhy semaforov sú

  • Počítanie semaforov
  • Binárne semafory.

Počítanie semaforov

Tento typ semaforu používa počet, ktorý pomáha pri získaní alebo vydaní úlohy viackrát. Ak je počiatočný počet = 0, počítací semafor by sa mal vytvoriť v nedostupnom stave.

Ak je však počet> 0, semafor sa vytvorí v dostupnom stave a počet jeho tokenov sa rovná jeho počtu.

Binárne semafory

Binárne semafory sú dosť podobné počítaniu semaforov, ale ich hodnota je obmedzená na 0 a 1. V tomto type semaforu operácia čakania funguje, iba ak semafor = 1, a operácia signálu bude úspešná, keď semafor = 0. Je ľahké implementovať ako počítať semafory.

Ukážka semaforu

Nižšie uvedený program predstavuje implementáciu krok za krokom, ktorá zahŕňa použitie a deklaráciu semaforu.

Shared var mutex: semaphore = 1;Process ibegin… P(mutex);execute CS;V(mutex);… End;

Čakanie a operácie so signálmi v semaforoch

Obe tieto operácie sa používajú na implementáciu synchronizácie procesov. Cieľom tejto semaforovej operácie je získať vzájomné vylúčenie.

Počkajte na operáciu

Tento typ semaforovej operácie vám pomáha kontrolovať zadanie úlohy do kritickej sekcie. Ak je však hodnota čakania kladná, potom sa hodnota argumentu čakania X zníži. V prípade zápornej alebo nulovej hodnoty sa nevykoná žiadna operácia. Nazýva sa tiež P (S) prevádzka.

Po znížení hodnoty semaforu, ktorá sa stane zápornou, sa príkaz podrží, kým nie sú splnené požadované podmienky.

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

Prevádzka signálu

Tento typ operácie Semafor sa používa na riadenie ukončenia úlohy z kritického úseku. Pomáha zvýšiť hodnotu argumentu o 1, ktorá sa označuje ako V (S).

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

Počítanie semafor vs. binárny semafor

Tu sú niektoré hlavné rozdiely medzi počítaním a binárnym semaforom:

Počítam semafor Binárny semafor
Žiadne vzájomné vylúčenie Vzájomné vylúčenie
Ľubovoľná celočíselná hodnota Hodnota iba 0 a 1
Viac ako jeden slot Iba jeden slot
Poskytnite súbor procesov Má mechanizmus vzájomného vylúčenia.

Rozdiel medzi Semaforom a Mutexom

Parametre Semafor Mutex
Mechanizmus Je to druh signalizačného mechanizmu. Je to uzamykací mechanizmus.
Dátový typ Semafor je celočíselná premenná. Mutex je iba objekt.
Úprava Operácie čakania a signálu môžu upraviť semafor. Je upravený iba procesom, ktorý môže požadovať alebo uvoľniť zdroj.
Riadenie zdrojov Ak žiadny zdroj nie je zadarmo, potom proces vyžaduje zdroj, ktorý by mal vykonať čakaciu operáciu. Mal by počkať, kým počet semaforov nebude väčší ako 0. Ak je zamknutá, proces musí čakať. Tento proces by mal byť vedený v rade. K tomuto je potrebné pristupovať, len keď je odomknutý mutex.
Závit Môžete mať viac vlákien programu. V mutexe môžete mať viac vlákien programu, ale nie súčasne.
Vlastníctvo Hodnotu je možné zmeniť akýmkoľvek procesom, ktorý uvoľní alebo získa zdroj. Zámok objektu sa uvoľní iba procesom, ktorý získal zámok na ňom.
Typy Typy semaforu sú počítanie semaforov a binárnych semaforov a Mutex nemá žiadne podtypy.
Prevádzka Hodnota semaforu sa upravuje pomocou čakania () a signálu (). Objekt Mutex je zamknutý alebo odomknutý.
Obsadenosť zdrojov Obsadí sa, ak sa používajú všetky zdroje a proces požadujúci zdroj vykoná operáciu wait () a sám sa zablokuje, kým sa počet semaforov nestane> 1. V prípade, že je objekt už uzamknutý, proces požadujúci prostriedky čaká a je v systéme zaradený do fronty pred uvoľnením zámku.

Výhody semaforov

Tu sú výhody a výhody použitia Semaphore:

  • Umožňuje viac ako jednému vláknu prístup do kritickej sekcie
  • Semafory sú nezávislé od strojov.
  • Semafory sú implementované do strojovo nezávislého kódu mikrojadra.
  • Nedovolia viacerým procesom vstúpiť do kritickej sekcie.
  • Pretože v semafore je veľa práce s čakaním, nikdy nedochádza k plytvaniu procesným časom a prostriedkami.
  • Sú nezávislé od stroja, ktoré by sa mali spúšťať v strojovo nezávislom kóde mikrojadra.
  • Umožňujú flexibilné riadenie zdrojov.

Nevýhoda semaforov

Tu sú nevýhody / nevýhody semaforu

  • Jedným z najväčších obmedzení semaforu je prioritná inverzia.
  • Operačný systém musí sledovať všetky hovory, aby čakal a signalizoval semafor.
  • Ich použitie sa nikdy nevynucuje, ale je to len na základe konvencie.
  • Aby sa zabránilo zablokovaniu v semafore, je potrebné vykonať operácie Wait a Signal v správnom poradí.
  • Programovanie semaforov je komplikované, takže existuje šanca, že sa nedosiahne vzájomné vylúčenie.
  • Nie je to ani praktická metóda pre veľké použitie, pretože ich použitie vedie k strate modularity.
  • Semafor je náchylnejší na chyby programátora.
  • Môže to spôsobiť zablokovanie alebo porušenie vzájomného vylúčenia v dôsledku chyby programátora.

Zhrnutie:

  • Semafor je definovaný ako premenná, ktorá nie je negatívna a je zdieľaná medzi vláknami.
  • Je to mechanizmus, ktorý možno použiť na zabezpečenie synchronizácie úloh.
  • Počítací semafor používa počet, ktorý pomáha pri získaní alebo vydaní úlohy viackrát.
  • Binárne semafory sú dosť podobné počítaniu semaforov, ale ich hodnota je obmedzená na 0 a 1.
  • Operácia Wait vám pomôže riadiť zadanie úlohy do kritickej časti
  • Operácia semaforu signálu sa používa na riadenie ukončenia úlohy z kritického úseku
  • Počítanie semaforu nemá žiadne vzájomné vylúčenie, zatiaľ čo binárny semafor nemá vzájomné vylúčenie
  • Semafor znamená signalizačný mechanizmus, zatiaľ čo Mutex je uzamykací mechanizmus
  • Semafor umožňuje viac ako jednému vláknu prístup do kritickej sekcie
  • Jedným z najväčších obmedzení semaforu je prioritná inverzia.