Mis on semafoor? Binaarsed, loendustüübid näitega

Lang L: none (table-of-contents):

Anonim

Mis on semafoor?

Semafoor on lihtsalt muutuja, mis pole negatiivne ja mida niidid jagavad. Semafoor on signaalimehhanism ja semafooris ootavat lõime saab signaalida teise lõimega. Protsessi sünkroniseerimiseks kasutatakse kahte aatomitoimingut, 1) ootamist ja 2) signaali.

Semafoor kas lubab või keelab juurdepääsu ressursile, mis sõltub selle seadistamisest.

Selles opsüsteemi (OS) õpetuses saate teada:

  • Iseloomulik semafoorile
  • Mis on semafoor?
  • Semafooride tüübid
  • Näide semaforist
  • Oote- ja signaalitoimingud semafoorides
  • Semafori ja binaarse semafori lugemine
  • Erinevus semafori ja Mutexi vahel
  • Semafooride eelised
  • Semaforide puudus

Iseloomulik semafoorile

Siin on semaforile iseloomulikud:

  • See on mehhanism, mida saab kasutada ülesannete sünkroonimiseks.
  • See on madala taseme sünkroonimismehhanism.
  • Semafoor hoiab alati mitte-negatiivset täisarvu.
  • Semafoori saab rakendada testimisoperatsioonide ja katkestustega, mis tuleks täita failide kirjeldajate abil.

Semafooride tüübid

Kaks tavalist semafooriliiki on

  • Semafooride lugemine
  • Binaarsed semaforid.

Semafooride lugemine

Seda tüüpi semafoorid kasutavad loendust, mis aitab ülesannet mitu korda omandada või vabastada. Kui esialgne arv = 0, tuleks loendussemafoor luua kättesaamatus olekus.

Kui aga loend on> 0, luuakse semafor olemasolevas olekus ja sellel olevate märkide arv võrdub tema loendiga.

Binaarsed semaforid

Binaarsemafoorid sarnanevad semafooride loendamisega üsna sarnaselt, kuid nende väärtus piirdub 0 ja 1. Seda tüüpi semaforide korral töötab ootefunktsioon ainult siis, kui semafor = 1, ja signaalioperatsioon õnnestub, kui semafor = 0. Seda on lihtne rakendada kui semaforide loendamine.

Näide semaforist

Allpool toodud programm on järkjärguline rakendamine, mis hõlmab semafori kasutamist ja deklareerimist.

Shared var mutex: semaphore = 1;Process ibegin… P(mutex);execute CS;V(mutex);… End;

Oote- ja signaalitoimingud semafoorides

Mõlemat toimingut kasutatakse protsesside sünkroonimise rakendamiseks. Selle semaforioperatsiooni eesmärk on saada vastastikune tõrjutus.

Oodake toimimist

Seda tüüpi semaforioperatsioonid aitavad teil kontrollida ülesande sisestamist kriitilises jaotises. Kui aga ootamise väärtus on positiivne, vähendatakse ooteargumendi X väärtust. Negatiivse või nullväärtuse korral ei tehta ühtegi toimingut. Seda nimetatakse ka P (S) operatsiooniks.

Kui semafori väärtus on vähenenud, mis muutub negatiivseks, hoitakse käsku seni, kuni nõutavad tingimused on täidetud.

Copy CodeP(S){while (S<=0);S--;}

Signaali toimimine

Seda tüüpi semafooroperatsioone kasutatakse ülesande kriitilisest sektsioonist väljumise juhtimiseks. See aitab suurendada argumendi väärtust 1 võrra, mida tähistatakse kui V (S).

Copy CodeP(S){while (S>=0);S++;}

Semafori ja binaarse semafori lugemine

Siin on mõned suured erinevused loendamise ja binaarse semafori vahel:

Semafori lugemine Binaarne semafoor
Vastastikune tõrjutus puudub Vastastikune välistamine
Mis tahes täisarv Ainult väärtus 0 ja 1
Rohkem kui üks pesa Ainult üks pesa
Esitage protsesside komplekt Sellel on vastastikune tõrjutusmehhanism.

Erinevus semafori ja Mutexi vahel

Parameetrid Semafoor Mutex
Mehhanism See on teatud tüüpi signaalimehhanism. See on lukustusmehhanism.
Andmetüüp Semafoor on täisarvu muutuja. Mutex on lihtsalt objekt.
Muutmine Oote- ja signaalitoimingud võivad muuta semaforit. Seda muudab ainult protsess, mis võib ressurssi taotleda või välja anda.
Ressursside haldamine Kui ükski ressurss pole vaba, nõuab protsess ressurssi, mis peaks käivitama ooteaja. See peaks ootama, kuni semafori arv on suurem kui 0. Kui see on lukustatud, peab protsess ootama. Protsessi tuleks hoida järjekorras. Sellele tuleb juurde pääseda ainult siis, kui muteks on lukustamata.
Niit Teil võib olla mitu programmi lõime. Mutexis võib olla mitu programmi lõime, kuid mitte samaaegselt.
Omandiline kuuluvus Väärtust saab muuta mis tahes protsessiga, mis ressursi vabastab või hankib. Objektiluku vabastab ainult protsess, mille käigus on sellel lukk saavutatud.
Tüübid Semafooride tüübid on semafori ja binaarse semafori loendamine Mutexil pole alamtüüpe.
Operatsioon Semafoorväärtust muudetakse ootamise () ja signaali () abil. Mutex-objekt on lukustatud või lukustamata.
Ressursid Hõive See on hõivatud, kui kõiki ressursse kasutatakse ja ressurssi taotlev protsess sooritab ootamise () operatsiooni ja blokeerib ennast, kuni semafooride arvuks saab> 1. Kui objekt on juba lukustatud, ootab ressursse nõudev protsess enne süsteemi lukustuse vabastamist järjekorda.

Semafooride eelised

Siin on semafori kasutamise plussid / eelised:

  • See võimaldab kriitilisele sektsioonile juurde pääseda mitmel lõimel
  • Semaforid on masinast sõltumatud.
  • Semafoorid rakendatakse mikrotuuma masinast sõltumatus koodis.
  • Need ei luba mitmel protsessil kriitilisse sektsiooni siseneda.
  • Kuna semafooris on kiire ootamine, ei raiska kunagi protsessi aeg ja ressursid.
  • Need on masinast sõltumatud, mida tuleks käivitada mikrotuuma masinast sõltumatu koodiga.
  • Need võimaldavad ressursse paindlikult hallata.

Semaforide puudus

Siin on miinused / semafori puudused

  • Semafori üks suurimaid piiranguid on prioriteetide inversioon.
  • Operatsioonisüsteem peab jälgima kõiki ootekõnesid ja semafori signaale.
  • Nende kasutamist ei sunnita kunagi, kuid seda ainult kokkuleppel.
  • Semafori ummikute vältimiseks tuleb operatsioonid Oota ja signaal täita õiges järjekorras.
  • Semafori programmeerimine on keeruline, seega on tõenäosus vastastikust tõrjutust mitte saavutada.
  • Samuti ei ole see otstarbekas meetod suuremahuliseks kasutamiseks, kuna nende kasutamine viib modulaarsuse kadumiseni.
  • Semafor on altim programmeerija vigadele.
  • See võib programmeerija vea tõttu põhjustada ummikseisu või vastastikuse tõrjutuse rikkumise.

Kokkuvõte:

  • Semafoor on määratletud kui muutuja, mis pole negatiivne ja mida niidid jagavad.
  • See on mehhanism, mida saab kasutada ülesannete sünkroonimiseks.
  • Semafori loendamisel kasutatakse loendust, mis aitab ülesannet mitu korda omandada või vabastada.
  • Binaarsed semaforid sarnanevad semaforide loendamisega üsna sarnaselt, kuid nende väärtus piirdub 0 ja 1 väärtusega.
  • Ootaoperatsioon aitab teil kontrollida ülesande sisestamist kriitilisse sektsiooni
  • Signaali semafori operatsiooni kasutatakse ülesande kriitilisest sektsioonist väljumise juhtimiseks
  • Semafoori loendamisel puudub vastastikune tõrjutus, samas kui binaarsemafooril on vastastikune tõrjutus
  • Semafoor tähendab signaalimehhanismi, samas kui Mutex on lukustusmehhanism
  • Semafoor lubab kriitilisele sektsioonile juurde pääseda mitmel niidil
  • Semafori üks suurimaid piiranguid on prioriteetide inversioon.