Priporočena, 2024

Izbira Urednika

Razlika med semaforjem in Mutexom

Sinhronizacija procesov ima pomembno vlogo pri ohranjanju skladnosti skupnih podatkov. Obe programski in strojni rešitvi sta prisotni pri reševanju problema kritičnih odsekov. Toda strojne rešitve za problem kritičnega odseka je zelo težko izvajati. V današnjem članku bomo razpravljali o dveh rešitvah, ki temeljijo na programski opremi, za obravnavo problema kritičnega odseka, npr. Semaphore in Mutex.

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 primerjavoSemaphoreMutex
OsnovnoSemaphore je signalni mehanizem.Mutex je zaklepni mehanizem.
ObstojSemaphore je cela števka.Mutex je objekt.
FunkcijaSemaphore 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štvoVrednost 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.
KategorizirajSemaphore je mogoče razvrstiti v semafor in binarni semafor.Mutex ni nadalje kategoriziran.
OperacijaVrednost 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

  1. 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.
  2. Semaphore je običajno celo število, medtem ko je mutex objekt .
  3. 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.
  4. 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.
  5. Semaphore so dveh vrst, ki štejejo semafor in binarni semafor, ki je precej podoben mutexu.
  6. 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.
  7. Č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.

Top