Tupik vs nälg
Peamine erinevus ummikseisu ja nälgimise vahel on põhjuse ja tagajärje seos nende vahel; see on tupik, mis põhjustab nälgimist. Veel üks huvitav erinevus ummikseisu ja nälgimise vahel on see, et ummikseisu on probleem, samas kui nälgimine võib mõnikord aidata ummikseisust välja tulla. Arvutimaailmas on arvutiprogrammi kirjutamisel rohkem kui üks protsess/lõng, mis jooksevad samaaegselt üksteise järel, et täita programmile vajalikku teenust. Seetõttu peaks programmeerija õiglase süsteemi tagamiseks tagama, et kõik protsessid/lõimed saaksid või saaksid piisav alt juurdepääsu ressurssidele, mida nad vajavad. Kui ei, siis tekib ummikseisu ja see viib hiljem nälgimiseni. Üldiselt ei sisalda õiglane süsteem mingeid ummikuid ega nälgimist. Ummikud ja nälgimised tekivad peamiselt siis, kui paljud lõimed võistlevad piiratud ressursside pärast.
Mis on ummikseisu?
Ummik on seisund, mis tekib siis, kui kaks lõime või protsessi ootavad teineteist ülesande täitmiseks. Nad ainult katkestavad kõne, kuid ei lõpeta ega lõpeta oma ülesannet. Arvutiteaduses võib kõikjal näha ummikseisu. Kui tehingute andmebaasis kaks protsessi oma tehingu raames värskendavad samu kahte teaberida, kuid vastupidises järjekorras, põhjustab ummikseisu. Samaaegsel programmeerimisel võib tekkida ummikseisu, kui kaks konkureerivat tegevust ootavad teineteise edasiliikumist. Telekommunikatsioonisüsteemides võib signaalide kadumise või riknemise tõttu tekkida ummik.
Praegu on ummikseisud üks peamisi probleeme multitöötlussüsteemides ja paralleelarvutuses. Lahendusena rakendatakse nii tarkvara kui ka riistvara jaoks lukustussüsteemi, mida nimetatakse protsesside sünkroniseerimiseks.
Mis on nälg?
Arstiteaduse sõnaraamatu järgi on nälgimine elu säilitamiseks vajalike toitainete tõsise või täieliku puuduse tagajärg. Samamoodi on arvutiteaduses nälgimine probleem, mis tekib siis, kui mitu lõime või protsessi ootavad sama ressurssi, mida nimetatakse ummikseisuks.
Ummikseisust väljumiseks peaks üks protsessidest või lõimedest loobuma või tagasi kerima, et teine lõim või protsess saaks ressurssi kasutada. Kui see juhtub pidev alt ja sama protsess või lõime peab iga kord loobuma või tagasi kerima, lastes teistel protsessidel või lõimedel ressurssi kasutada, siis valitud protsess või lõim, mis tagasi keritakse, läbib olukorra, mida nimetatakse nälgimiseks. Seetõttu on ummikseisust väljumiseks üks lahendusi nälgimine. Seetõttu nimetatakse mõnikord nälgimist omamoodi elamiseks. Kui kõrge prioriteediga protsesse või lõime on palju, jääb madalama prioriteediga protsess või lõim alati ummikseisu.
Nälgimist võib olla palju, näiteks ressursside nälgimine ja protsessori nälgimine. Nälgimise kohta on palju levinud näiteid. Need on lugejate-kirjutajate probleem ja söögifilosoofide probleem, mis on kuulsam. Ümmarguse laua taga istuvad viis vaikivat filosoofi spagettide kaussidega. Kahvlid asetatakse iga külgnevate filosoofide paari vahele. Iga filosoof peab vaheldumisi mõtlema ja sööma. Filosoof saab aga spagette süüa ainult siis, kui tal on nii vasak kui ka parem kahvlid.
Söögikoha filosoofid
Mis vahe on Deadlockil ja Starvationil?
Protsess:
• Ummikseisus ootavad kaks lõime või protsessi teineteist ja mõlemad ei liigu edasi.
• Nälgimise korral, kui kaks või enam lõime või protsessi ootavad sama ressurssi, keritakse üks tagasi ja laseb teistel ressurssi kõigepe alt kasutada ning järgmisena proovib näljas niit või protsess uuesti. Seetõttu liiguvad kõik lõimed või protsessid igal juhul edasi.
Tagasikerimine:
• Ummikuseisus ootavad nii kõrge prioriteediga lõimed/protsessid kui ka madala prioriteediga lõimed/protsessid üksteist lõputult. See ei lõpe kunagi.
• Kuid nälgimise korral madala prioriteediga inimesed ootavad või taanduvad, kuid kõrge prioriteediga jätkavad.
Ootamine või lukustamine:
• Ummik on ümmargune ootamine.
• Näljahäda on omamoodi elulõng ja aitab mõnikord ummikseisust välja tulla.
Upik ja nälg:
• Ummik põhjustab nälgimist, kuid nälgimine ei põhjusta ummikseisu.
Põhjused:
• Vastastikuse välistamise tõttu tekib ummik, hoidke ja oodake, ilma eelostu või ringikujulise ootamiseta.
• Nälgimise põhjuseks on ressursside nappus, ressursside kontrollimatu juhtimine ja protsesside prioriteedid.
Kokkuvõte:
Tupik vs. nälg
Ummik ja näljahädad on mõned probleemid, mis tekivad programmeerimisel ja riistvara rakendamisel esinevate andmejooksude ja võistlustingimuste tõttu. Ummikseisus ootavad kaks lõime lõputult teineteist ilma täitmata, samas kui nälgimise korral rullub üks lõime tagasi ja laseb teisel lõimel ressursse kasutada. Ummik põhjustab nälga, samas kui nälg aitab niidil ummikseisust välja tulla.