Різниця між тупиком і голодом

Тупик проти голоду
 

Основна відмінність тупикової ситуації від голоду - це причинно-наслідковий зв’язок між ними; саме тупик викликає голодування. Ще одна цікава різниця між тупиком та голодуванням полягає в тому, що тупик - це проблема, тоді як голодування іноді може допомогти вийти з глухого кута. У комп'ютерному світі при написанні комп’ютерної програми буде більше одного процесу / потоку, який одночасно запускається один за іншим, щоб виконати необхідну послугу програмі. Тому, щоб мати справедливу систему, програміст повинен забезпечити, щоб усі процеси / потоки отримали або отримали достатній доступ до необхідних їм ресурсів. Якщо ні, то настане тупик, і це призведе до голодування пізніше. Як правило, справедлива система не містить жодних тупиків і голодувань. Тупики та голодування виникатимуть переважно тоді, коли багато ниток змагаються за обмежені ресурси.

Що таке тупик?

Тупик є умова, яка виникає, коли два потоки або процеси чекають один одного, щоб виконати завдання. Вони будуть лише зависати, але ніколи не зупинятись і не закінчувати своє завдання. У інформатиці тупики можна побачити скрізь. У базі даних транзакцій, коли два процеси в межах власної транзакції оновлюють два і ті ж рядки інформації, але в зворотному порядку, спричинить тупик. У паралельному програмуванні може виникнути глухий кут, коли два конкуруючих дій будуть чекати один одного, щоб продовжуватись вперед. У телекомунікаційних системах може статися тупик через втрату або пошкодження сигналів.

В даний час тупик є однією з головних проблем багатопроцесорних систем та паралельних обчислень. В якості рішення називається система блокування синхронізація процесів реалізується як для програмного, так і апаратного забезпечення.

Що таке голодування?

Зі словника медичної науки голодування - це результат сильної або повної нестачі поживних речовин, які потрібні для підтримки життя. Так само в інформатиці є голодування проблема, з якою стикається коли кілька потоків або процесів чекають одного і того ж ресурсу, який називається тупиком.

Для того, щоб вийти з глухого кута, один з процесів або потоків повинен відмовитися або відкотитись назад, щоб інший потік або процес міг використовувати ресурс. Якщо це відбувається постійно, і один і той самий процес або потік доводиться кожен раз відмовлятися або відмовлятись назад, дозволяючи іншим процесам або потокам використовувати ресурс, то вибраний процес або нитка, яка повернута назад, зазнає ситуації голодування. Тому, щоб вийти з глухого кута, голодування - одне з рішень. Тому іноді називають голодування різновид лайка. Коли є багато процесів або потоків з високим пріоритетом, процес або нитка з нижчим пріоритетом завжди будуть голодувати в глухий кут.

Голоду може бути багато голодуючи на ресурси і голодує на процесорі. Існує багато поширених прикладів голодування. Вони - проблема читачів-письменників і проблема філософів-ресторанів, яка є більш відомою. За круглим столом із чашами спагетті сидять п’ять мовчазних філософів. Вилки розміщуються між кожною парою сусідніх філософів. Кожен філософ повинен по черзі думати і їсти. Однак філософ може їсти спагетті лише тоді, коли має і ліву, і праву виделки.

"Філософи, що їдять"

Яка різниця між тупиком та голодуванням?

• Процес:

• У тупику два потоки або процеси будуть чекати один одного, і обидва не рухаються вперед.

• У голодному випадку, коли дві або більше ниток або процесів чекають одного і того ж ресурсу, один відкатиметься назад і дозволить іншим спочатку скористатися ресурсом, а далі голодна нитка чи процес спробують знову. Тому всі потоки або процеси так чи інакше будуть рухатися вперед.

• Відкат:

• У тупиковому режимі як потоки / процеси з високим пріоритетом, так і нитки / процеси з низьким пріоритетом будуть чекати один одного нескінченно. Він ніколи не закінчується.

• Але в голодуванні ті, хто має низький пріоритет, будуть чекати або відкочуватись, але з високим пріоритетом будуть продовжуватися.

• Очікування чи блокування:

• Тупик - це кругове очікування.

• Голодування - це своєрідна живіт, а іноді допомагає вийти з глухого кута.

• Тупик і голод:

• Тупик викликає голодування, але голодування не спричиняє тупик.

• Причини:

• Тупик стане через взаємне виключення, затримку і очікування, відсутність попередження або кругового очікування.

• Голодування виникає через дефіцит ресурсів, неконтрольоване управління ресурсами та пріоритети процесу.

Підсумок:

Тупик проти голоду

Тупик та голодування - це деякі проблеми, які виникають через перегони даних та умови перегонів, які виникають під час програмування, а також впровадження обладнання. У тупику дві нитки будуть нескінченно чекати один одного, не виконуючи, поки в голодуванні одна нитка відкочується назад і нехай інша нитка використовує ресурси. Тупик спричинить голодування, тоді як голодування допоможе нитці вийти з глухого кута.

Надано зображення:

  1. Комп'ютер Стіва Юрветсона з Менло Парк, США (CC BY 2.0)
  2. "Філософи-обідні" від Bdesham (CC BY-SA 3.0)