Den grundlæggende forskel mellem semafor og mutex er, at semaforen er en signalmekanisme, dvs. processer udfører ventet () og signal () -operationen for at angive, om de erhverver eller frigiver ressourcen, mens Mutex er låsemekanisme, skal processen erhverve låsen på mutex objekt, hvis den ønsker at erhverve ressourcen. Der er nogle flere forskelle mellem semaphore og mutex, lad os diskutere dem ved hjælp af sammenligning diagram vist nedenfor.
Sammenligningstabel
Grundlag for sammenligning | Semaphore | mutex |
---|---|---|
Grundlæggende | Semaphore er en signalmekanisme. | Mutex er en låsemekanisme. |
eksistens | Semaphore er en heltal variabel. | Mutex er et objekt. |
Fungere | Semaphore tillader flere programtråde at få adgang til en begrænset ressourceforekomst. | Mutex tillader flere program tråd at få adgang til en enkelt ressource, men ikke samtidigt. |
Ejendomsret | Semaphore værdi kan ændres ved enhver proces, der erhverver eller frigiver ressourcen. | Mutex objektlås frigives kun ved den proces, der har erhvervet låsen på den. |
Kategoriser | Semaphore kan kategoriseres i at tælle semafor og binær semaphore. | Mutex er ikke kategoriseret yderligere. |
Operation | Semaphore værdi ændres ved hjælp af vent () og signal () operation. | Mutex objekt er låst eller låst op af processen, der anmoder om eller frigiver ressourcen. |
Ressourcer besat | Hvis alle ressourcer bliver brugt, udfører processen, der anmoder om ressource, ventetid () -operation og blokerer sig til, at semaforetællingen bliver større end en. | Hvis en mutex-objekt allerede er låst, ventes processen, der beder om ressourcer, og køges af systemet, indtil lås frigives. |
Definition af semaphore
Semaphore er et processynkroniseringsværktøj. Semaphore er typisk en heltal variabel S, der initialiseres til antallet af ressourcer, der er til stede i systemet, og værdien af semaforen kan kun modificeres af to funktioner vente () og signal () bortset fra initialisering.
Ventetiden () og signal () -operationen ændrer semaphorens værdi udeleligt . Det betyder, at når en proces ændrer værdien af semaforen, kan ingen anden proces samtidigt ændre værdien af semaforen. Semaphore er kendetegnet ved operativsystemet i to kategorier Tæller semaforer og binær semaphore .
I Counting Semaphore initialiseres semaforens S-værdi til antallet af ressourcer s, der er til stede i systemet. Når en proces ønsker at få adgang til ressourcen, udfører den ventetid () på semaforen og formindsker værdien af semaforen med en. Når den frigiver ressourcen, udfører den signal () -operation på semaforen og øger værdien af semaforen med en. Når semaforetællingen går til 0, betyder det, at alle ressourcer er optaget af processerne. Hvis en proces skal bruge en ressource, når semaphore tæller er 0, udfører den ventetid () og bliver blokeret, indtil værdien af semaforen bliver større end 0.
I binær semaphore ligger værdien af semaforen mellem 0 og 1 . Det ligner mutex-lås, men mutex er en låsemekanisme, mens semaforen er en signalmekanisme. I binær semaphore, hvis en proces ønsker at få adgang til ressourcen, udfører den ventetid () på semaforen og formindsker værdien af semaforen fra 1 til 0. Når den frigiver ressourcen, udfører den et signal () -operation på semaforen og trin dens værdi til 1. Hvis værdien af semaforen er 0, og en proces vil få adgang til ressourcen, udfører den ventetid () -operationen og blokerer sig selv, indtil den aktuelle proces ved hjælp af ressourcerne frigiver ressourcen.
Definition af Mutex
Gensidig udelukkelse Objekt betegnes kort som Mutex. Fra begrebet gensidig udelukkelse kan vi forstå, at kun én proces ad gangen kan få adgang til den givne ressource. Mutex-objektet gør det muligt for de forskellige programtråde at bruge den samme ressource, men en ad gangen ikke samtidigt.
Når et program starter, anmoder systemet om at oprette et mutex-objekt til en given ressource. Systemet opretter mutex objektet med et unikt navn eller ID. Når programtråden vil bruge ressourcen, optager den lås på mutex objekt, udnytter ressourcen og efter brug frigør den låsningen på mutex objekt. Så er den næste proces tilladt at erhverve låsen på mutex objekt.
I mellemtiden har en proces erhvervet låsen på mutex objekt ingen anden tråd / proces kan få adgang til den ressource. Hvis mutex-objektet allerede er låst, skal processen, der ønsker at erhverve låsen på mutex objekt, vente og køles op af systemet, indtil mutex-objektet er låst op.
Nøgleforskelle mellem semaphore og mutex
- Semaphore er en signalmekanisme som ventetid () og signal () -operation udført på semaphore-variabel angiver, om en proces erhverver ressourcen eller frigiver ressourcen. På den anden side er mutex en låsemekanisme, for at erhverve en ressource skal en proces låse mutex objektet, og mens frigivelse af en ressourceproces skal låse op for mutex objekt.
- Semaphore er typisk en heltal variabel, mens mutex er en genstand .
- Semaphore tillader flere programtråde at få adgang til den endelige forekomst af ressourcer . På den anden side tillader Mutex flere programtråde at få adgang til en enkelt fælles ressource, men en ad gangen.
- Semaphore-variabelværdien kan ændres ved enhver proces, der erhverver eller frigiver ressource ved at udføre ventetid () og signal () -operation. På den anden side kan lås, der er erhvervet på mutexobjektet, kun frigives ved den proces, der har erhvervet låsen på mutex objekt.
- Semaphore er af to typer, der tæller semafor og binær semaphore, som er meget lig den mutex.
- Semaphore-variabelværdi ændres ved ventetid () og signal () -operation bortset fra initialisering. Det stumme objekt er imidlertid låst eller låst op ved processen, der erhverver eller frigiver ressourcen.
- Hvis alle ressourcer er erhvervet af processen, og ingen ressource er fri, vil processen, der ønsker at erhverve ressource, udføre ventetid () -operation på semaphore-variabel og blokerer sig selv, indtil antallet af semaphore bliver større end 0. Men hvis en mutex-objekt allerede er låst så processen der ønsker at erhverve ressource venter og får kø i systemet indtil ressource er frigivet og mutex objekt bliver låst op.
Konklusion:
Semaphore er en bedre mulighed, hvis der findes flere forekomster af ressourcer. I tilfælde af single shared resource er mutex et bedre valg.