Ieteicams, 2024

Redaktora Izvēle

Starpība starp Semaforu un Mutex

Procesu sinhronizācijai ir svarīga nozīme, lai saglabātu kopīgu datu konsekvenci. Lai risinātu kritisko sadaļu problēmu, ir pieejami gan programmatūras, gan aparatūras risinājumi. Taču kritisko sadaļu problēmas risinājumi ir diezgan grūti īstenojami. Šodienas rakstā mēs apspriedīsim divus programmatūras risinājumus, lai risinātu kritisko sadaļu problēmu, piemēram, Semaforu un Mutex.

Galvenā atšķirība starp semaforu un mutex ir tā, ka semafors ir signalizācijas mehānisms, ti, procesi veic gaidīšanas () un signāla () darbību, lai norādītu, vai tie iegūst vai atbrīvo resursus, kamēr Mutex ir bloķēšanas mehānisms, procesam jāiegūst bloķēšana mutex objekts, ja tas vēlas iegūt resursu. Ir dažas atšķirības starp semaforu un mutex, apspriedīsim tās ar zemāk redzamās salīdzināšanas diagrammas palīdzību.

Salīdzinājuma diagramma

Salīdzinājuma pamatsSemaforsMutex
PamataSemafors ir signalizācijas mehānisms.Mutex ir bloķēšanas mehānisms.
PastāvībaSemafors ir vesels skaitlis.Mutex ir objekts.
FunkcijaSemafors ļauj vairākiem programmu pavedieniem piekļūt ierobežotam resursu gadījumam.Mutex ļauj vairākiem programmu pavedieniem piekļūt vienam resursam, bet ne vienlaicīgi.
ĪpašumtiesībasSemafora vērtību var mainīt ar jebkuru procesu, kas iegūst vai atbrīvo resursus.Mutex objekta bloķēšanu atbrīvo tikai process, kas to ir ieguvis.
KategorizētSemaforu var iedalīt semaforā un binārajā semaforā.Mutex nav kategorizēts tālāk.
DarbībaSemafora vērtību pārveido, izmantojot gaidīšanas () un signāla () darbību.Mutex objekts tiek bloķēts vai atbloķēts ar procesu, kas pieprasa vai atbrīvo resursus.
ResursiJa tiek izmantoti visi resursi, process, kas pieprasa resursus, veic gaidīšanas () darbību un bloķē sevi, līdz semaforu skaits kļūst lielāks par vienu.Ja mutex objekts jau ir bloķēts, process, kas pieprasa resursus, tiek gaidīts un rindā sastādīts, līdz sistēma tiek bloķēta.

Semafora definīcija

Semafors ir procesa sinhronizācijas rīks. Semafors parasti ir vesels skaitļa mainīgais S, kas tiek inicializēts sistēmā pieejamo resursu skaitam, un semafora vērtību var modificēt tikai ar divām funkcijām - () un signālu (), izņemot inicializāciju.

Gaidīšanas () un signāla () darbība mainās no semafora vērtības. Tas nozīmē, ka tad, kad process maina semafora vērtību, neviens cits process nevar vienlaicīgi mainīt semafora vērtību. Semaforu operētājsistēma atšķir divās kategorijās: Semaforu un Binārā semafora skaitīšana .

Semafora skaitīšanas laikā semafors S vērtība tiek inicializēta ar sistēmā esošo resursu skaitu . Ikreiz, kad process vēlas piekļūt resursiem, viņš semaforā veic gaidīšanas () operāciju un samazina semafora vērtību ar vienu. Kad tas atbrīvo resursus, tas veic signāla () darbību semaforā un palielina semafora vērtību ar vienu. Kad semaforu skaits iet uz 0, tas nozīmē, ka visi resursi ir aizņemti ar procesiem. Ja procesam ir jāizmanto resurss, kad semaforu skaits ir 0, tas izpilda gaidīšanas () un saņem bloķēšanu, līdz semafora vērtība kļūst lielāka par 0.

Binārā semaforā semafora vērtība ir no 0 līdz 1 . Tas ir līdzīgs mutex slēdzenim, bet mutex ir bloķēšanas mehānisms, bet semafors ir signalizācijas mehānisms. Binārajā semaforā, ja process vēlas piekļūt resursiem, viņš semaforā veic gaidīšanas () operāciju un samazina semafora vērtību no 1 līdz 0. Kad tas atbrīvo resursu, tas veic signāla () darbību semaforā un soli. tā vērtība uz 1. Ja semafora vērtība ir 0 un process vēlas piekļūt resursam, ko tas veic, jāgaida () darbība un bloķē sevi, līdz pašreizējais process, izmantojot resursus, atbrīvo resursus.

Mutex definīcija

Savstarpējas izslēgšanas objekts tiek saukts par Mutex. No termina “savstarpēja izslēgšana” mēs varam saprast, ka tikai viens process vienlaicīgi var piekļūt dotajam resursam. Mutex objekts ļauj vairākiem programmu pavedieniem izmantot vienu un to pašu resursu, bet vienu reizi ne vienlaicīgi.

Kad programma sāk, pieprasiet, lai sistēma izveido mutex objektu konkrētam resursam. Sistēma izveido mutex objektu ar unikālu nosaukumu vai ID. Ikreiz, kad programmas pavediens vēlas izmantot resursus, kas aizņem bloķēšanu mutex objektā, izmanto resursus un pēc lietošanas atbrīvo bloķēšanu uz mutex objektu. Tad nākamais process var iegūt mutex objekta bloķēšanu.

Tikmēr process ir ieguvis atslēgu mutex objektā, un neviens cits pavediens / process nevar piekļūt šim resursam. Ja mutex objekts jau ir bloķēts, procesam, kas vēlas iegūt mutex objekta slēdzeni, ir jāgaida, un sistēma ir rindā, līdz mutex objekts tiek atbloķēts.

Galvenās atšķirības starp Semaforu un Mutexu

  1. Semafors ir signalizācijas mehānisms kā gaidīšanas () un signāla () darbība, kas veikta ar semafora mainīgo, norāda, vai process iegūst resursus vai atbrīvo resursus. No otras puses, mutex ir bloķēšanas mehānisms, jo, lai iegūtu resursus, procesam ir nepieciešams bloķēt mutex objektu un, atlaižot resursu, ir jāatslēdz mutex objekts.
  2. Semafors parasti ir vesels skaitlis, bet mutex ir objekts .
  3. Semafors ļauj vairākiem programmu pavedieniem piekļūt ierobežotajam resursu gadījumam . No otras puses, Mutex ļauj vairākiem programmu pavedieniem piekļūt vienam kopīgam resursam, bet pa vienam.
  4. Semafora mainīgo vērtību var mainīt ar jebkuru procesu, kas iegūst vai izlaiž resursus, veicot gaidīšanas () un signāla () darbību. No otras puses, mutex objektā iegūtā atslēga var tikt atbrīvota tikai ar procesu, kas ir ieguvis atslēgu mutex objektā.
  5. Semafors ir divu veidu skaitīšanas semafors un binārais semafors, kas ir diezgan līdzīgs mutexam.
  6. Semafora mainīgo vērtību modificē gaidīšanas () un signāla () darbība, izņemot inicializāciju. Tomēr izslēgšanas objekts tiek bloķēts vai atbloķēts, iegūstot vai atbrīvojot resursu.
  7. Ja visi resursi tiek iegūti procesā, un neviens resurss nav brīvs, tad process, kas vēlas iegūt resursus, veic nogaidīšanas () operāciju uz semafora mainīgo un bloķē sevi, līdz semafora skaits kļūst lielāks par 0. Bet, ja mutex objekts jau ir bloķēts, tad process, kas vēlas iegūt resursus, gaida un saņem rindu, līdz sistēma atbrīvojas, un mutex objekts tiek atbloķēts.

Secinājums:

Semafors ir labāks risinājums, ja ir pieejami vairāki resursi. Vienota kopīga resursa gadījumā mutex ir labāka izvēle.

Top