Deadlock vs Hladovanie
Hlavný rozdiel medzi uviaznutím a hladom je v príčine a následku medzi nimi; je to slepá ulička, ktorá spôsobuje hlad. Ďalším zaujímavým rozdielom medzi slepou uličkou a hladomorom je to, že uviaznutie je problémom, 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é budú súčasne bežať jeden po druhom, aby splnili požadovanú službu pre program. Preto, aby mal spravodlivý systém, programátor by mal mať zaistené, aby všetky procesy / vlákna dostávali alebo získavali dostatočný prístup k zdrojom, ktoré potrebujú. Ak nie, dôjde k zablokovaniu a neskôr to povedie k hladu. Spravodlivý systém vo všeobecnosti neobsahuje žiadne slepé uličky alebo hladovky. K zablokovaniu a hladovaniu dôjde hlavne vtedy, keď mnoho vlákien súťaží o obmedzené zdroje.
Čo je to zablokovanie?
Zablokovanie je stav, ktorý nastane, keď dve vlákna alebo procesy čakajú na dokončenie úlohy navzájom. Iba zavesia, ale nikdy nezastavia alebo nedokončia svoju úlohu. V počítačovej vede sú zablokovania viditeľné všade. V databáze transakcií, keď dva procesy, každý v rámci svojej vlastnej transakcie, aktualizujú rovnaké dva riadky informácií, ale v opačnom poradí, spôsobí zablokovanie. Pri súbežnom programovaní môže dôjsť k zablokovaniu, keď dve konkurenčné akcie počkajú, až jedna druhej postúpi vpred. V telekomunikačných systémoch môže dôjsť k zablokovaniu v dôsledku straty alebo poškodenia signálov.
Zablokovanie je v súčasnosti jedným z hlavných problémov multiprocesorových systémov a paralelných výpočtov. Ako riešenie je pre softvér aj hardvér implementovaný uzamykací systém s názvom synchronizácia procesov.
Čo je to hladovka?
Podľa slovníka lekárskej vedy je hladovanie výsledkom vážneho alebo úplného nedostatku výživných látok potrebných na udržanie života. Podobne aj v informatike predstavuje hladovka problém, s ktorým sa stretáva, keď viac vlákien alebo procesov čaká na ten istý zdroj, ktorý sa nazýva zablokovanie.
Aby sme sa dostali zo slepej uličky, jeden z procesov alebo vlákien by sa musel vzdať alebo vrátiť späť, aby druhé vlákno alebo proces mohol použiť zdroj. Ak k tomu dôjde nepretržite a rovnaký proces alebo vlákno sa musí zakaždým vzdať alebo vrátiť späť, zatiaľ čo iným procesom alebo vláknam umožní použiť zdroj, potom vybraný proces alebo vlákno, ktoré sa vrátilo späť, prejde situáciou nazývanou hladovanie. Preto, aby ste sa dostali z mŕtveho bodu, je hladovanie jedným z riešení. Preto sa niekedy hladovka 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 existovať veľa hladoviek, napríklad hladovanie na zdrojoch a hladovanie na CPU. Existuje veľa bežných príkladov hladovania. Sú to problém čitateľov a spisovateľov a problém filozofov stolovania, ktorý je známejší. Za okrúhlym stolom s miskami špagiet sedí päť tichých filozofov. Medzi každú dvojicu susedných filozofov sú umiestnené vidlice. Každý filozof musí striedavo premýšľať a jesť. Filozof však môže jesť špagety, iba ak má ľavú aj pravú vidličku.
„Jedálni filozofi“
Aký je rozdiel medzi Deadlock a Hladovanie?
• Proces:
• V mŕtvom bode budú dve vlákna alebo procesy čakať jeden na druhého a obe nebudú postupovať vpred.
• V prípade hladovania, keď dve alebo viac vlákien alebo procesov čaká na ten istý zdroj, jedno sa vráti späť a nechá ostatných, aby najskôr použili zdroj, a potom sa hladujúce vlákno alebo proces pokúsi znova. Preto všetky vlákna alebo procesy budú aj tak postupovať vpred.
• Vrátenie späť:
• V mŕtvom bode budú vlákna / procesy s vysokou prioritou aj vlákna / procesy s nízkou prioritou na seba nekonečne čakať. To nikdy nekončí.
• Ale v prípade hladu budú tí s nízkou prioritou čakať alebo sa vrátia späť, ale tie s vysokou prioritou budú pokračovať.
• Čakanie alebo uzamknutie:
• Zablokovanie je kruhové čakanie.
• Hladovka je druh zablokovania a niekedy pomáha dostať sa z mŕtveho bodu.
• Zablokovanie a hladovanie:
• Zablokovanie spôsobuje hlad, ale hladomor nespôsobí zablokovanie.
• Príčiny:
• K zablokovaniu dôjde v dôsledku vzájomného vylúčenia, zadržania a čakania, neexistencie preventívnych opatrení alebo kruhového čakania.
• K hladu dochádza v dôsledku nedostatku zdrojov, nekontrolovaného riadenia zdrojov a priorít procesu.
Zhrnutie:
Deadlock vs. Hladovanie
Zablokovanie a hladovanie sú niektoré z problémov, ktoré sa vyskytujú v dôsledku pretekov údajov a podmienok pretekov, ktoré sa vyskytujú počas programovania a implementácie hardvéru. V slepej uličke budú dve vlákna na seba nekonečne čakať bez toho, aby sa vykonali, v hladomorni sa jedno vlákno vráti späť a nechá druhé vlákno použiť zdroje. Zablokovanie spôsobí hladovanie, zatiaľ čo hladovanie pomôže vláknu dostať sa zo zablokovania.
Obrázky so zdvorilosťou:
- Počítač Steve Jurvetson z Menlo Park, USA (CC BY 2.0)
- „Jedálni filozofi“od Bdeshama (CC BY-SA 3.0)