Deadlock vs Starvation
Pääasiallinen ero umpikujan ja nälänhädän välillä on niiden välinen syy-seuraussuhde; se on umpikuja, joka aiheuttaa nälkää. Toinen mielenkiintoinen ero umpikujan ja nälänhädän välillä on se, että umpikuja on ongelma, kun taas nälkä voi joskus auttaa pääsemään ulos umpikujasta. Tietokonemaailmassa tietokoneohjelmaa kirjoitettaessa tulee olemaan useampi kuin yksi prosessi/säie, jotka ajetaan samanaikaisesti peräkkäin täyttääkseen ohjelmalle vaaditun palvelun. Siksi reilun järjestelmän saamiseksi ohjelmoijan tulee varmistaa, että kaikki prosessit/säikeet saavat tai saavat riittävästi pääsyn tarvitsemiinsa resursseihin. Jos ei, tulee umpikuja, ja se johtaa myöhemmin nälkään. Yleensä oikeudenmukainen järjestelmä ei sisällä umpikujaa tai nälänhätää. Umpikuja ja nälänhätä tapahtuu pääasiassa silloin, kun monet säikeet kilpailevat rajallisista resursseista.
Mikä on umpikuja?
Umpikuminen on tila, joka ilmenee, kun kaksi säiettä tai prosessia odottavat toistensa suorittavan tehtävän loppuun. He vain katkaisevat puhelun, mutta eivät koskaan lopeta tai lopeta tehtäväänsä. Tietojenkäsittelytieteessä umpikujaa voi nähdä kaikkialla. Tapahtumatietokannassa, kun kaksi prosessia kukin oman tapahtumansa sisällä päivittää samat kaksi tietoriviä, mutta päinvastaisessa järjestyksessä, aiheuttaa lukkiutumisen. Samanaikaisessa ohjelmoinnissa umpikuja voi tapahtua, kun kaksi kilpailevaa toimintaa odottavat toistensa etenemistä eteenpäin. Tietoliikennejärjestelmissä umpikuja voi tapahtua signaalien katoamisen tai vioittumisen vuoksi.
Tällä hetkellä umpikuja on yksi monikäsittelyjärjestelmien ja rinnakkaislaskennan suurimmista ongelmista. Ratkaisuna toteutetaan prosessin synkronointiksi kutsuttu lukitusjärjestelmä ohjelmistoille ja laitteistoille.
Mitä on nälkä?
Lääketieteen sanakirjan mukaan nälkä on seurausta vakavasta tai täydellisestä elämän ylläpitämiseen tarvittavien ravintoaineiden puutteesta. Vastaavasti tietojenkäsittelytieteessä nälkä on ongelma, joka kohdataan, kun useat säikeet tai prosessit odottavat samaa resurssia, jota kutsutaan umpikujaksi.
Jotta ulos umpikujasta, yhden prosessin tai säikeen on luovuttava tai peruutettava, jotta toinen säie tai prosessi voi käyttää resurssia. Jos näin tapahtuu jatkuvasti ja saman prosessin tai säikeen on joka kerta luovuttava tai peruttava samalla, kun annetaan muiden prosessien tai säikeiden käyttää resurssia, niin valittu prosessi tai säiettä, joka käännetään takaisin, joutuu nälänhätätilanteen läpi. Siksi nälänhätä on yksi ratkaisu umpikujasta pääsemiseksi. Siksi joskus nälänhätää kutsutaan eräänlaiseksi eläimeksi. Kun korkean prioriteetin prosesseja tai säiettä on monia, alhaisemman prioriteetin prosessi tai säiettä jää aina umpikujaan.
Nälässä voi olla monia, kuten resurssien nälkä ja suorittimen nälkä. Nälkäkuolemasta on monia yleisiä esimerkkejä. Ne ovat lukija-kirjoittajien ongelma ja ruokailufilosofien ongelma, joka on tunnetumpi. Viisi hiljaista filosofia istuu pyöreän pöydän ääressä spagettikulhojen kanssa. Haarukat asetetaan jokaisen vierekkäisen filosofiparin väliin. Jokaisen filosofin täytyy vuorotellen ajatella ja syödä. Filosofi voi kuitenkin syödä spagettia vain, jos hänellä on sekä vasen että oikea haarukka.
"Dining Philosophers"
Mitä eroa on Deadlockin ja Starvationin välillä?
Prosessi:
• Umpikujassa kaksi säiettä tai prosessia odottavat toisiaan eivätkä kumpikaan etene eteenpäin.
• Nälkätilassa, kun kaksi tai useampi säiettä tai prosessi odottaa samaa resurssia, yksi siirtyy taaksepäin ja antaa muiden käyttää resurssia ensin ja seuraavaksi nälkäinen säie tai prosessi yrittää uudelleen. Siksi kaikki säikeet tai prosessit etenevät joka tapauksessa eteenpäin.
Palautus:
• Umpikujassa sekä korkean prioriteetin säikeet/prosessit että matalan prioriteetin säikeet/prosessit odottavat toisiaan loputtomasti. Se ei lopu koskaan.
• Mutta nälänhädässä matalan prioriteetin omat odottavat tai perääntyvät, mutta korkean prioriteetit jatkavat.
Odotetaan tai lukitaan:
• Umpikuja on pyöreä odottaminen.
• Nälkä on eräänlainen umpikuja ja auttaa joskus pääsemään umpikujasta.
Umpikuja ja nälkä:
• Umpikuja aiheuttaa nälkää, mutta nälkä ei aiheuta umpikujaa.
Syyt:
• umpikuja tapahtuu vastavuoroisen poissulkemisen vuoksi, pidä ja odota, ei ennakkolupaa tai pyöreä odotus.
• Nälkä johtuu resurssien niukkuudesta, hallitsemattomasta resurssien hallinnasta ja prosessien prioriteeteista.
Yhteenveto:
Umpikuja vs. nälkä
Umpikuja ja nälkä ovat joitakin ongelmia, joita esiintyy ohjelmoinnin ja laitteiston käyttöönoton aikana tapahtuvien datakilpailujen ja kilpailuolosuhteiden vuoksi. Umpikujassa kaksi säiettä odottaa loputtomasti toisiaan suorittamatta, kun taas nälässä yksi säiettä rullaa taaksepäin ja antaa toisen säikeen käyttää resursseja. Umpikuja aiheuttaa nälkää, kun taas nälkä auttaa langan pääsemään ulos umpikujasta.