Mutex vs Semaphore: Koja je razlika?

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 naučit ćete:

  • Što je Mutex?
  • Upotreba Semaphora
  • Upotreba Mutexa
  • Razlika između Semaphora i Mutexa
  • Uobičajene zablude o muteksu i semaforu
  • Prednosti Semaphora
  • Prednosti Mutexa
  • Nedostatak semafora
  • Mane Mutexa

Što je Mutex?

Puni oblik Mutexa je objekt uzajamnog isključivanja. To je posebna vrsta binarnog semafora koja se koristi za kontrolu pristupa zajedničkom resursu. Uključuje mehanizam prioritetnog nasljeđivanja kako bi se izbjegli problemi proširene prioritete inverzije. Omogućuje zadržavanje trenutnih zadataka višeg prioriteta u blokiranom stanju najkraće moguće vrijeme. Međutim, nasljeđivanje prioriteta ne ispravlja inverziju prioriteta, već samo minimalizira njezin učinak.

KLJUČNA RAZLIKA

  • Mutex je mehanizam zaključavanja, dok je Semafor signalni mehanizam
  • Mutex je samo objekt dok je Semafor cjelobrojni
  • Mutex nema podtip, dok Semafor ima dva tipa, koji broje semafor i binarni semafor.
  • Semaphore podržava modificiranje operacija čekanja i signala, dok je Mutex modificiran samo postupkom koji može zatražiti ili objaviti resurs.
  • Vrijednost semafora modificira se pomoću operacija wait () i signal (), s druge strane, Mutex operacije su zaključane ili otključane.

Upotreba Semaphora

U slučaju jednog međuspremnika, možemo razdvojiti međuspremnik od 4 KB u četiri međuspremnika od 1 KB. S ove četiri me uspremnike može se povezati semafor. To omogućava korisnicima i proizvođačima da istovremeno rade na različitim međuspremnicima.

Upotreba Mutexa

Mutex osigurava međusobno isključivanje, koji može biti proizvođač ili potrošač koji može imati ključ (mutex) i nastaviti sa svojim radom. Sve dok proizvođač ispunjava međuspremnik, korisnik mora čekati i obrnuto. U Mutex locku cijelo vrijeme samo jedna nit može raditi s cijelim međuspremnikom.

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

Uobičajene činjenice o muteksu i semaforu

Evo nekoliko uobičajenih činjenica o Muteksu i Semaforu:

  • Samo jedan zadatak može dobiti mutex. Dakle, postoji vlasništvo povezano s muteksom, a samo vlasnik može osloboditi muteks.
  • Razlozi za upotrebu mutexa i semafora su različiti, možda bi se zbog sličnosti u njihovoj provedbi mutex nazivao binarni semafor.
  • Jedna vrlo poznata zabluda je da su muteksi i semafori gotovo isti, s jedinom razlikom što je muteks sposoban brojati do 1, dok se semafori mogu brojati od 0 do N.
  • Između binarnog semafora i mutexa uvijek postoji nesigurnost. Možda ćete čuti da je mutex binarni semafor, što nije točno.

Prednosti Semaphora

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.

Prednosti Mutexa

Ovdje su važne prednosti / prednosti Mutexa

  • Muteksi su samo jednostavne brave dobivene prije nego što uđu u njegov kritični odjeljak, a zatim ga puste.
  • Budući da je u jednom trenutku u kritičnom dijelu samo jedna nit, ne postoje uvjeti utrke, a podaci uvijek ostaju dosljedni.

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žena je metoda, 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.

Mane Mutexa

Ovdje su nedostaci / nedostaci Mutexa

  • Ako nit dobije bravu i pređe u stanje spavanja ili je spriječena, tada se druga nit možda neće moći pomaknuti prema naprijed. To može dovesti do gladi.
  • Ne može se zaključati ili otključati iz drugog konteksta od onog koji ga je stekao.
  • U kritičnom odjeljku odjednom smije biti dopuštena samo jedna nit.
  • Uobičajena implementacija može dovesti do zauzetog stanja čekanja, što gubi procesorsko vrijeme.