Preporučeno, 2020

Izbor Urednika

Razlika između semafora i mutexa

Sinkronizacija procesa igra važnu ulogu u održavanju konzistentnosti dijeljenih podataka. I softverska i hardverska rješenja prisutna su za rješavanje problema s kritičnim dijelovima. Ali hardverska rješenja za problem kritičnih dijelova je vrlo teško implementirati. U današnjem članku, raspravit ćemo dva rješenja temeljena na softveru za rješavanje problema kritičnih dijelova, npr. Semaphore i Mutex.

Osnovna razlika između semafora i mutexa je da je semafor mehanizam signalizacije, tj. Procesi koji izvode čekanje () i signal () operaciju kako bi se pokazalo da li dobivaju ili oslobađaju resurs, dok je Mutex mehanizam zaključavanja, proces mora dobiti zaključavanje mutex objekt ako želi steći resurs. Postoji još nekoliko razlika između semafora i mutexa, raspravimo ih uz pomoć usporednog dijagrama prikazanog u nastavku.

Tablica usporedbe

Osnova za usporedbuSemaformutex
Osnovni, temeljniSemaphore je signalni mehanizam.Mutex je mehanizam za zaključavanje.
PostojanjeSemaphore je cjelobrojna varijabla.Mutex je objekt.
FunkcijaSemaphore dopuštaju višestrukim programskim nitima pristup ograničenom primjerku resursa.Mutex omogućuje višestrukim programskim nitima pristup jednom resursu, ali ne istovremeno.
VlasništvoVrijednost semafora može se promijeniti bilo kojim procesom koji prikuplja ili oslobađa resurs.Mutex zaključavanje objekta oslobađa se samo procesom koji je na njemu dobio zaključavanje.
kategorizacijaSemaphore se može kategorizirati u semafor i binarni semafor.Mutex nije dalje kategoriziran.
operacijaVrijednost semafora se mijenja pomoću operacije čekanja () i signala ().Mutex objekt je zaključan ili otključan procesom koji zahtijeva ili oslobađa resurs.
Resursi zauzetiAko se koriste svi resursi, proces koji traži resurs izvršava operaciju čekanja () i blokira se dok brojanje semafora postane veće od jednog.Ako je mutex objekt već zaključan, proces koji zahtijeva resurse čeka sustav i stavlja se u red čekanja od sustava dok se ne otključa.

Definicija semafora

Semaphore je alat za sinkronizaciju procesa. Semaphore je tipično cjelobrojna varijabla S koja se inicijalizira na broj resursa prisutnih u sustavu, a vrijednost semafora može se mijenjati samo s dvije funkcije wait () i signalom () osim inicijalizacije.

Operacija wait () i signal () modificiraju vrijednost semafora nedjeljivo . To znači da kada proces modificira vrijednost semafora, niti jedan drugi proces ne može istodobno mijenjati vrijednost semafora. Semaphore se razlikuju po operacijskom sustavu u dvije kategorije: Brojanje semafora i Binarni semafor .

Kod prebrojavanja semafore, semafor S vrijednost se inicijalizira na broj resursa prisutnih u sustavu. Kad god proces želi pristupiti resursu, on izvršava operaciju čekanja () na semaforu i smanjuje vrijednost semafora za jedan. Kada oslobodi resurs, on izvodi signal () operaciju na semafor i povećava vrijednost semafora za jedan. Kada brojanje semafora ide na 0, to znači da su svi resursi zauzeti procesima. Ako proces mora koristiti resurs kada je broj semafora 0, on izvršava wait () i blokira se dok vrijednost semafora ne postane veća od 0.

U binarnom semaforu vrijednost semafora kreće se između 0 i 1 . Sličan je mutex bravi, ali mutex je mehanizam za zaključavanje, dok je semafor mehanizam za signalizaciju. U binarnom semaforu, ako proces želi pristupiti resursu, izvršava operaciju čekanja () na semaforu i smanjuje vrijednost semafora s 1 na 0. Kada oslobodi resurs, on izvodi signal () operaciju na semaforu i povećava. svoju vrijednost na 1. Ako je vrijednost semafora 0 i proces želi pristupiti resursu, on izvodi operaciju čekanja () i blokira se do trenutnog procesa koji koristi resurse.

Definicija Mutexa

Objekt uzajamnog isključivanja kratko se naziva Mutex. Iz pojma uzajamnog isključivanja možemo razumjeti da samo jedan proces može pristupiti danom resursu. Mutex objekt omogućuje višestrukim programskim nitima da koriste isti resurs, ali ne istovremeno.

Kada program pokrene, zatražite od sustava da stvori mutex objekt za određeni resurs. Sustav kreira mutex objekt s jedinstvenim imenom ili ID-om. Kad god programska nit želi koristiti resurs koji zauzima zaključavanjem na mutex objektu, koristi resurs i nakon upotrebe, oslobađa zaključavanje na mutex objektu. Zatim je sljedećem procesu dopušteno dobiti zaključavanje na mutex objektu.

U međuvremenu, proces je stekao zaključavanje na mutex objektu koji nijedan drugi nit / proces ne može pristupiti tom resursu. Ako je mutex objekt već zaključan, proces koji želi steći zaključavanje na mutex objektu mora čekati, a sustav ga čeka u redu dok se mutex objekt ne otključa.

Ključne razlike između semafora i mutexa

  1. Semaphore je signalni mehanizam kao operacija čekanja () i signala () koja se izvodi na varijabli semafora i označava je li proces stjecanje resursa ili oslobađanje resursa. S druge strane, mutex je mehanizam zaključavanja, kako bi se dobio resurs, proces mora zaključati mutex objekt i dok oslobađa proces resursa mora otključati mutex objekt.
  2. Semaphore je obično cjelobrojna varijabla, dok je mutex objekt .
  3. Semaphore omogućuje višestrukim programskim nitima pristup konačnom primjerku resursa . S druge strane, Mutex omogućuje višestrukim programskim nitima pristup jednom zajedničkom resursu, ali jedan po jedan.
  4. Vrijednost varijable semafora može se modificirati bilo kojim procesom koji prikuplja ili oslobađa resurs izvodeći operaciju čekanja () i signala (). S druge strane, zaključavanje stečeno na mutex objektu može se osloboditi samo procesom koji je dobio blokadu na mutex objektu.
  5. Semaphore su dva tipa, brojeći semafor i binarni semafor koji je prilično sličan mutexu.
  6. Vrijednost varijable semafora se mijenja pomoću operacije čekanja () i signala (), osim inicijalizacije. Međutim, objekt prigušenja je zaključan ili otključan procesom koji prikuplja ili oslobađa resurs.
  7. Ako su svi resursi dobiveni procesom, a nijedan resurs nije slobodan, proces koji želi dobiti operaciju čekanja () na varijablu semafora i blokira se sve dok broj semafora ne postane veći od 0. Ali ako je mutex objekt već zaključan, a proces koji želi steći resurs čeka i dobiva čekanje u redu od sustava dok se resurs ne oslobodi i mutex objekt se otključa.

Zaključak:

Semaphore je bolja opcija u slučaju da postoji više primjera dostupnih resursa. U slučaju jednog dijeljenog resursa mutex je bolji izbor.

Top