Što je Semaphore? Brojanje, binarne vrste s primjerom

Što je Semaphore?

Semaphore je jednostavno varijabla koja nije negativna i dijeli se između niti. Semafor je signalni mehanizam, a nit koja čeka na semaforu može biti signalizirana drugom niti. Koristi dvije atomske operacije, 1) čekanje i 2) Signal za sinkronizaciju procesa.

Semafor dopušta ili ne dopušta pristup resursu, što ovisi o tome kako je postavljen.

Karakteristično za Semaphore

Ovdje su karakteristike semafora:

  • To je mehanizam koji se može koristiti za sinkronizaciju zadataka.
  • To je mehanizam sinkronizacije niske razine.
  • Semaphore uvijek će imati nenegativnu vrijednost cijelog broja.
  • Semaphore može se implementirati pomoću testnih operacija i prekida, koji se trebaju izvršiti pomoću deskriptora datoteka.

Vrste Semaphores

Dvije uobičajene vrste semafora su

  • Brojanje semafora
  • Binarni semafori.

Računajući Semaphores

Ova vrsta Semaphore koristi brojanje koji pomaže da se zadatak dobije ili otpusti više puta. Ako je početni broj = 0, semafor za brojanje trebao bi biti kreiran u nedostupnom stanju.

Računajući Semaphores
Računajući Semaphores

Međutim, ako je broj > 0, semafor se stvara u dostupnom stanju, a broj tokena koji ima jednak je njegovom broju.

Binarni Semaphores

Binarni semafori prilično su slični semaforima za brojanje, ali njihova vrijednost je ograničena na 0 i 1. U ovoj vrsti semafora, operacija čekanja radi samo ako je semafor = 1, a operacija signala uspijeva kada je semafor = 0. Lako je implementirati nego brojanje semafora.

Binarni Semaphores

Binarni Semaphores

Primjer Semaphore

Dolje navedeni program je implementacija korak po korak, koja uključuje korištenje i deklaraciju semafora.

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

Čekaj i Signal Operacije u Semaphores

Obje ove operacije koriste se za implementaciju sinkronizacija procesa. Cilj ove operacije semafora je postići međusobno isključivanje.

Čekati OperaANJE

Ova vrsta operacije semafora pomaže vam kontrolirati unos zadatka u kritični odjeljak. Međutim, ako je vrijednost čekanja pozitivna, tada se vrijednost argumenta čekanja X smanjuje. U slučaju negativne ili nulte vrijednosti, operacija se ne izvršava. Također se naziva P(S) operacija.

Nakon što se smanji vrijednost semafora, koja postane negativna, naredba se zadržava dok se ne zadovolje traženi uvjeti.

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

Signal operacija

Ova vrsta Semaphore operacija se koristi za kontrolu izlaza zadatka iz kritičnog odjeljka. Pomaže povećati vrijednost argumenta za 1, što je označeno kao V(S).

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

Računajući Semaphore u odnosu na binarno Semaphore

Evo nekoliko glavnih razlika između brojanja i binarnog semafora:

Računajući Semaphore Binarni Semaphore
Nema međusobnog isključivanja Međusobno isključivanje
Bilo koja cjelobrojna vrijednost Vrijednost samo 0 i 1
Više od jednog utora Samo jedan utor
Osigurajte skup procesa Ima mehanizam međusobnog isključivanja.

Razlika između Semaphore protiv Mutexa

Parametri Semaphore muteksi
Mehanizam To je vrsta signalnog mehanizma. To je mehanizam za zaključavanje.
Tip podataka Semaphore je cjelobrojna varijabla. Mutex je samo objekt.
Modifikacija Operacije čekanja i signala mogu modificirati semafor. Modificira ga samo proces koji može zatražiti ili osloboditi resurs.
Upravljanje resursima Ako nijedan resurs nije slobodan, tada proces zahtijeva resurs koji bi trebao izvršiti operaciju čekanja. Treba pričekati dok broj semafora ne bude veći od 0. Ako je zaključan, proces mora pričekati. Proces treba držati u redu čekanja. Tome je potrebno pristupiti samo kada je mutex otključan.
Nit Možete imati više programskih niti. Možete imati više programskih niti u mutexu, ali ne istovremeno.
Svojina Vrijednost se može promijeniti bilo kojim procesom koji oslobađa ili dobiva resurs. Zaključavanje objekta oslobađa samo proces koji ga je zaključao.
Tipovi Vrste Semaphore računaju semafor i binarni semafor i Mutex nema podtipova.
OperaANJE Semaphore vrijednost se mijenja pomoću operacije čekanja () i signala (). Mutex objekt je zaključan ili otključan.
Zauzetost resursa Zauzet je ako se svi resursi koriste i proces koji zahtijeva resurs izvodi operaciju čekanja () i blokira se dok broj semafora ne postane >1. U slučaju da je objekt već zaključan, proces koji zahtijeva resurse čeka i sustav ga stavlja u red čekanja prije otpuštanja zaključavanja.

Prednosti Semaphores

Ovdje su prednosti/prednosti korištenja Semaphore:

  • Omogućuje više od jedne niti da pristupi kritičnom odjeljku
  • Semaphores su neovisni o stroju.
  • Semaphoreimplementirani su u strojno neovisan kod mikrojezgre.
  • Ne dopuštaju da više procesa uđe u kritični odjeljak.
  • Budući da u semaforu postoji puno čekanja, nikada nema gubitka vremena i resursa procesa.
  • Oni su neovisni o stroju, što bi se trebalo izvoditi u kodu mikrojezgre neovisnom o stroju.
  • Omogućuju fleksibilno upravljanje resursima.

Nedostatak semafora

Ovdje su mane/mane semafora

  • Jedno od najvećih ograničenja semafora je inverzija prioriteta.
  • Operativni sustav mora pratiti sve pozive na čekanje i signalizirati semafor.
  • Njihovo korištenje nikada nije nametnuto, već samo prema konvenciji.
  • Kako bi se izbjegli zastoji u semaforu, Wait and Signal operacije zahtijevaju da budu izvršene ispravnim redoslijedom.
  • Semaphore programiranje je komplicirano, pa postoje šanse da se ne postigne međusobno isključivanje.
  • To također nije praktična metoda za široku upotrebu jer njihova upotreba dovodi do gubitka modularnosti.
  • Semaphore sklonija je greškama programera.
  • Može uzrokovati zastoj ili kršenje međusobnog isključivanja zbog pogreške programera.

Rezime

  • Semaphore je definirana kao varijabla koja nije negativna i dijeli se između niti.
  • To je mehanizam koji se može koristiti za sinkronizaciju zadataka.
  • Semafor za brojanje koristi brojanje koje pomaže da se zadatak dobije ili otpusti više puta.
  • Binarni semafori prilično su slični semaforima za brojanje, ali njihova je vrijednost ograničena na 0 i 1.
  • Operacija čekanja pomaže vam kontrolirati unos zadatka u kritični odjeljak
  • Signal operacija semafora koristi se za kontrolu izlaska zadatka iz kritičnog odjeljka
  • Računajući Semaphore nema međusobnog isključivanja dok binarno Semaphore ima međusobno isključivanje
  • Semaphore znači signalni mehanizam dok je Mutex mehanizam za zaključavanje
  • Semaphore omogućuje više od jedne niti da pristupi kritičnom odjeljku
  • Jedno od najvećih ograničenja semafora je inverzija prioriteta.