Mutex ja Semaphore
Mutex vs. Semaphore
Mutexia käytetään tarjoamaan sarjapohjainen pääsy osaan uudelleenkäyttäjäkoodia, jota ei voida suorittaa rinnakkain useammalla kuin yhdellä langalla. Mutex varmistaa, että vain yksi koodi voi käyttää ohjattua osaa kerrallaan. Jotta päästäisiin sisään, muita koodeja odotetaan, kunnes ensimmäinen koodi poistuu. Voit pitää sitä avaimenä huoneena. Käyttäjä, jolla on pääsy kyseiseen avaimeen, tulee ensin ensin. Siihen asti, kun henkilö palaa takaisin, kukaan muu ei pääse kyseiseen huoneeseen.
Semaphore tarjoaa pääsyn yhteiseen resurssiin useille käyttäjille samanaikaisesti. Kun resurssien käyttöä käyttävien käyttäjien määrä kasvaa, semaforien määrä vähenee. Kun käyttäjät aloittavat resurssien vapauttamisen, semaforien määrä alkaa jälleen nousta. Sitä käytetään sovelluksissa, jotka edellyttävät synkronointia. Samanaikaisten käyttäjien määrä on rajoitettu semaforirajan perusteella. Semafori voidaan ajatella samanlaisiksi kuin samankaltaisten lukkojen sarja yhteen huoneeseen, mutta nämä avaimet ovat rajallisia. Ihmiset, joilla on nämä avaimet, voivat jakaa huoneen.
Mutexin ja semaforin väliset erot:
1. Mutexia käytetään keskinäiseen syrjäytymiseen, kun taas semaforilla on hyödyllisyys molemmissa tapauksissa
ilmoitus ja keskinäiset poissulkemiset.
2. Mutex tarjoaa pääsyn yhteisiin resursseihin, kun taas semaphore asettaa rajan
rinnakkaiskäytön määrä.
3. Mutex toimii yhden kierteen ajan kerrallaan, kun semaphore hoitaa useita kierteitä
yhdessä.
4. Mutexilla on käsite omistajasta, jossa prosessi, joka lukitsee muteeksin, voi vain
avaa se uudelleen. Kukaan muista prosesseista ei voi tehdä niin. Mutta semaforin tapauksessa tällainen
rajoituksia ei ole olemassa.
5. Mutex on lukitusmekanismi, kun taas semaforilla on merkinantomekanismi
suhteessa resurssiin pääsyn synkronointiin.
Yhteenveto:
1. Semanttinen ja teoriassa sekä muteeksi että semaforista ovat samat. Yksi voi olla
toteutetaan toisella, mutta käytännössä molemmat ovat erilaisia.
2. Mutex ei ole muuta kuin semaforia, jonka laskentaarvo on yhtä suuri kuin yksi.
3. Mutex on semahtori, jolla on lisäominaisuuksia, kuten omistajuus ja prioriteettiversio
suojaus.
4. Semaphore on abstrakti tietotyyppi, joka ohjaa pääsyn yhteiseen resurssiin
useita prosesseja rinnakkaisessa ohjelmointiympäristössä.
5. Semaphore käyttää sitä useissa käyttöjärjestelmissä synkronoinnin alkeellisina.
6. Sekä mutex että semafor ovat ytimen resursseja, joita käytetään seuraaviin tarkoituksiin:
synkronointi.