Kas yra semaforas? Dvejetainiai, skaičiavimo tipai su pavyzdžiu

Turinys:

Anonim

Kas yra semaforas?

Semaforas yra tiesiog kintamasis, kuris nėra neigiamas ir bendrinamas tarp gijų. Semaforas yra signalinis mechanizmas, o semaforą laukiančią giją gali signalizuoti kita gija. Proceso sinchronizavimui naudojamos dvi atominės operacijos: 1) laukimas ir 2) signalas.

Semaforas leidžia arba neleidžia naudotis ištekliu, o tai priklauso nuo jo nustatymo.

Šioje operacinės sistemos (OS) pamokoje sužinosite:

  • Būdinga semaforai
  • Kas yra semaforas?
  • Semaforų tipai
  • Semaforo pavyzdys
  • Laukimo ir signalo operacijos semaforuose
  • Semaforo skaičiavimas prieš dvejetainę semaforą
  • Skirtumas tarp semaforo ir „Mutex“
  • Semaforų pranašumai
  • Semaforų trūkumas

Būdinga semaforai

Čia yra būdingi semaforui:

  • Tai yra mechanizmas, kuris gali būti naudojamas užduočių sinchronizavimui užtikrinti.
  • Tai žemo lygio sinchronizavimo mechanizmas.
  • Semaforas visada turės neigiamą sveikojo skaičiaus vertę.
  • Semaforas gali būti įgyvendinamas naudojant bandymo operacijas ir pertraukimus, kurie turėtų būti vykdomi naudojant failų aprašus.

Semaforų tipai

Dvi paplitusios semaforų rūšys yra

  • Semaforų skaičiavimas
  • Dvejetainės semaforos.

Semaforų skaičiavimas

Šio tipo semaforai naudoja skaičiavimą, kuris padeda užduotį daug kartų įsigyti ar išleisti. Jei pradinis skaičius = 0, skaičiavimo semaforas turėtų būti sukurtas nepasiekiamoje būsenoje.

Tačiau, jei skaičius yra> 0, semaforas sukuriamas esama būsena ir jo turimų žetonų skaičius yra lygus jo skaičiui.

Dvejetainės semaforos

Dvejetainės semaforos yra gana panašios į semaforų skaičiavimą, tačiau jų vertė ribojama 0 ir 1. Šio tipo semaforų laukimo operacija veikia tik tuo atveju, jei semaforas = 1, o signalo operacija pavyksta, kai semaforas = 0. Lengva įgyvendinti nei skaičiuoti semaforas.

Semaforo pavyzdys

Žemiau pateikta programa yra žingsnis po žingsnio įgyvendinimas, apimantis semaforo naudojimą ir deklaravimą.

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

Laukimo ir signalo operacijos semaforuose

Abi šios operacijos naudojamos procesų sinchronizavimui įgyvendinti. Šios semaforinės operacijos tikslas yra gauti abipusę atskirtį.

Palaukite operacijos

Šio tipo semaforo operacijos padeda valdyti užduoties įvedimą į kritinį skyrių. Tačiau jei laukimo vertė yra teigiama, tada laukimo argumento X vertė yra mažinama. Neigiamos arba nulinės vertės atveju jokia operacija nevykdoma. Tai dar vadinama P (S) operacija.

Sumažinus semaforo vertę, kuri tampa neigiama, komanda laikoma tol, kol bus įvykdytos reikiamos sąlygos.

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

Signalo veikimas

Šio tipo semaforo operacijos naudojamos valdyti užduotį iš kritinio skyriaus. Tai padeda padidinti argumento vertę 1, kuri žymima kaip V (S).

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

Semaforo skaičiavimas prieš dvejetainę semaforą

Štai keletas pagrindinių skirtumų tarp skaičiavimo ir dvejetainės semaforos:

Skaičiuojant semaforą Dvejetainis semaforas
Jokios abipusės atskirties Abipusė atskirtis
Bet kuri sveiko skaičiaus reikšmė Tik 0 ir 1 vertė
Daugiau nei vienas lizdas Tik vienas lizdas
Pateikite procesų rinkinį Jis turi abipusį pašalinimo mechanizmą.

Skirtumas tarp semaforo ir „Mutex“

Parametrai Semaforas Mutex
Mechanizmas Tai yra signalizacijos mechanizmo tipas. Tai yra fiksavimo mechanizmas.
Duomenų tipas Semaforas yra sveikasis skaičius. Mutexas yra tik objektas.
Modifikacija Laukimo ir signalo operacijos gali modifikuoti semaforą. Ją modifikuoja tik procesas, kuris gali pateikti užklausą arba išleisti šaltinį.
Resursu valdymas Jei nė vienas išteklius nėra laisvas, procesui reikalingas išteklius, kuris turėtų atlikti laukimo operaciją. Ji turėtų palaukti, kol semaforo skaičius bus didesnis nei 0. Jei jis užrakintas, proceso reikia laukti. Procesas turėtų būti laikomas eilėje. Tai reikia pasiekti tik tada, kai „mutex“ yra atrakintas.
Siūlas Galite turėti kelias programos gijas. „Mutex“ galite turėti kelias programos gijas, bet ne vienu metu.
Nuosavybė Vertę galima pakeisti bet kuriuo procesu išleidžiant ar gaunant šaltinį. Objekto užraktą atleidžia tik tas procesas, kuris užfiksavo jo užraktą.
Tipai Semaforų tipai yra semaforų ir dvejetainių semaforų skaičiavimas ir „Mutex“ neturi potipių.
Operacija Semaforo vertė modifikuojama naudojant laukimo () ir signalo () operacijas. „Mutex“ objektas yra užrakintas arba atrakintas.
Išteklių užimtumas Jis užimtas, jei naudojami visi ištekliai, o procesas, kurio metu prašoma išteklių, atlieka laukimo () operaciją ir blokuoja save, kol semaforų skaičius taps> 1. Jei objektas jau užrakintas, procesas, reikalaujantis išteklių, laukia ir, prieš paleidžiant užraktą, sistemos laukia eilėje.

Semaforų pranašumai

Čia yra privalumai / privalumai naudojant semaforą:

  • Tai leidžia daugiau nei vienai gijai pasiekti kritinę sekciją
  • Semaforai nepriklauso nuo mašinos.
  • Semaforos yra įdiegtos nuo kompiuterio nepriklausomame mikrobranduolio kode.
  • Jie neleidžia keliems procesams patekti į kritinę sekciją.
  • Kadangi semaforuose laukia įtemptas laukimas, niekada neišeikvojama proceso laiko ir išteklių.
  • Jie yra nepriklausomi nuo mašinų, kurie turėtų būti paleisti iš kompiuterio nepriklausomo mikrobranduolio kodo.
  • Jie leidžia lanksčiai valdyti išteklius.

Semaforų trūkumas

Čia yra semaforo trūkumai / trūkumai

  • Vienas didžiausių semaforo apribojimų yra prioritetinė inversija.
  • Operacinė sistema turi sekti visus laukimo skambučius ir signalizuoti semaforą.
  • Jų naudojimas niekada nevykdomas, tačiau tai taikoma tik pagal susitarimą.
  • Norint išvengti aklavietės semaforoje, laukimo ir signalo operacijas reikia atlikti teisinga tvarka.
  • Semaforų programavimas yra sudėtingas, todėl yra tikimybės nepasiekti abipusės atskirties.
  • Tai taip pat nėra praktiškas metodas plačiam naudojimui, nes dėl jų prarandamas moduliškumas.
  • Semaforas yra labiau linkęs į programuotojo klaidas.
  • Dėl programuotojo klaidos tai gali sukelti aklavietę arba abipusės atskirties pažeidimą.

Santrauka:

  • Semaforas apibrėžiamas kaip kintamasis, kuris nėra neigiamas ir bendrinamas tarp gijų.
  • Tai yra mechanizmas, kuris gali būti naudojamas užduočių sinchronizavimui užtikrinti.
  • Skaičiuojant semaforą naudojamas skaičiavimas, kuris padeda užduotį daug kartų įgyti ar išleisti.
  • Dvejetainės semaforos yra gana panašios į semaforų skaičiavimą, tačiau jų vertė ribojama 0 ir 1.
  • Laukimo operacija padeda kontroliuoti užduoties įvedimą į kritinį skyrių
  • Signalo semaforo operacija naudojama užduoties išėjimui iš kritinio skyriaus valdyti
  • Skaičiuojant semaforą nėra abipusės, o dvejetainėje - abipusė atskirtis
  • Semaforas reiškia signalizacijos mechanizmą, o „Mutex“ yra fiksavimo mechanizmas
  • Semaforas leidžia daugiau nei vienai gijai pasiekti kritinį skyrių
  • Vienas didžiausių semaforo apribojimų yra prioritetinė inversija.