Osnovna razlika med semaforjem in mutexom je, da je semafor signalni mehanizem, tj. Procesi, ki izvajajo čakajo () in signal () operacijo, ki kaže, ali pridobivajo ali sproščajo vir, medtem ko je Mutex mehanizem za zaklepanje, postopek mora pridobiti zaklepanje mutex predmet, če želi pridobiti vir. Med semaforji in mutexom je še nekaj razlik, razpravljamo o njih s pomočjo primerjalne tabele, prikazane spodaj.
Primerjalna tabela
Podlaga za primerjavo | Semaphore | Mutex |
---|---|---|
Osnovno | Semaphore je signalni mehanizem. | Mutex je zaklepni mehanizem. |
Obstoj | Semaphore je cela števka. | Mutex je objekt. |
Funkcija | Semaphore omogočajo več programskih niti dostop do končnega primerka virov. | Mutex omogoča večkratni programski niti dostop do enega vira, ne pa hkrati. |
Lastništvo | Vrednost semaforja se lahko spremeni s katerim koli postopkom, s katerim pridobite ali sprostite vir. | Zaklepanje objekta Mutex se sprosti samo s postopkom, ki je pridobil ključavnico na njem. |
Kategoriziraj | Semaphore je mogoče razvrstiti v semafor in binarni semafor. | Mutex ni nadalje kategoriziran. |
Operacija | Vrednost semaforja se spremeni z uporabo čakanja () in signala (). | Objekt Mutex je zaklenjen ali odklenjen s procesom, ki zahteva ali sprosti vir. |
Sredstva zasedena | Če so uporabljeni vsi viri, proces, ki zahteva vire, izvede operacijo wait () in blokira sam, dokler semafor ne postane večji od enega. | Če je objekt mutex že zaklenjen, proces, ki zahteva vire, čaka in čaka v redu, dokler se ne sprosti zaklepanje. |
Opredelitev semaforja
Semaphore je orodje za sinhronizacijo procesov. Semaphore je običajno celo število spremenljivke S, ki se inicializira s številom virov, ki so prisotni v sistemu, vrednost semaforja pa lahko spremeni le z dvema funkcijama wait () in signalom (), razen inicializacije.
Operacija čakanja () in signala () spreminjata vrednost semaforja nedeljivo . To pomeni, da kadar proces spreminja vrednost semaforja, noben drug postopek ne more istočasno spreminjati vrednosti semaforja. Semaphore odlikuje operacijski sistem v dveh kategorijah: štetje semaforjev in binarni semafor .
Pri štetju semaforja se vrednost semaforja S inicializira na število virov, ki so prisotni v sistemu. Kadarkoli proces želi dostopiti do sredstva, izvede čakanje () operacijo na semaforju in zmanjša vrednost semaforja za eno. Ko sprosti vir, izvede signal () na semaforju in poveča vrednost semaforja za eno. Ko število semaforjev preide v vrednost 0, pomeni, da so procesi zasedeni z vsemi viri. Če mora proces uporabiti vir, ko je število semaforjev 0, izvede čakanje () in se blokira, dokler vrednost semaforja ne postane večja od 0.
V binarnem semaforju je vrednost semaforja med 0 in 1 . Podobno je zaklepu mutex, vendar je mutex mehanizem za zaklepanje, medtem ko je semafor signalni mehanizem. V binarnem semaforju, če želi proces dostopati do vira, izvede čakanje () operacijo na semaforju in zmanjša vrednost semaforja z 1 na 0. Ko sprosti vir, izvede signal () operacijo na semaforju in povečuje njegova vrednost na 1. Če je vrednost semaforja 0 in proces želi dostopiti do vira, izvede čakanje () operacijo in se blokira, dokler trenutni proces z uporabo virov ne sprosti sredstva.
Opredelitev Mutexa
Objekt vzajemnega izključevanja se v kratkem imenuje Mutex. Iz pojma vzajemne izključenosti lahko razumemo, da lahko le en proces naenkrat dostopa do določenega vira. Objekt mutex omogoča, da več niti programa uporablja isti vir, vendar ne istočasno.
Ko se program zažene, zahteva, da sistem ustvari mutex objekt za dani vir. Sistem ustvari mutex objekt z edinstvenim imenom ali ID-jem. Kadar želi nit programa uporabiti vir, ki ga zavzame, zakleni na mutex objektu, uporabi vir in po uporabi, sprosti zaklepanje mutex objekta. Nato je naslednjemu postopku dovoljeno pridobiti zaklep na mutex predmetu.
Medtem pa je proces pridobil zaklep na mutex objektu, ki ga noben drug niti / proces ne more dostopati do tega vira. Če je objekt mutex že zaklenjen, mora proces, ki želi pridobiti zaklep na mutex objektu, počakati in ga sistem postavi v čakalno vrsto, dokler se mutex objekt ne odklene.
Ključne razlike med semaforjem in Mutexom
- Semaphore je signalni mehanizem, medtem ko operacija čakanja () in signala (), ki se izvaja na spremenljivki semaforja, navaja, ali proces pridobi vir ali sprosti vir. Na drugi strani pa je mutex mehanizem za zaklepanje, saj za pridobitev vira proces mora zakleniti objekt mutex in medtem ko sprostitev procesa vira, mora odkleniti mutex objekt.
- Semaphore je običajno celo število, medtem ko je mutex objekt .
- Semaphore omogoča več niti programa dostop do končnega primerka virov . Po drugi strani Mutex omogoča, da več niti programa dostopa do enega skupnega vira, toda enega za drugim.
- Vrednost spremenljivke semaforja se lahko spremeni s katerim koli postopkom, ki pridobi ali sprosti vir z izvajanjem operacije čakanja () in signala (). Po drugi strani pa lahko zaklep, pridobljen na objektu mutex, sprosti le proces, ki je pridobil zaklep na mutex objektu.
- Semaphore so dveh vrst, ki štejejo semafor in binarni semafor, ki je precej podoben mutexu.
- Vrednost spremenljivke semaforja se spremeni s postopkom čakanja () in signala (), razen za inicializacijo. Vendar pa je objekt za utišanje zaklenjen ali odklenjen s procesom, s katerim pridobite ali sprostite vir.
- Če proces pridobi vse vire in noben vir ni prost, potem proces, ki želi pridobiti operacijo počakaj () na spremenljivki semaforja in blokira, dokler število semaforjev ne postane večje od 0. Če pa je objekt mutex že zaklenjen, potem proces, ki želi pridobiti vir, čaka in ga sistem postavi v čakalno vrsto, dokler se vir ne sprosti in objekt mutex ne odklene.
Sklep:
Semaphore je boljša možnost, če je na voljo več primerov virov. V primeru enotnega skupnega sredstva mutex je boljša izbira.