Mikä on semafori?
Semafori on yksinkertaisesti muuttuja, joka ei ole negatiivinen ja jaettu ketjujen kesken. Semafori on signalointimekanismi, ja semaforilla odottava lanka voidaan signaloida toisella säikeellä. Se käyttää kahta atomioperaatiota, 1) odota ja 2) signaalia prosessin synkronointiin.
Semafori joko sallii tai estää resurssin käytön, mikä riippuu sen perustamisesta.
Tässä käyttöjärjestelmän (OS) opetusohjelmassa opit:
- Luonteenomainen semaforille
- Mikä on semafori?
- Semaforien tyypit
- Esimerkki semaforista
- Odotus- ja signaalitoiminnot semaforeissa
- Lasketaan semaforia vs. binäärisemaforia
- Semaforin ja Mutexin välinen ero
- Semaforien edut
- Semaforien haitta
Luonteenomainen semaforille
Tässä ovat semaforille ominaisia:
- Se on mekanismi, jota voidaan käyttää tehtävien synkronointiin.
- Se on matalan tason synkronointimekanismi.
- Semaforilla on aina ei-negatiivinen kokonaislukuarvo.
- Semafori voidaan toteuttaa testaustoiminnoilla ja keskeytyksillä, jotka tulisi suorittaa tiedostojen kuvaajilla.
Semaforien tyypit
Kaksi yleistä semaforityyppiä ovat
- Lasketaan semaforeja
- Binaariset semaforit.
Semaforien laskeminen
Tämän tyyppinen semafori käyttää laskentaa, joka auttaa tehtävää hankkimaan tai julkaisemaan useita kertoja. Jos alkulaskenta = 0, laskusemafaori tulisi luoda tilassa, joka ei ole käytettävissä.
Kuitenkin, jos määrä on> 0, semafori luodaan käytettävissä olevassa tilassa ja sen merkkien määrä on yhtä suuri kuin sen määrä.
Binaariset semaforit
Binaariset semaforit ovat melko samanlaisia kuin semaforien laskeminen, mutta niiden arvo on rajoitettu 0: een ja 1. Tämän tyyppisessä semaforissa odotusoperaatio toimii vain, jos semafori = 1, ja signaalitoiminto onnistuu, kun semaforit = 0. Se on helppo kuin laskea semaforeja.
Esimerkki semaforista
Alla annettu ohjelma on vaiheittainen toteutus, johon sisältyy semaforin käyttö ja ilmoittaminen.
Shared var mutex: semaphore = 1;Process ibegin… P(mutex);execute CS;V(mutex);… End;
Odotus- ja signaalitoiminnot semaforeissa
Molempia näitä toimintoja käytetään prosessisynkronoinnin toteuttamiseen. Tämän semaforioperaation tavoitteena on saada keskinäinen syrjäytyminen.
Odota käyttöä
Tämän tyyppinen semaforioperaatio auttaa sinua hallitsemaan tehtävän syöttämistä kriittiseen osaan. Jos odotuksen arvo on kuitenkin positiivinen, odotusargumentin X arvoa vähennetään. Negatiivisen tai nolla-arvon tapauksessa mitään toimintoa ei suoriteta. Sitä kutsutaan myös P (S) -operaatioksi.
Kun semaforiarvo on laskenut, josta tulee negatiivinen, komentoa pidetään yllä, kunnes vaaditut ehdot täyttyvät.
Copy CodeP(S){while (S<=0);S--;}
Signaalin toiminta
Tämän tyyppistä semaforioperaatiota käytetään ohjaamaan tehtävän poistumista kriittiseltä osiosta. Se auttaa nostamaan argumentin arvoa yhdellä, jota merkitään nimellä V (S).
Copy CodeP(S){while (S>=0);S++;}
Lasketaan semaforia vs. binäärisemaforia
Tässä on joitain merkittäviä eroja laskennan ja binäärisen semaforin välillä:
Lasketaan semaforia | Binaarinen semafori |
Ei keskinäistä syrjäytymistä | Yhteinen poissulkeminen |
Mikä tahansa kokonaislukuarvo | Arvo vain 0 ja 1 |
Useampi kuin yksi paikka | Vain yksi paikka |
Anna joukko prosesseja | Sillä on keskinäinen poissulkemismekanismi. |
Semaforin ja Mutexin välinen ero
Parametrit | Semafori | Mutex |
Mekanismi | Se on eräänlainen signalointimekanismi. | Se on lukitusmekanismi. |
Tietotyyppi | Semafori on kokonaislukumuuttuja. | Mutex on vain esine. |
Muutos | Odotus- ja signaalitoiminnot voivat muokata semaforia. | Sitä muokkaa vain prosessi, joka voi pyytää tai vapauttaa resurssia. |
Resurssienhallinta | Jos mikään resurssi ei ole vapaa, prosessi vaatii resurssin, jonka tulisi suorittaa odotusoperaatio. Sen pitäisi odottaa, kunnes semaforin määrä on suurempi kuin 0. | Jos se on lukittu, prosessin on odotettava. Prosessi tulisi pitää jonossa. Tätä on käytettävä vain, kun mutex on lukittu. |
Lanka | Sinulla voi olla useita ohjelmalankoja. | Mutexissa voi olla useita ohjelmalankoja, mutta ei samanaikaisesti. |
Omistusoikeus | Arvoa voidaan muuttaa millä tahansa prosessilla vapauttamalla tai hankkimalla resurssi. | Kohteen lukitus vapautetaan vain prosessista, joka on saanut lukon siihen. |
Tyypit | Semaforityypit ovat semaforin ja binäärisemaforin laskeminen ja | Mutexillä ei ole alatyyppejä. |
Operaatio | Semafori-arvoa muokataan odotus () ja signaali () -toiminnoilla. | Mutex-objekti on lukittu tai avattu. |
Resurssit Käyttöaste | Se on varattu, jos kaikkia resursseja käytetään ja resurssia pyytävä prosessi suorittaa wait () -operaation ja estää itsensä, kunnes semaforien määrä on> 1. | Jos objekti on jo lukittu, resursseja pyytävä prosessi odottaa ja järjestelmä on jonossa ennen lukituksen vapauttamista. |
Semaforien edut
Tässä on semaforin käytön etuja / etuja:
- Sen avulla useampi kuin yksi ketju voi käyttää kriittistä osaa
- Semaforit ovat koneesta riippumattomia.
- Semaforeja toteutetaan mikropuolen koneesta riippumattomassa koodissa.
- Ne eivät salli useiden prosessien pääsyä kriittiseen osioon.
- Koska semaforissa odottaa kiireistä, prosessiaikaa ja resursseja ei koskaan tuhlaa.
- Ne ovat koneesta riippumattomia, jotka tulisi ajaa mikrohiiren koneesta riippumattomassa koodissa.
- Ne mahdollistavat resurssien joustavan hallinnan.
Semaforien haitta
Tässä ovat semaforin haittoja / haittoja
- Yksi semaforin suurimmista rajoituksista on prioriteetin kääntäminen.
- Käyttöjärjestelmän on seurattava kaikkia odottavia puheluja ja ilmoitettava semaforista.
- Niiden käyttöä ei koskaan pakoteta, mutta se tapahtuu vain sopimuksella.
- Semaforissa olevien umpikujien välttämiseksi Wait and Signal -operaatiot on suoritettava oikeassa järjestyksessä.
- Semaforien ohjelmointi on monimutkaista, joten on mahdollista, ettei keskinäistä syrjäytymistä saavuteta.
- Se ei myöskään ole käytännöllinen menetelmä laajamittaiseen käyttöön, koska niiden käyttö johtaa modulaarisuuden menetykseen.
- Semafori on alttiimpi ohjelmoijavirheille.
- Se voi aiheuttaa umpikujan tai keskinäisen poissulkemisen rikkomisen ohjelmoijan virheestä johtuen.
Yhteenveto:
- Semafori määritellään muuttujaksi, joka ei ole negatiivinen ja jaettu ketjujen kesken.
- Se on mekanismi, jota voidaan käyttää tehtävien synkronointiin.
- Semaforin laskemisessa käytetään laskentaa, joka auttaa tehtävää hankkimaan tai julkaisemaan useita kertoja.
- Binaariset semaforit ovat melko samanlaisia kuin semaforien laskeminen, mutta niiden arvo on rajoitettu 0: een ja 1: ään.
- Odota-toiminto auttaa hallitsemaan tehtävän syöttämistä kriittiseen osaan
- Signaalin semaforioperaatiota käytetään ohjaamaan tehtävän poistumista kriittiseltä osiosta
- Semaforien laskemisella ei ole keskinäistä syrjäytymistä, kun taas binäärisemaforeilla on keskinäinen poissulkeminen
- Semafori tarkoittaa signalointimekanismia, kun taas Mutex on lukitusmekanismi
- Semaforin avulla useampi kuin yksi ketju voi käyttää kriittistä osaa
- Yksi semaforin suurimmista rajoituksista on prioriteetin kääntäminen.