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