Mutex vs semafor
Mutexit kasutatakse serialiseeritud juurdepääsu saamiseks uuesti siseneja koodi osale, mida ei saa paralleelselt teostada rohkem kui ühe lõimega. Mutex tagab, et kontrollitavale sektsioonile pääseb korraga ainult ühele koodile. Juurdepääsuks peavad teised koodid ootama, kuni esimene kood väljub. Võite seda pidada ruumi võtmeks. Kõigepealt läheb sellele võtmele juurdepääsu omav inimene. Kuni ajani, mil inimene tagasi naaseb, ei pääse keegi teine sellesse ruumi.
Semafor võimaldab mitmele kasutajale üheaegselt juurdepääsu ühisele ressursile. Kui ressursile juurde pääsevate kasutajate arv suureneb, väheneb semafooride arv. Kui kasutajad hakkavad ressurssi vabastama, hakkab semaforide arv uuesti tõusma. Seda kasutavad rakendused, mis vajavad sünkroonimist. Samaaegsete kasutajate arv on piiratud semafori limiidi alusel. Semafori võib käsitada hunnikuna sarnaseid võtmeid sarnaste lukkudega ühele toale, kuid nende võtmete arv on piiratud. Inimesed, kellel on need võtmed, saavad tuba jagada.
Erinevused mutexi ja semafori vahel:
1. Mutexi kasutatakse vastastikuseks välistamiseks, samas kui semafor leiab mõlemal juhul oma kasulikkust
teatamine ja vastastikused välistamised.
2. Mutex pakub jadapääsu ühistele ressurssidele, semafor aga piirab seda
samaaegsete juurdepääsude arv.
3. Mutex töötab korraga ühe lõimega, samal ajal kui semafor haldab mitut lõime
koos.
4. Mutexil on omaniku kontseptsioon, kus ainult mutexi lukustamise protsess saab toimuda
avage see uuesti. Ükski teine protsess ei saa seda teha. Kuid semafori puhul selline
piiranguid ei eksisteeri.
5. Mutex on lukustusmehhanism, samas kui semafor on signaalimismehhanism koos
ressursile juurdepääsu sünkroonimise austus.
Kokkuvõte:
1. Semantiliselt ja teoreetiliselt on nii mutex kui ka semafor samad. Üks võib olla
rakendatud kasutades teist, kuid praktiliselt mõlemad on erinevad.
2. Mutex pole midagi muud kui semafor, mille loendusväärtus on võrdne ühega.
3. Mutex on semafoor, millel on lisavõimalused, näiteks omandiline kuuluvus ja prioriteetide ümberpööramine
kaitse.
4. Semafor on abstraktne andmetüüp, mis kontrollib juurdepääsu ühisele ressursile
mitu protsessi paralleelses programmeerimiskeskkonnas.
5. Semafor leiab sünkroniseerimise primitiivina kasutamist paljudes opsüsteemides.
6. Nii mutex kui ka semafor on tuumaressursid, mida kasutatakse selleks
sünkroniseerimine.