Rekomenduojama, 2024

Redaktoriaus Pasirinkimas

Skirtumas tarp Semaphore ir Mutex

Procesų sinchronizavimas atlieka svarbų vaidmenį išlaikant bendrų duomenų nuoseklumą. Tiek programinės įrangos, tiek techninės įrangos sprendimai yra skirti kritinės sekcijos problemai spręsti. Tačiau labai sudėtinga įgyvendinti kritinių sekcijų problemos techninius sprendimus. Šiandieniniame straipsnyje aptarsime du programinės įrangos sprendimus, skirtus spręsti kritinės sekcijos problemą, ty Semaforą ir Mutex.

Pagrindinis skirtumas tarp semaforo ir mutex yra tas, kad semaforas yra signalizavimo mechanizmas, ty procesai atlieka laukimo () ir signalo () operaciją, nurodydami, ar jie įsigyja ar atleidžia išteklį, o Mutex yra užrakinimo mechanizmas, procesas turi būti užrakintas mutex objektas, jei jis nori įsigyti išteklių. Yra dar daugiau skirtumų tarp semaforo ir mutex, aptarkime juos žemiau pateiktoje palyginimo diagramoje.

Palyginimo diagrama

Palyginimo pagrindasSemaforasMutex
PagrindinisSemaforas yra signalizacijos mechanizmas.Mutex yra fiksavimo mechanizmas.
EgzistavimasSemaforas yra sveikasis skaičius.Mutex yra objektas.
FunkcijaSemaforas leidžia daugeliui programų sričių pasiekti ribotą išteklių pavyzdį.„Mutex“ leidžia keliems programos siūlams pasiekti vieną šaltinį, bet ne vienu metu.
NuosavybėSemaforo vertę galima keisti bet kuriuo būdu, kuris įgyja arba atleidžia išteklį.„Mutex“ objekto užraktas atleidžiamas tik tuo metu, kai jį užfiksavo užraktas.
KategorizuotiSemaforą galima suskirstyti į skaičiavimo semaforą ir dvejetainį semaforą.„Mutex“ nėra kategorizuota toliau.
OperacijaSemaforo vertė modifikuojama naudojant laukimo () ir signalo () operaciją.„Mutex“ objektas yra užrakintas arba atrakintas pagal procesą, kuriame prašoma arba atleidžiama ištekliai.
Užimami ištekliaiJei naudojami visi ištekliai, procesas, reikalaujantis išteklių, atlieka laukimo () operaciją ir užblokuoja save, kol semaforų skaičius tampa didesnis nei vienas.Jei „mutex“ objektas jau yra užrakintas, procesas, reikalaujantis išteklių, laukia ir eilėje susideda iš sistemos, kol bus paleistas užraktas.

Semaforo apibrėžimas

Semaforas yra proceso sinchronizavimo įrankis. Semaforas paprastai yra sveikasis skaičius kintamasis S, kuris inicijuojamas sistemoje esančių išteklių skaičiumi, o semaforo vertę gali keisti tik dvi funkcijos: laukti () ir signalas (), išskyrus inicijavimą.

Laukimo () ir signalo () operacija iš dalies keičia semaforo vertę. Tai reiškia, kad kai procesas keičia semaforo vertę, nė vienas kitas procesas negali vienu metu modifikuoti semaforo vertės. Semaforą išskiria operacinė sistema dviejose kategorijose: Semaforų ir Binarinės semaforo skaičiavimas .

Semaforo skaičiavimo metu semaforo S reikšmė inicijuojama sistemoje esančių išteklių skaičiumi . Kai procesas nori pasiekti išteklius, jis atlieka laukimo () operaciją semafore ir sumažina semaforo vertę vienu. Išleidžiant išteklį, jis atlieka signalo () operaciją semafore ir padidina semaforo vertę vienu. Kai semaforo skaičius eina į 0, tai reiškia, kad visus išteklius užima procesai. Jei procesas turi naudoti išteklius, kai semaforo skaičius yra 0, jis atlieka laukimą () ir užblokuoja, kol semaforo vertė tampa didesnė nei 0.

Binariniame semafore semaforo vertė svyruoja tarp 0 ir 1 . Tai panaši į „mutex“ užraktą, bet „mutex“ yra užrakinimo mechanizmas, o semaforas yra signalizavimo mechanizmas. Dvejetainiame semafore, jei procesas nori pasiekti išteklius, jis atlieka laukimo () operaciją semafore ir sumažina semaforo vertę nuo 1 iki 0. Išleidžiant išteklį, jis atlieka signalo () operaciją semafore ir žingsniai jos vertė iki 1. Jei semaforo reikšmė yra 0 ir procesas, kuriuo norima pasiekti išteklius, jis atlieka laukimo () operaciją ir blokuoja save, kol dabartinis procesas, naudojant išteklius, išleidžia išteklius.

Mutex apibrėžimas

Savitarpio išskyrimo objektas netrukus vadinamas „Mutex“. Iš sąvokos „abipusė atskirtis“ galime suprasti, kad tik vienas procesas vienu metu gali pasiekti tam tikrą išteklių. „Mutex“ objektas leidžia daugeliui programų sričių naudoti tą patį šaltinį, bet vieną vienu metu ne vienu metu.

Kai programa pradeda, paprašykite sistemos sukurti tam tikram ištekliui mutex objektą. Sistema sukuria mutex objektą su unikaliu pavadinimu arba ID. Kai programos siūlai nori naudoti išteklių, kurį jis užima užraktu mutex objekte, naudoja resursą ir po naudojimo atleidžia mutex objekto užraktą. Tada kitam procesui leidžiama įsigyti mutex objekto užraktą.

Tuo tarpu procesas buvo įjungtas į „mutex“ objekto užraktą. Jei „mutex“ objektas jau yra užrakintas, procesas, kuriuo norima įsigyti „mutex“ objekto užraktą, turi palaukti, o sistema turi būti eilėje, kol bus išjungtas „mutex“ objektas.

Pagrindiniai Semaforo ir Mutexo skirtumai

  1. Semaforas yra signalizacijos mechanizmas, kaip laukimo () ir signalo () operacija, atliekama semaforo kintamajame, parodo, ar procesas yra išteklių įsigijimas, ar išleidimas iš išteklių. Kita vertus, „mutex“ yra užrakinimo mechanizmas, nes norint įsigyti išteklių, procesas turi užrakinti „mutex“ objektą ir, atleidžiant ištekliaus procesą, turi atrakinti „mutex“ objektą.
  2. Semaforas paprastai yra sveikasis skaičius, o mutex yra objektas .
  3. Semaforas leidžia daugeliui programų sričių pasiekti ribotą išteklių egzempliorių . Kita vertus, „Mutex“ leidžia daugeliui programų sričių pasiekti vieną bendrą resursą, bet vieną.
  4. Semaforo kintamąją vertę galima keisti bet kuriuo procesu, kuris įgyja arba išleidžia išteklius atliekant laukimo () ir signalo () operaciją. Kita vertus, „mutex“ objekte užfiksuotas užraktas gali būti atleistas tik tuo atveju, kai buvo įjungtas „mutex“ objekto užraktas.
  5. Semaforas yra dviejų tipų, skaitančių semaforą ir dvejetainį semaforą, kuris yra gana panašus į mutex.
  6. Semaforo kintamąją vertę modifikuoja laukimo () ir signalo () operacija, išskyrus inicijavimą. Tačiau nutildymo objektas yra užrakintas arba atrakintas, kai procesas įgyja arba atleidžia išteklį.
  7. Jei visi ištekliai įgyja procesą, o jokie ištekliai nėra laisvi, procesas, norintis įsigyti ištekliaus, atlieka laukimo () operaciją semaforo kintamajame ir blokuoja save, kol semaforo skaičius tampa didesnis nei 0. Tačiau, jei jau yra mutex objektas užrakintas, tada procesas, norintis įsigyti išteklių, laukia sistemos, kol sistema bus palikta eilėje, kol išteklius bus išleistas ir „mutex“ objektas bus atrakintas.

Išvada:

Semaforas yra geresnis variantas tuo atveju, jei yra daug išteklių. Vieno bendro išteklių atveju mutex yra geresnis pasirinkimas.

Top