Застой срещу глад
Основната разлика между безизходица и гладуване е причинно-следствената връзка между тях; задънената улица причинява глад. Друга интересна разлика между безизходицата и гладуването е, че безизходицата е проблем, докато гладуването понякога може да помогне да се излезе от безизходица. В света на компютрите, когато пишете компютърна програма, ще има повече от един процес/нишка, които ще се изпълняват едновременно един след друг, за да изпълнят необходимата услуга за програмата. Следователно, за да има справедлива система, програмистът трябва да гарантира, че всички процеси/нишки ще получат или ще получат достатъчно достъп до ресурсите, от които се нуждаят. Ако не, ще има задънена улица и по-късно ще доведе до глад. Като цяло, справедливата система не съдържа безизходици или гладове. Застой и глад ще се появят главно когато много нишки се конкурират за ограничени ресурси.
Какво е Deadlock?
Безблокировката е състояние, което възниква, когато две нишки или процеси чакат един друг да изпълнят задачата. Те само затварят, но никога не спират или завършват задачата си. В компютърните науки безизходиците могат да се видят навсякъде. В база данни за транзакции, когато два процеса, всеки в рамките на собствената си транзакция, актуализират същите два реда информация, но в обратен ред, това ще доведе до блокиране. При едновременно програмиране може да възникне блокиране, когато две конкуриращи се действия изчакват едно друго да продължат напред. В телекомуникационните системи блокиране може да възникне поради загуба или повреда на сигнали.
В момента безизходицата е един от основните проблеми в многопроцесорните системи и паралелните изчисления. Като решение е внедрена система за заключване, наречена синхронизация на процесите, както за софтуера, така и за хардуера.
Какво е гладуване?
От речника на медицинската наука, гладуването е резултат от тежка или пълна липса на хранителни вещества, които са необходими за поддържане на живота. По подобен начин в компютърните науки гладът е проблем, който възниква, когато множество нишки или процеси чакат един и същ ресурс, което се нарича блокиране.
За да се излезе от задънена улица, един от процесите или нишките трябва да се откаже или да се върне назад, така че другата нишка или процес да може да използва ресурса. Ако това се случва непрекъснато и един и същ процес или нишка трябва да се откаже или да се върне назад всеки път, докато позволява на други процеси или нишки да използват ресурса, тогава избраният процес или нишка, които са върнати назад, ще претърпи ситуация, наречена гладуване. Затова, за да се излезе от задънената улица, гладуването е едно от решенията. Ето защо понякога гладуването се нарича вид заключване. Когато има много процеси или нишки с висок приоритет, процес или нишка с по-нисък приоритет винаги ще гладува в безизходица.
Може да има много гладувания, като например гладуване на ресурси и гладуване на процесора. Има много общи примери за гладуване. Те са проблемът читатели-писатели и проблемът на философите за хранене, който е по-известен. Петима мълчаливи философи седят на кръгла маса с купи спагети. Между всяка двойка съседни философи се поставят вилици. Всеки философ трябва последователно да мисли и да яде. Въпреки това, един философ може да яде спагети само когато има и лява, и дясна вилица.
„Философите за хранене“
Каква е разликата между Deadlock и Starvation?
Процес:
• При безизходица двете нишки или процеси ще чакат един друг и няма да продължат напред.
• При глад, когато две или повече нишки или процеси чакат един и същ ресурс, едната ще се върне назад и ще позволи на другите да използват ресурса първи, а след това гладната нишка или процес ще опита отново. Следователно всички нишки или процеси така или иначе ще продължат напред.
Връщане назад:
• В безизходна ситуация както нишките/процесите с висок приоритет, така и нишките/процесите с нисък приоритет ще чакат един друг безкрайно много. Никога не свършва.
• Но при гладуване тези с нисък приоритет ще изчакат или ще се върнат назад, но тези с висок приоритет ще продължат.
Изчакване или заключване:
• Безизходицата е кръгово изчакване.
• Гладуването е вид заключване и понякога помага да се излезе от безизходица.
Застой и глад:
• Безизходицата причинява глад, но гладуването не причинява безизходица.
Причини:
• Ще възникне блокиране поради взаимно изключване, задържане и изчакване, без изпреварване или кръгово изчакване.
• Гладът възниква поради недостиг на ресурси, неконтролирано управление на ресурсите и приоритети на процесите.
Резюме:
Застой срещу глад
Застой и гладуване са някои от проблемите, които възникват поради състезания за данни и условия на състезание, които възникват по време на програмиране, както и при внедряване на хардуер. При безизходица две нишки ще чакат безкрайно една друга, без да се изпълняват, докато при гладуване едната нишка ще се върне назад и ще позволи на другата нишка да използва ресурсите. Безизходица ще причини гладуване, докато гладуването ще помогне на нишката да излезе от безизходица.