Kaj je semafor?
Semafor je preprosto spremenljivka, ki je negativna in je v skupni rabi med nitmi. Semafor je signalni mehanizem, nit, ki čaka na semaforju, pa lahko signalizira druga nit. Za sinhronizacijo procesa uporablja dve atomski operaciji, 1) čakanje in 2) signal.
Semafor omogoča ali onemogoča dostop do vira, kar je odvisno od njegove nastavitve.
V tej vadnici za operacijski sistem (OS) boste izvedeli:
- Značilnost semaforja
- Kaj je semafor?
- Vrste semaforjev
- Primer semaforja
- Operacije čakanja in signala v semaforjih
- Štetje semaforja v primerjavi z binarnim semaforjem
- Razlika med semaforjem in muteksom
- Prednosti semaforjev
- Pomanjkljivost semaforjev
Značilnost semaforja
Tu so značilni semaforji:
- To je mehanizem, ki se lahko uporablja za sinhronizacijo nalog.
- Gre za mehanizem sinhronizacije na nizki ravni.
- Semafor bo vedno imel negativno celoštevilsko vrednost.
- Semafor je mogoče implementirati s preskusnimi operacijami in prekinitvami, ki jih je treba izvesti z uporabo deskriptorjev datotek.
Vrste semaforjev
Dve pogosti vrsti semaforja sta
- Štetje semaforjev
- Binarni semaforji.
Štetje semaforjev
Ta vrsta Semaphore uporablja števec, ki pomaga večkrat pridobiti ali izdati nalogo. Če je začetno štetje = 0, je treba semafor za štetje ustvariti v stanju, ki ni na voljo.
Če pa je število> 0, se semafor ustvari v razpoložljivem stanju in število žetonov, ki jih ima, je enako štetju.
Binarni semaforji
Binarni semaforji so precej podobni štetju semaforjev, vendar je njihova vrednost omejena na 0 in 1. Pri tej vrsti semaforja čakalna operacija deluje le, če je semafor = 1, signalna operacija pa uspe, ko je semafor = 0. Preprosto je izvajati kot štetje semaforjev.
Primer semaforja
Spodaj navedeni program je postopna izvedba, ki vključuje uporabo in prijavo semaforja.
Shared var mutex: semaphore = 1;Process ibegin… P(mutex);execute CS;V(mutex);… End;
Operacije čakanja in signala v semaforjih
Obe operaciji se uporabljata za izvajanje sinhronizacije procesov. Cilj te operacije semaforja je doseči medsebojno izključitev.
Počakajte na delovanje
Ta vrsta semaforja vam pomaga nadzirati vnos opravila v kritični odsek. Če pa je vrednost čakanja pozitivna, se vrednost argumenta čakanja X zmanjša. V primeru negativne ali ničelne vrednosti se nobena operacija ne izvede. Imenuje se tudi operacija P (S).
Ko se vrednost semaforja zmanjša, kar postane negativno, se ukaz zadrži, dokler niso izpolnjeni zahtevani pogoji.
Copy CodeP(S){while (S<=0);S--;}
Delovanje signala
Ta vrsta operacije Semaphore se uporablja za nadzor izhoda naloge iz kritičnega odseka. Pomaga povečati vrednost argumenta za 1, ki je označen kot V (S).
Copy CodeP(S){while (S>=0);S++;}
Štetje semaforja v primerjavi z binarnim semaforjem
Tu je nekaj glavnih razlik med štetjem in binarnim semaforjem:
Štetje semaforja | Binarni semafor |
Brez medsebojne izključenosti | Medsebojna izključitev |
Katera koli celoštevilska vrednost | Vrednost samo 0 in 1 |
Več kot eno režo | Samo ena reža |
Zagotovite nabor procesov | Ima mehanizem vzajemne izključitve. |
Razlika med semaforjem in muteksom
Parametri | Semafor | Mutex |
Mehanizem | Je vrsta signalnega mehanizma. | Je mehanizem za zaklepanje. |
Vrsta podatkov | Semafor je celoštevilčna spremenljivka. | Mutex je samo objekt. |
Sprememba | Operacije čakanja in signala lahko spremenijo semafor. | Spremeni ga samo postopek, ki lahko zahteva ali sprosti vir. |
Upravljanje virov | Če noben vir ni brezplačen, potem postopek zahteva vir, ki bi moral izvesti čakalno operacijo. Počakati mora, dokler število semaforja ne preseže 0. | Če je zaklenjen, mora postopek počakati. Postopek naj bo v čakalni vrsti. Do tega je treba dostopati šele, ko je mutex odklenjen. |
Navoj | Lahko imate več programskih niti. | V mutexu lahko imate več programskih niti, vendar ne hkrati. |
Lastništvo | Vrednost lahko spremenite s katerim koli postopkom, ki sprosti ali pridobi vir. | Zaklepanje predmeta se sprosti samo s postopkom, ki je na njem dobil zaklepanje. |
Vrste | Vrste semaforja štejejo semafor in binarni semafor in | Mutex nima podtipov. |
Delovanje | Vrednost semaforja se spremeni z uporabo funkcije wait () in signal (). | Predmet Mutex je zaklenjen ali odklenjen. |
Zasedenost virov | Zaseden je, če se uporabljajo vsi viri in postopek, ki zahteva vir, izvede operacijo wait () in se blokira, dokler število semaforja ne postane> 1. | Če je objekt že zaklenjen, postopek, ki zahteva vire, čaka in sistem ga postavi v čakalno vrsto, preden se sprosti zaklepanje. |
Prednosti semaforjev
Tukaj je nekaj prednosti / prednosti uporabe Semaphore:
- Omogoča dostop do kritičnega odseka več kot eni niti
- Semaforji so neodvisni od stroja.
- Semafori so vgrajeni v strojno neodvisno kodo mikrojedra.
- Ne dovolijo vstopu več procesov v kritični odsek.
- Ker je v semaforju zasedeno čakanje, procesnega časa in virov nikoli ne izgubljamo.
- So neodvisni od stroja in jih je treba zagnati v strojno neodvisni kodi mikrojedra.
- Omogočajo prožno upravljanje virov.
Pomanjkljivost semaforjev
Tu so slabosti / pomanjkljivosti semaforja
- Ena največjih omejitev semaforja je prednostna inverzija.
- Operacijski sistem mora spremljati vse klice na čakanje in signalizirati semafor.
- Njihova uporaba ni nikoli uveljavljena, ampak le po dogovoru.
- Da bi se izognili zastojem v semaforju, je treba čakanje in signal opraviti v pravilnem vrstnem redu.
- Programiranje semaforja je zapleteno, zato obstaja verjetnost, da ne bomo dosegli medsebojne izključenosti.
- Prav tako ni praktična metoda za široko uporabo, saj njihova uporaba vodi do izgube modularnosti.
- Semafor je bolj nagnjen k napakam programerja.
- Lahko povzroči zastoj ali kršitev medsebojnega izključevanja zaradi napake programerja.
Povzetek:
- Semafor je definiran kot spremenljivka, ki je negativna in je v skupni rabi med nitmi.
- To je mehanizem, ki se lahko uporablja za sinhronizacijo nalog.
- Štetje semaforja uporablja štetje, ki pomaga večkrat pridobiti ali sprostiti nalogo.
- Binarni semaforji so precej podobni štetju semaforjev, vendar je njihova vrednost omejena na 0 in 1.
- Operacija čakanja vam pomaga nadzirati vnos opravila v kritični odsek
- Operacija signalnega semaforja se uporablja za nadzor izhoda naloge iz kritičnega odseka
- Štetje Semaforja nima medsebojne izključitve, medtem ko Binarni Semafor ima medsebojno izključitev
- Semafor pomeni signalni mehanizem, medtem ko je Mutex mehanizem za zaklepanje
- Semaphore omogoča dostop do kritičnega odseka več kot eni niti
- Ena največjih omejitev semaforja je prednostna inverzija.