Mis on Semaphore? Loendamine, binaarsed tüübid koos näitega
Mis on Semaphore?
Semaphore on lihtsalt muutuja, mis ei ole negatiivne ja jagatud lõimede vahel. Semafor on signalisatsioonimehhanism ja semaforil ootavast niidist saab märku anda teine niit. See kasutab kahte aatomioperatsiooni: 1) oodake ja 2) Signal protsessi sünkroonimiseks.
Semafor kas lubab või keelab juurdepääsu ressursile, mis sõltub sellest, kuidas see on seadistatud.
Iseloomulik Semaphore
Siin on semaforile iseloomulikud omadused:
- See on mehhanism, mida saab kasutada ülesannete sünkroonimiseks.
- See on madala taseme sünkroonimismehhanism.
- Semaphore sisaldab alati mittenegatiivset täisarvu.
- Semaphore saab realiseerida testoperatsioonide ja katkestuste abil, mida tuleks käivitada failideskriptorite abil.
Tüübid Semaphores
Kaks levinumat semafori tüüpi on
- Semaforide loendamine
- Binaarsed semaforid.
Loendamine Semaphores
Seda tüüpi Semaphore kasutab loendust, mis aitab ülesannet mitu korda omandada või vabastada. Kui esialgne arv = 0, tuleks loendussemafor luua kättesaamatus olekus.
Kui aga arv on > 0, luuakse semafor saadaolevas olekus ja sellel olevate märkide arv võrdub selle arvuga.
Binaarne Semaphores
Binaarsed semaforid on üsna sarnased semaforide loendamisega, kuid nende väärtus on piiratud 0 ja 1-ga. Seda tüüpi semaforides toimib ooteoperatsioon ainult siis, kui semafor = 1 ja signaali toiming õnnestub, kui semafor = 0. Seda on lihtne rakendada kui semaforide loendamine.
Näide Semaphore
Allpool toodud programm on samm-sammult rakendamine, mis hõlmab semafori kasutamist ja deklareerimist.
Shared var mutex: semaphore = 1; Process i begin . . P(mutex); execute CS; V(mutex); . . End;
Oota ja Signal Operasisse Semaphores
Mõlemat toimingut kasutatakse rakendamiseks protsesside sünkroonimine. Selle semafori operatsiooni eesmärk on saavutada vastastikune välistamine.
Ootama Operamine
Seda tüüpi semaforoperatsioon aitab teil kontrollida ülesande sisestamist kriitilisse sektsiooni. Kui aga ootamise väärtus on positiivne, siis ooteargumendi X väärtust vähendatakse. Negatiivse või nullväärtuse korral toimingut ei teostata. Seda nimetatakse ka P(S)-operatsiooniks.
Pärast semafori väärtuse vähendamist, mis muutub negatiivseks, hoitakse käsku all, kuni nõutud tingimused on täidetud.
Copy CodeP(S) { while (S<=0); S--; }
Signal töö
Seda tüüpi Semaphore toimingut kasutatakse ülesande väljumise juhtimiseks kriitilisest jaotisest. See aitab suurendada argumendi väärtust 1 võrra, mida tähistatakse kui V(S).
Copy CodeP(S) { while (S>=0); S++; }
Loendamine Semaphore vs binaarne Semaphore
Siin on mõned peamised erinevused loendamise ja binaarse semafori vahel:
Loendamine Semaphore | Binaarne Semaphore |
---|---|
Ei mingit vastastikust välistamist | Vastastikune välistamine |
Mis tahes täisarv | Väärtus ainult 0 ja 1 |
Rohkem kui üks pesa | Ainult üks pesa |
Esitage protsesside komplekt | Sellel on vastastikune välistamismehhanism. |
Erinevus Semaphore vs. Mutex
parameetrid | Semaphore | mutexid |
---|---|---|
Mehhanism | See on teatud tüüpi signaalimismehhanism. | See on lukustusmehhanism. |
Andmetüüp | Semaphore on täisarvuline muutuja. | Mutex on lihtsalt objekt. |
Muudatus | Ootamise ja signaali toimingud võivad semafori muuta. | Seda muudab ainult protsess, mis võib ressurssi taotleda või vabastada. |
Ressursside juhtimine | Kui ükski ressurss pole vaba, nõuab protsess ressurssi, mis peaks käivitama ootetoimingu. See peaks ootama, kuni semaforide arv on suurem kui 0. | Kui see on lukus, peab protsess ootama. Protsessi tuleks hoida järjekorras. Sellele on vaja juurde pääseda ainult siis, kui mutex on lukustamata. |
Keere | Teil võib olla mitu programmilõimi. | Mutexis võib olla mitu programmilõimi, kuid mitte korraga. |
Omandiõigus | Väärtust saab muuta mis tahes ressursi vabastamise või hankimise protsessiga. | Objekti lukustus vabastatakse ainult protsessi abil, mis on selle luku saanud. |
Liigid | Tüübid Semaphore loevad semafori ja kahendsemafori ning | Mutexil pole alatüüpe. |
Operamine | Semaphore väärtust muudetakse ootamise () ja signaali () abil. | Mutexi objekt on lukustatud või lukustamata. |
Ressursid hõivatus | See on hõivatud, kui kõik ressursid on kasutusel ja ressurssi taotlev protsess sooritab ootetoimingu () ja blokeerib end, kuni semaforide arv muutub >1. | Juhul, kui objekt on juba lukustatud, ootab ressursse taotlev protsess ja süsteem seab selle järjekorda enne luku vabastamist. |
Eelised Semaphores
Siin on kasutamise plussid/kasud Semaphore:
- See võimaldab rohkem kui ühe lõime juurdepääsu kriitilisele jaotisele
- Semaphores on masinast sõltumatud.
- Semaphores on realiseeritud mikrokerneli masinast sõltumatus koodis.
- Need ei luba mitmel protsessil kriitilisse sektsiooni siseneda.
- Kuna semaforis on kiire ootamine, ei raisata kunagi protsessi aega ja ressursse.
- Need on masinast sõltumatud, mida tuleks käivitada mikrokerneli masinast sõltumatus koodis.
- Need võimaldavad ressursse paindlikult hallata.
Semaforide puudus
Siin on semafori miinused / puudused
- Semafori üks suurimaid piiranguid on prioriteedi inversioon.
- Operatsioonisüsteem peab jälgima kõiki ootekõnesid ja semafori signaali.
- Nende kasutamist ei jõustata kunagi, vaid see on ainult kokkuleppeline.
- Semaforis ummikseisu vältimiseks tuleb Oodata ja Signal toimingud tuleb sooritada õiges järjekorras.
- Semaphore programmeerimine on keeruline, seega on tõenäoline, et vastastikust välistamist ei saavutata.
- Samuti ei ole see praktiline meetod suuremahuliseks kasutamiseks, kuna nende kasutamine viib modulaarsuse kadumiseni.
- Semaphore on rohkem altid programmeerija vigadele.
- See võib põhjustada ummikseis või vastastikuse välistamise rikkumine programmeerija vea tõttu.
kokkuvõte
- Semaphore on defineeritud kui muutuja, mis ei ole negatiivne ja jagatud lõimede vahel.
- See on mehhanism, mida saab kasutada ülesannete sünkroonimiseks.
- Semafori loendamine kasutab loendust, mis aitab ülesandeid mitu korda omandada või vabastada.
- Binaarsed semaforid on üsna sarnased semaforide loendamisega, kuid nende väärtus on piiratud 0 ja 1-ga.
- Ooteoperatsioon aitab teil kontrollida ülesande sisestamist kriitilisse sektsiooni
- Signal semaforoperatsiooni kasutatakse ülesande väljumise juhtimiseks kriitilisest sektsioonist
- Loendamine Semaphore puudub vastastikune välistamine, samas kui binaarne Semaphore on vastastikune välistamine
- Semaphore tähendab signaalimismehhanismi, samas kui Mutex on lukustusmehhanism
- Semaphore võimaldab rohkem kui ühe lõime juurdepääsu kriitilisele jaotisele
- Semafori üks suurimaid piiranguid on prioriteedi inversioon.