Mutex vs semafori: Mikä on ero?

Sisällysluettelo:

Anonim

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ä opetusohjelmassa opit:

  • Mikä on Mutex?
  • Semaforin käyttö
  • Mutexin käyttö
  • Semaforin ja Mutexin välinen ero
  • Mutexia ja semaforia koskevat yleiset väärinkäsitykset
  • Semaforin edut
  • Mutexin edut
  • Semaforien haitta
  • Mutexin haitat

Mikä on Mutex?

Mutexin koko muoto on keskinäinen poissulkemisobjekti. Se on erityinen binäärisemafori, jota käytetään jaetun resurssin käytön hallintaan. Se sisältää prioriteettiperintämekanismin laajennettujen prioriteettien kääntöongelmien välttämiseksi. Sen avulla nykyiset korkeamman prioriteetin tehtävät voidaan pitää estetyssä tilassa mahdollisimman lyhyen ajan. Prioriteettiperintö ei kuitenkaan korjaa prioriteetin kääntämistä, vaan vain minimoi sen vaikutuksen.

TÄRKEÄ ERO

  • Mutex on lukitusmekanismi, kun taas semafori on signalointimekanismi
  • Mutex on vain objekti, kun taas semafori on kokonaisluku
  • Mutexilla ei ole alatyyppiä, kun taas semaforeilla on kaksi tyyppiä, jotka laskevat semaforia ja binaarista semaforia.
  • Semafori tukee odotus- ja signaalitoimintojen muokkaamista, kun taas Mutexia muokkaa vain prosessi, joka voi pyytää tai vapauttaa resurssia.
  • Semafori-arvoa muokataan odotus () ja signaali () -toiminnoilla, toisaalta Mutex-toiminnot lukitaan tai avataan.

Semaforin käyttö

Yhden puskurin tapauksessa voimme erottaa 4 kt puskurin neljään 1 kt puskuriin. Semafori voidaan liittää näihin neljään puskuriin. Tämän avulla käyttäjät ja tuottajat voivat työskennellä eri puskurien kanssa samanaikaisesti.

Mutexin käyttö

Mutex tarjoaa vastavuoroisen syrjäytymisen, joka voi olla joko tuottaja tai kuluttaja, jolla voi olla avain (mutex) ja jatkaa työnsä tekemistä. Niin kauan kuin tuottaja täyttää puskurin, käyttäjän on odotettava, ja päinvastoin. Mutex lockissa koko puskurin kanssa vain yksi lanka voi toimia koko ajan.

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. 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.

Yleisiä tietoja Mutexista ja semaforista

Tässä on muutama yleinen tosiasia Mutexista ja semaforista:

  • Vain yksi tehtävä voi hankkia mutexin. Joten mutexiin liittyy omistusoikeus, ja vain omistaja voi vapauttaa mutexin.
  • Mutexin ja semaforin käytön syyt ovat erilaiset, ehkä niiden toteutuksen samankaltaisuuden vuoksi, mutexia kutsutaan binäärisemaforiksi.
  • Yksi hyvin tunnettu väärinkäsitys on, että Mutexit ja Semaforit ovat melkein samat, ainoana erona on, että Mutex pystyy laskemaan yhteen, kun taas Semaforit kykenevät laskemaan 0: sta N: ään.
  • Binaarisen semaforin ja mutexin välillä on aina epävarmuutta. Saatat kuulla, että mutex on binäärisemafori, mikä ei ole oikein.

Semaforin 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.

Mutexin edut

Tässä ovat tärkeitä Mutexin etuja / etuja

  • Mutexit ovat vain yksinkertaisia ​​lukkoja, jotka on hankittu ennen kriittiseen osaan siirtymistä ja sen vapauttamista.
  • Koska vain yksi kierre on kriittisessä osassaan kulloinkin, kilpailuolosuhteita ei ole, ja tiedot pysyvät aina yhtenäisinä.

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ä.
  • Semafore-ohjelmointi on monimutkainen menetelmä, 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.

Mutexin haitat

Tässä on Mutexin haittoja / haittoja

  • Jos lanka saa lukituksen ja menee nukkumaan tai sitä estetään, toinen lanka ei ehkä pysty siirtymään eteenpäin. Tämä voi johtaa nälkään.
  • Sitä ei voi lukita tai avata eri kontekstista kuin se, joka on hankkinut sen.
  • Vain yksi ketju tulisi sallia kriittisessä osassa kerrallaan.
  • Normaali toteutus voi johtaa kiireiseen odotustilaan, mikä tuhlaa suorittimen aikaa.