Tofauti Kati ya Semaphore na Mutex

Tofauti Kati ya Semaphore na Mutex
Tofauti Kati ya Semaphore na Mutex

Video: Tofauti Kati ya Semaphore na Mutex

Video: Tofauti Kati ya Semaphore na Mutex
Video: Fahamu tofauti ya Chui na Duma na balaa lao 2024, Julai
Anonim

Semaphore vs Mutex

Semaphore ni muundo wa data unaotumika kuhakikisha kuwa michakato mingi haifikii rasilimali ya kawaida au sehemu muhimu kwa wakati mmoja, katika mazingira ya upangaji programu sambamba. Semaphores hutumiwa kuzuia kufuli zilizokufa na hali ya mbio. Mutex (Kitu cha Kutengwa kwa Pamoja) pia hutumika kuzuia ufikiaji wa rasilimali ya pamoja kwa wakati mmoja kwa michakato kadhaa inayofanana.

Semaphore ni nini?

Semaphore ni muundo wa data ambao hutumiwa kutoa utengaji wa pande zote kwa sehemu muhimu. Semaphores kimsingi inasaidia shughuli mbili zinazoitwa wait (kihistoria inayojulikana kama P) na ishara (kihistoria inajulikana kama V). Operesheni ya kusubiri inazuia mchakato hadi semaphore ifunguliwe na operesheni ya ishara inaruhusu mchakato mwingine (thread) kuingia. Kila semaphore inahusishwa na foleni ya michakato ya kusubiri. Wakati operesheni ya kusubiri inaitwa na thread, ikiwa semaphore imefunguliwa, thread inaweza kuendelea. Ikiwa semaphore imefungwa wakati operesheni ya kusubiri inaitwa na thread, thread imefungwa na inapaswa kusubiri kwenye foleni. Uendeshaji wa ishara hufungua semaphore na ikiwa kuna thread tayari inasubiri kwenye foleni, mchakato huo unaruhusiwa kuendelea na ikiwa hakuna nyuzi zinazosubiri kwenye foleni ishara inakumbukwa kwa nyuzi zinazofuata. Kuna aina mbili za semaphores zinazoitwa mutex semaphores na semaphores za kuhesabu. Semaphores za Mutex huruhusu ufikiaji mmoja wa rasilimali na kuhesabu semaphores huruhusu nyuzi nyingi kufikia rasilimali (ambayo ina vitengo kadhaa vinavyopatikana).

Mutex ni nini?

Programu ya kompyuta inapoanzishwa, itaunda bubu na kuiambatanisha na nyenzo. Wakati rasilimali inatumiwa na thread, imefungwa na nyuzi nyingine haziwezi kuitumia. Ikiwa nyuzi nyingine inataka kutumia rasilimali hiyo hiyo, italazimika kufanya ombi. Kisha thread hiyo itawekwa kwenye foleni hadi thread ya kwanza imekamilika na rasilimali. Wakati thread ya kwanza imekamilika na rasilimali, lock itaondolewa na thread ambayo inasubiri kwenye foleni inaweza kupata upatikanaji wa rasilimali. Ikiwa kuna nyuzi nyingi zinazosubiri kwenye foleni, zinapewa ufikiaji kwa msingi wa mzunguko. Kwa kweli, wakati bubu inapobadilisha ufikiaji wa rasilimali kati ya nyuzi kadhaa, itaonekana kwani nyuzi nyingi zinatumia rasilimali kwa wakati mmoja. Lakini ndani ni thread moja tu ndiyo inayofikia nyenzo kwa wakati fulani.

Kuna tofauti gani kati ya Semaphore na Mutex?

Ingawa, semaphores na vitu bubu hutumika kufikia kutengwa kwa pamoja katika mazingira ya upangaji programu, vina tofauti fulani. Kitu cha bubu huruhusu tu nyuzi moja kutumia rasilimali au sehemu muhimu, ilhali semaphores huruhusu idadi iliyozuiliwa ya ufikiaji wa wakati mmoja kwa rasilimali (chini ya nambari ya juu inayoruhusiwa). Na vitu bubu, nyuzi zingine zinazotaka kufikia rasilimali hiyo zinapaswa kusubiri kwenye foleni, hadi uzi wa sasa ukamilike kwa kutumia rasilimali.

Ilipendekeza: