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