„Mutex vs Semaphore“
„Mutex“ naudojami suteikti nuoseklią prieigą prie naujo dalyvio kodo dalies, kurios negalima vykdyti lygiagrečiai daugiau nei viena gija. „Mutex“ užtikrina, kad tik vienas kodas gali patekti į kontroliuojamą skyrių vienu metu. Norėdami gauti prieigą, kiti kodai verčiami laukti, kol išeis pirmasis kodas. Galite tai laikyti raktu į kambarį. Pirmiausia eina asmuo, turintis prieigą prie to rakto. Kol asmuo grįš atgal, niekas kitas negali patekti į tą kambarį.
Semaforas suteikia prieigą prie bendro išteklių vienu metu keliems vartotojams. Didėjant prie išteklių prieinamų vartotojų skaičiui, semaforų skaičius mažėja. Kai vartotojai pradeda leisti išteklius, semaforų skaičius vėl didėja. Jį naudoja programos, kurias reikia sinchronizuoti. Lygiagrečių vartotojų skaičius yra ribojamas remiantis semaforo riba. Semaforas gali būti suprantamas kaip panašių raktų, esančių panašiuose spynose į vieną kambarį, krūva, tačiau šių raktų skaičius yra ribotas. Žmonės, turintys šiuos raktus, gali dalintis kambariu.
Skirtumai tarp mutekso ir semaforo:
1. Mutex naudojamas abipusiam atskirtiui, tuo tarpu semaforas yra naudingas abiem atvejais
pranešimas ir abipusės išimtys.
2. „Mutex“ suteikia nuoseklią prieigą prie bendrų išteklių, tuo tarpu semaforas riboja
lygiagrečių prieigų skaičius.
3. „Mutex“ veikia vienu siūlu vienu metu, o semaforas valdo kelis siūlus
kartu.
4. „Mutex“ yra savininko koncepcija, kai procesą, kuris užrakina „mutex“, gali atlikti tik jis
vėl atidaryti. Nė vienas kitas procesas negali to padaryti. Bet semaforo atveju toks
apribojimai neegzistuoja.
5. Mutex yra fiksavimo mechanizmas, tuo tarpu semaforas yra signalinis mechanizmas su
prieigos prie šaltinio sinchronizavimas.
Santrauka:
1. Semantiniu ir teoriniu požiūriu muteksas ir semaforas yra vienodi. Gali būti
įgyvendinamas naudojant kitą, tačiau praktiškai abu yra skirtingi.
2. „Mutex“ yra ne kas kita, kaip semaforas, kurio skaičiaus vertė lygi vienetui.
3. „Mutex“ yra semaforas, turintis papildomų funkcijų, tokių kaip nuosavybės teisė ir prioriteto inversija
apsauga.
4. Semaforas yra abstraktus duomenų tipas, kuris kontroliuoja prieigą prie bendro šaltinio
keli procesai lygiagrečioje programavimo aplinkoje.
5. Semaforas yra naudojamas daugelyje operacinių sistemų kaip primityvus sinchronizavimas.
6. Tiek mutex, tiek semaforas yra branduolio ištekliai, naudojami tam tikslui
sinchronizavimas.