Uviaznutie vs hladovanie
Hlavný rozdiel medzi zablokovaním a hladovaním je vo vzťahu príčiny a následku medzi nimi; je to uviaznutie, ktoré spôsobuje hladovanie. Ďalším zaujímavým rozdielom medzi zablokovaním a hladovaním je, že zablokovanie je problém, zatiaľ čo hladovanie môže niekedy pomôcť dostať sa z mŕtveho bodu. V počítačovom svete bude pri písaní počítačového programu existovať viac ako jeden proces/vlákno, ktoré bude prebiehať súbežne jeden po druhom, aby splnili požadovanú službu programu. Preto, aby bol systém spravodlivý, programátor by mal zabezpečiť, aby všetky procesy/vlákna dostali alebo získali dostatočný prístup k zdrojom, ktoré potrebujú. Ak nie, dôjde k patovej situácii a neskôr to povedie k hladovaniu. Spravodlivý systém vo všeobecnosti neobsahuje žiadne uviaznutia alebo hladovanie. Uviaznutie a hladovanie nastanú hlavne vtedy, keď veľa vlákien súťaží o obmedzené zdroje.
Čo je uviaznutie?
Uviaznutie je stav, ktorý nastane, keď dve vlákna alebo procesy na seba čakajú na dokončenie úlohy. Iba zavesia, ale svoju úlohu nikdy nezastavia ani nedokončia. V informatike je všade vidieť slepé uličky. V databáze transakcií, keď dva procesy, každý vo svojej vlastnej transakcii, aktualizujú rovnaké dva riadky informácií, ale v opačnom poradí, spôsobí uviaznutie. Pri súbežnom programovaní môže dôjsť k zablokovaniu, keď dve konkurenčné akcie budú na seba čakať, aby pokračovali vpred. V telekomunikačných systémoch môže dôjsť k uviaznutiu v dôsledku straty alebo poškodenia signálov.
V súčasnosti je uviaznutie jedným z hlavných problémov systémov s viacerými procesormi a paralelných výpočtov. Ako riešenie je implementovaný uzamykací systém nazývaný synchronizácia procesov pre softvér aj hardvér.
Čo je hladovka?
Zo slovníka lekárskej vedy vyplýva, že hladovanie je výsledkom vážneho alebo úplného nedostatku živín, ktoré sú potrebné na udržanie života. Podobne v informatike je hladovanie problém, ktorý sa vyskytuje, keď viaceré vlákna alebo procesy čakajú na rovnaký zdroj, čo sa nazýva uviaznutie.
Ak sa chcete dostať z mŕtveho bodu, jeden z procesov alebo vlákien by sa mal vzdať alebo vrátiť späť, aby druhé vlákno alebo proces mohol použiť zdroj. Ak sa to deje nepretržite a ten istý proces alebo vlákno sa musí zakaždým vzdať alebo vrátiť späť a zároveň nechať iné procesy alebo vlákna používať zdroj, potom vybraný proces alebo vlákno, ktoré sa vrátilo späť, prejde situáciou nazývanou hladovanie. Preto, ako sa dostať z patovej situácie, hladovanie je jedným z riešení. Preto sa hladovanie niekedy nazýva akýmsi živým zámkom. Ak existuje veľa procesov alebo vlákien s vysokou prioritou, proces alebo vlákno s nižšou prioritou vždy uviazne v mŕtvom bode.
Môže dôjsť k mnohým hladovaniam, ako je nedostatok zdrojov a nedostatok procesora. Existuje veľa bežných príkladov hladovania. Sú to problém čitateľov a spisovateľov a problém filozofov stolovania, čo je známejšie. Za okrúhlym stolom s misami špagiet sedí päť tichých filozofov. Medzi každú dvojicu susedných filozofov sú umiestnené vidličky. Každý filozof musí striedavo myslieť a jesť. Filozof však môže jesť špagety iba vtedy, keď má ľavú aj pravú vidličku.
„Filozofi stolovania“
Aký je rozdiel medzi zablokovaním a hladovaním?
Proces:
• V mŕtvom bode budú dve vlákna alebo procesy na seba čakať a obe nebudú pokračovať.
• Pri hladovaní, keď dve alebo viaceré vlákna alebo procesy čakajú na ten istý zdroj, jedno sa vráti späť a nechá ostatné použiť zdroj ako prvé a potom to hladujúce vlákno alebo proces skúsi znova. Preto všetky vlákna alebo procesy budú pokračovať ďalej.
Vrátenie späť:
• V mŕtvom bode budú vlákna/procesy s vysokou prioritou, ako aj vlákna/procesy s nízkou prioritou na seba nekonečne čakať. Nikdy to nekončí.
• Ale pri hladovaní budú tie s nízkou prioritou čakať alebo vrátiť sa späť, ale tie s vysokou prioritou budú pokračovať.
Čaká alebo uzamkne:
• Uviaznutie je kruhové čakanie.
• Hladovanie je istým druhom živobytia a niekedy pomáha dostať sa zo slepej uličky.
Uviaznutie a hladovanie:
• Uviaznutie spôsobuje hladovanie, ale hladovanie nespôsobuje uviaznutie.
Príčiny:
• Uviaznutie nastane v dôsledku vzájomného vylúčenia, podržania a čakania, bez preempcie alebo kruhového čakania.
• K hladovaniu dochádza v dôsledku nedostatku zdrojov, nekontrolovaného riadenia zdrojov a priorít procesov.
Zhrnutie:
Uviaznutie vs. hladovanie
Uviaznutie a hladovanie sú niektoré z problémov, ktoré sa vyskytujú v dôsledku pretekov údajov a podmienok pretekov, ku ktorým dochádza počas programovania, ako aj implementácie hardvéru. V mŕtvom bode budú dve vlákna na seba nekonečne čakať bez spustenia, zatiaľ čo pri hladovaní sa jedno vlákno vráti späť a nechá druhé vlákno, aby využívalo zdroje. Uviaznutie spôsobí hladovanie, zatiaľ čo hladovanie pomôže vláknu dostať sa z mŕtveho bodu.