Deadlock vs Njaa
Tofauti kuu kati ya mkwamo na njaa ni sababu na uhusiano wa athari kati yao; ni mkwamo unaosababisha njaa. Tofauti nyingine ya kuvutia kati ya msuguano na njaa ni kwamba msuguano ni shida wakati njaa inaweza, wakati mwingine, kusaidia kutoka kwa msuguano. Katika ulimwengu wa kompyuta, wakati wa kuandika programu ya kompyuta kutakuwa na mchakato/nyuzi zaidi ya moja ambayo itaendesha kwa wakati mmoja mmoja baada ya mwingine ili kutimiza huduma inayohitajika kwa programu. Kwa hivyo, ili kuwa na mfumo wa haki, mpangaji programu anapaswa kuhakikisha kuwa michakato/nyuzi zote zitapokea au kupata ufikiaji wa kutosha kwa rasilimali wanazohitaji. Ikiwa sivyo, kutakuwa na msuguano, na itasababisha njaa baadaye. Kwa ujumla, mfumo wa haki hauna vikwazo au njaa. Vikwazo na njaa vitatokea hasa wakati nyuzi nyingi zinashindania rasilimali chache.
Deadlock ni nini?
Msimbo ni hali inayotokea wakati nyuzi au michakato miwili inaposubirina kukamilisha kazi. Watakata simu tu lakini hawataacha au kumaliza kazi yao. Katika sayansi ya kompyuta, vikwazo vinaweza kuonekana kila mahali. Katika hifadhidata ya muamala, wakati michakato miwili kila moja ndani ya muamala wake inasasisha safu mlalo mbili sawa za maelezo lakini kwa mpangilio tofauti, itasababisha mkwamo. Katika upangaji programu kwa wakati mmoja, mkwamo unaweza kutokea wakati hatua mbili zinazoshindana zitasubirina ili kuendelea mbele. Katika mifumo ya mawasiliano ya simu, mkwamo unaweza kutokea kutokana na upotevu au ufisadi wa mawimbi.
Kwa sasa, deadlock ni mojawapo ya tatizo kuu katika mifumo ya kuchakata vipengele vingi na kompyuta sambamba. Kama suluhu, mfumo wa kufunga unaoitwa ulandanishi wa mchakato unatekelezwa kwa programu na maunzi.
Njaa ni nini?
Kutoka kwa kamusi ya sayansi ya matibabu, njaa ni matokeo ya ukosefu mkubwa au jumla wa virutubishi vinavyohitajika kudumisha maisha. Vile vile, katika sayansi ya kompyuta, njaa ni tatizo linalojitokeza wakati nyuzi nyingi au michakato mingi inaposubiri rasilimali sawa, ambayo inaitwa deadlock.
Ili kuondokana na mkwamo, moja ya michakato au nyuzi lazima iache au irudishe nyuma ili thread au mchakato mwingine utumie rasilimali. Hili likiendelea kutokea na mchakato huo huo au uzi utalazimika kuacha au kurudi nyuma kila wakati huku ukiruhusu michakato mingine au nyuzi kutumia rasilimali, basi mchakato au uzi uliochaguliwa, ambao ulirudishwa nyuma utapitia hali inayoitwa njaa. Kwa hivyo, ili kupata kutoka kwa msuguano, njaa ni moja wapo ya suluhisho. Kwa hivyo, wakati mwingine njaa inaitwa aina ya kufuli. Wakati kuna michakato au nyuzi nyingi za kipaumbele cha juu, mchakato wa kipaumbele cha chini au nyuzi zitakufa kwa njaa kila wakati.
Kunaweza kuwa na njaa nyingi kama vile njaa ya rasilimali na njaa kwenye CPU. Kuna mifano mingi ya kawaida juu ya njaa. Wao ni shida ya Wasomaji-waandishi na shida ya wanafalsafa wa kula, ambayo ni maarufu zaidi. Kuna wanafalsafa watano kimya wameketi kwenye meza ya duara yenye bakuli za tambi. Uma huwekwa kati ya kila jozi ya wanafalsafa walio karibu. Kila mwanafalsafa lazima afikirie na kula. Hata hivyo, mwanafalsafa anaweza kula tambi tu wakati ana uma za kushoto na kulia.
The “Dining Philosophers”
Kuna tofauti gani kati ya Deadlock na Njaa?
Mchakato:
• Katika mkwamo, nyuzi au michakato miwili itasubiriana na zote hazitaendelea mbele.
• Katika njaa, nyuzi au michakato miwili au zaidi inaposubiri nyenzo sawa, moja itarudi nyuma na kuwaruhusu wengine watumie rasilimali kwanza na inayofuata uzi au mchakato wa njaa utajaribu tena. Kwa hivyo, minyororo au michakato yote itaendelea mbele hata hivyo.
Rudisha Nyuma:
• Katika mkwamo, nyuzi/michakato yenye kipaumbele cha juu, pamoja na nyuzi/michakato yenye kipaumbele cha chini, zitasubiriana kwa muda mrefu. Haina mwisho.
• Lakini, katika njaa, vipaumbele vya chini vitasubiri au kurudi nyuma lakini vipaumbele vya juu vitaendelea.
Kusubiri au Kufunga:
• Mkataba ni kusubiri kwa duara.
• Njaa ni aina ya kufuli na wakati mwingine husaidia kutoka kwenye mkwamo.
Maisha na Njaa:
• Mgongano husababisha njaa, lakini njaa haileti mkwamo.
Sababu:
• Mkataba utatokea kwa sababu ya kutengwa, kushikilia na kusubiri, hakuna kibali au kusubiri kwa mzunguko.
• Njaa hutokea kwa sababu ya uhaba wa rasilimali, usimamizi usiodhibitiwa wa rasilimali na vipaumbele vya mchakato.
Muhtasari:
Deadlock dhidi ya njaa
Tatizo na njaa ni baadhi ya matatizo yanayotokea kutokana na mbio za data na hali ya mbio zinazotokea wakati wa upangaji programu na pia kutekeleza maunzi. Katika msuguano, nyuzi mbili zitangoja kila mmoja bila kutekeleza wakati, kwa njaa, uzi mmoja utarudi nyuma na kuruhusu uzi mwingine kutumia rasilimali. Msuguano utasababisha njaa ilhali njaa itasaidia uzi kutoka kwenye mkwamo.