Što je Semafor? Binarno, brojanje vrsta s primjerom

Sadržaj:

Anonim

Što je Semafor?

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

Semafor omogućuje ili onemogućava pristup resursu, što ovisi o načinu postavljanja.

U ovom vodiču za operativni sustav (OS) naučit ćete:

  • Karakteristično za Semafor
  • Što je Semafor?
  • Vrste semafora
  • Primjer semafora
  • Operacije čekanja i signala u semaforima
  • Brojanje semafora naspram binarnog semafora
  • Razlika između Semaphora i Mutexa
  • Prednosti semafora
  • Nedostatak semafora

Karakteristično za Semafor

Ovdje su karakteristične za semafor:

  • To je mehanizam koji se može koristiti za sinkronizaciju zadataka.
  • To je mehanizam za sinkronizaciju na niskoj razini.
  • Semafor će uvijek imati negativnu cijelu vrijednost.
  • Semafor se može implementirati pomoću testnih operacija i prekida, koji bi se trebali izvršiti pomoću deskriptora datoteka.

Vrste semafora

Dvije su uobičajene vrste semafora

  • Brojanje semafora
  • Binarni semafori.

Brojanje semafora

Ova vrsta Semaphore koristi count koji pomaže da se zadatak nabavi ili oslobodi mnogo puta. Ako je početno brojanje = 0, semafor za brojanje treba stvoriti u nedostupnom stanju.

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

Binarni semafori

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

Primjer semafora

Sljedeći program je korak po korak implementacija, koja uključuje upotrebu i deklaraciju semafora.

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

Operacije čekanja i signala u semaforima

Obje ove operacije koriste se za provedbu sinkronizacije procesa. Cilj ove operacije semafora je postići međusobno isključenje.

Pričekajte operaciju

Ova vrsta operacije semafora pomaže vam da kontrolirate ulazak 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, ne izvršava se nijedna operacija. Naziva se i P (S) operacija.

Nakon smanjenja vrijednosti semafora, koja postaje negativna, naredba se zadržava dok se ne zadovolje potrebni uvjeti.

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

Signalna operacija

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

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

Brojanje semafora naspram binarnog semafora

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

Brojeći Semafor Binarni semafor
Nema međusobnog isključivanja Međusobno isključivanje
Bilo koja cjelobrojna vrijednost Vrijednost samo 0 i 1
Više utora Samo jedan utor
Navedite skup procesa Ima mehanizam uzajamnog isključivanja.

Razlika između Semaphora i Mutexa

Parametri Semafor Mutex
Mehanizam To je vrsta signalnog mehanizma. To je mehanizam za zaključavanje.
Vrsta podataka Semafor je cjelobrojna varijabla. Mutex je samo objekt.
Izmjena Operacije čekanja i signala mogu modificirati semafor. Izmijenjen je samo postupkom koji može zatražiti ili objaviti resurs.
Upravljanje resursima Ako nijedan resurs nije besplatan, tada postupak 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, postupak mora pričekati. Postupak treba držati u redu čekanja. Ovome treba pristupiti samo kad je mutex otključan.
Nit Možete imati više programskih niti. U mutexu možete imati više programskih niti, ali ne istovremeno.
Vlasništvo Vrijednost se može promijeniti bilo kojim postupkom puštanja ili dobivanja resursa. Zaključavanje objekta oslobađa se samo onim postupkom koji je na njemu dobio zaključavanje.
Vrste Vrste semafora broje semafor i binarni semafor i Mutex nema podtipove.
Operacija Vrijednost semafora mijenja se pomoću rada wait () i signal (). Mutex objekt je zaključan ili otključan.
Zauzetost resursa Zauzet je ako se koriste svi resursi, a postupak koji zahtijeva resurs izvodi operaciju wait () i blokira se dok broj semafora ne postane> 1. U slučaju da je objekt već zaključan, postupak koji zahtijeva resurse čeka i sustav ga stavlja u red prije puštanja zaključavanja.

Prednosti semafora

Evo prednosti / prednosti upotrebe Semaphore:

  • Omogućuje više od jedne niti da pristupi kritičnom odjeljku
  • Semafori su neovisni o stroju.
  • Semafori su implementirani u strojno neovisni kod mikrozrcala.
  • Ne dopuštaju ulazak višestrukih procesa u kritični odjeljak.
  • Budući da je u semaforu zauzeto čekanje, nikad se ne gubi vrijeme i resursi procesa.
  • Oni su neovisni o stroju, a trebali bi se izvoditi u strojno neovisnom kodu mikrozrcala.
  • Omogućuju fleksibilno upravljanje resursima.

Nedostatak semafora

Evo kontra / nedostataka semafora

  • Jedno od najvećih ograničenja semafora je inverzija prioriteta.
  • Operativni sustav mora pratiti sve pozive na čekanje i signalizirati semafor.
  • Njihova se upotreba nikad ne provodi, već samo po dogovoru.
  • Da bi se izbjegle mrtve točke u semaforu, operacije čekanja i signala moraju se izvršiti ispravnim redoslijedom.
  • Programiranje semafora složeno je, pa postoje šanse da se ne postigne međusobno isključivanje.
  • To također nije praktična metoda za široku upotrebu, jer njihova uporaba dovodi do gubitka modularnosti.
  • Semafor je skloniji pogreškama programera.
  • To može uzrokovati zastoj ili kršenje međusobnog isključivanja zbog pogreške programera.

Sažetak:

  • Semafor je definiran kao varijabla koja je negativna i dijeli se između niti.
  • To je mehanizam koji se može koristiti za sinkronizaciju zadataka.
  • Brojanje semafora koristi brojač koji pomaže da se zadatak nabavi ili oslobodi mnogo puta.
  • Binarni semafori prilično su slični brojanju semafora, ali njihova je vrijednost ograničena na 0 i 1.
  • Operacija čekanja pomaže vam da kontrolirate ulazak zadatka u kritični odjeljak
  • Operacija signalnog semafora koristi se za kontrolu izlaska iz zadatka iz kritičnog odjeljka
  • Brojanje Semafora nema međusobnog izuzimanja, dok Binarni Semafor ima međusobno izuzeće
  • Semafor znači signalni mehanizam, dok je Mutex mehanizam zaključavanja
  • Semaphore omogućuje više od jedne niti da pristupi kritičnom odjeljku
  • Jedno od najvećih ograničenja semafora je inverzija prioriteta.