Mutex vs semafoor: mis vahe on?

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 õpetuses saate teada:

  • Mis on Mutex?
  • Semafori kasutamine
  • Mutexi kasutamine
  • Erinevus semafori ja Mutexi vahel
  • Levinud väärarusaamad Mutexi ja semafori kohta
  • Semafori eelised
  • Mutexi eelised
  • Semafooride puudus
  • Mutexi puudused

Mis on Mutex?

Mutexi täielik vorm on vastastikuse väljaarvamise objekt. See on spetsiaalne kahendsemafori tüüp, mida kasutatakse jagatud ressursile juurdepääsu kontrollimiseks. See sisaldab prioriteetset pärimismehhanismi, et vältida laiendatud prioriteetsete inversiooniprobleemide tekkimist. See võimaldab praeguseid kõrgema prioriteediga ülesandeid hoida võimalikult lühikese aja jooksul blokeeritud olekus. Prioriteetne pärimine ei paranda siiski prioriteedi ümberpööramist, vaid vähendab selle mõju.

PÕHISED erinevused

  • Mutex on lukustusmehhanism, semafoor aga signaalimehhanism
  • Mutex on lihtsalt objekt, semafoor aga täisarv
  • Mutexil pole alamtüüpi, samas kui semafooril on kahte tüüpi, milleks on semafori ja binaarse semafori loendamine.
  • Semafoor toetab oote- ja signaalitoimingute muutmist, samas kui Mutexi muudab ainult protsess, mis võib ressurssi taotleda või välja anda.
  • Semafoorväärtust muudetakse ootamise () ja signaali () abil, teisalt on Mutexi toimingud lukustatud või lukustamata.

Semafori kasutamine

Ühe puhvri korral võime 4 KB puhvri jagada neljaks 1 KB puhvriks. Nende nelja puhvriga võib seostada semaforit. See võimaldab kasutajatel ja tootjatel töötada korraga erinevate puhvritega.

Mutexi kasutamine

Mutex annab vastastikuse tõrjutuse, mis võib olla nii tootja kui ka tarbija, kellel võib olla võti (mutex) ja kes saab oma tööd jätkata. Kuni tootja täidab puhvrit, peab kasutaja ootama ja vastupidi. Mutexi lukustuses saab kogu puhvriga kogu aeg töötada ainult üks niit.

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.

Mutexi ja semafori levinud faktid

Siin on mõned levinud faktid Mutexi ja semafori kohta:

  • Mutexi saab omandada ainult üks ülesanne. Niisiis, muteksiga on seotud omandiõigus ja ainult omanik saab muteksi vabastada.
  • Mutexi ja semafori kasutamise põhjused on erinevad, ehkki nende rakendamise sarnasuse tõttu nimetatakse mutexi kahendsemafooriks.
  • Üks väga tuntud eksiarvamus on see, et muteksid ja semaforid on peaaegu ühesugused, ainus erinevus on see, et muteks on võimeline loendama 1-ni, semafoorid aga 0-st kuni N.-ni.
  • Binaarse semafori ja muteksi vahel on alati ebakindlus. Võite kuulda, et mutex on binaarne semafor, mis pole õige.

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

Mutexi eelised

Siin on Mutexi olulised plussid / eelised

  • Mutexid on lihtsalt lihtsad lukud, mis on saadud enne selle kriitilisse ossa sisenemist ja seejärel selle vabastamist.
  • Kuna igal ajahetkel on selle kriitilises osas ainult üks lõime, pole võistlustingimusi ja andmed jäävad alati järjepidevaks.

Semafooride 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 meetod, 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.

Mutexi puudused

Siin on Mutexi miinused / puudused

  • Kui niit saab luku ja läheb magama või kui see on ära hoitud, ei pruugi teine ​​lõng edasi liikuda. See võib viia nälga.
  • Seda ei saa lukustada ega avada erinevast kontekstist kui see, mis selle omandas.
  • Kriitilises jaotises peaks korraga olema lubatud ainult üks lõim.
  • Tavaline rakendamine võib põhjustada ooterežiimi hõivamise, mis raiskab protsessori aega.