Mutex vs. semafori
Mutex-laitteita käytetään järjestämään pääsy paluukoodin osaan, jota ei voida suorittaa samanaikaisesti useammalla kuin yhdellä säieellä. Mutex varmistaa, että vain yksi koodi pääsee ohjattavaan osaan kerrallaan. Päästäksesi muihin koodeihin odotetaan, kunnes ensimmäinen koodi poistuu. Voit pitää sitä huoneen avaimena. Henkilö, jolla on pääsy avaimeen, menee ensin. Kunnes henkilö palaa takaisin, kukaan muu ei pääse kyseiseen huoneeseen.
Semafori antaa pääsyn jaettuun resurssiin useille käyttäjille samanaikaisesti. Kun resursseja käyttävien käyttäjien lukumäärä kasvaa, semaforimäärät vähenevät. Kun käyttäjät alkavat vapauttaa resurssia, semaforimäärä alkaa nousta uudelleen. Sitä käytetään sovelluksissa, jotka vaativat synkronoinnin. Samanaikaisten käyttäjien määrää rajoitetaan semaforirajan perusteella. Semaforia voidaan ajatella nippuina samanlaisina avaimina saman huoneen lukkoihin, mutta näiden avainten lukumäärä on rajoitettu. Ihmiset, joilla on nämä avaimet, voivat jakaa huoneen.
Erot mutexin ja semaforin välillä:
1. Mutexiä käytetään vastavuoroiseen poissulkemiseen, kun taas semafori on hyödyllinen molemmissa tapauksissa
ilmoitus ja keskinäiset poissulkemiset.
2. Mutex tarjoaa pääsyn sarjaan yleisiin resursseihin, kun taas semafori asettaa rajan
samanaikaisten käyttöoikeuksien lukumäärä.
3. Mutex toimii yhdellä säieellä kerrallaan, kun taas semafori hallitsee useita säikeitä
yhdessä.
4. Mutexillä on käsite omistajasta, jossa vain mutexin lukitseva prosessi voi tapahtua
avaa se uudelleen. Mikään muu prosessi ei voi tehdä niin. Mutta semaforin tapauksessa sellainen
rajoituksia ei ole.
5. Mutex on lukitusmekanismi, kun taas semafori on signalointimekanismi
suhteessa resurssien saatavuuden synkronointiin.
Yhteenveto:
1. Semanttisesti ja teoriassa sekä mutex että semafor ovat samat. Yksi voi olla
toteutettu toisella, mutta käytännössä molemmat ovat erilaisia.
2. Mutex ei ole muuta kuin semafori, jonka laskenta-arvo on yhtä.
3. Mutex on semafori, jolla on lisäominaisuuksia, kuten omistajuus ja prioriteetin käännös
suojaus.
4. Semafori on abstrakti tietotyyppi, joka hallitsee pääsyä yhteiseen resurssiin
useita prosesseja rinnakkaisessa ohjelmointiympäristössä.
5. Semafori löytää käytön monissa käyttöjärjestelmissä synkronoinnin primitiivinä.
6. Sekä mutex että semafor ovat ytimen resursseja, joita käytetään tarkoitukseen
tahdistus.