Частина тексту файла (без зображень, графіків і формул):
Тупики. Причини виникнення. Способи боротьби з тупиками.
Тупики (дедлока, клінча):
В багатопрограмній системі процес знаходиться в стані тупика, дедлока або клінча якщо він очікує на деяку подію, яка ніколи не відбудется. Системна тупикова ситуація – це коли один або декілька процесів виявляються в стані тупика. Одна з основних функцій ОС це розподіл ресурсів, коли ресурси розподіляються між багатьма користувачами кожному з яких надається право виключного керування виділеними йому конкретними ресурсами можливе виникнення тупиків, які дадуть процесам деяких користувачів коли-небудь дійти до завершення. Розглянемо таку ситуацію:
EMBED Visio.Drawing.6
EMBED Visio.Drawing.6
Нехай після того, як А захопив принтер, тобто встановив блокуючу змінну в семафорі він був перерваний керування отримав процес в який спочатку захопив диск але при виконанні наступної команди був заблокований оскільки принтер захоплений процесом А і процес В став в чергу за цим ресурсом, керування знову отримує процес а, який у відповідності зі своєю програмою хоче захопити диск. Але диск захоплений процесом В і процес а блокується. Маємо ситуацію тупика. В такому стані процеси А і В можуть знаходитись безмежно довго. Можливий інший розвиток взаємодії цих процесів:
EMBED Visio.Drawing.6
в такому випадку не виникає тупика, виникає лише черга на диску.
В цих 2-ох прикладах процес А і
EMBED Visio.Drawing.6
процес В розділяють ресурси
тобто спільно використовують.
Якщо б мало місце незалежне
використання ресурсу кожним процесом
то така діаграма виглядає наступним чином:
Типові ситуації треба відрізняти від звичайних, хоча ті і інші виникають при сумісному використанні ресурсів зовні виглядають схоже. Процес призупиняється і очікує звільнення ресурсу. Але черга нормативне явище однаково високого коефіцієнту використання ресурсу. Графічно тупикові ситуації можна представити таким чином:
EMBED Visio.Drawing.6
Для виникнення тупика необхідні такі умови:
умова взаємо виключення – процеси вимагають надання їм права монопольного керування ресурсами які їм виділяють
умова очікування ресурсу – процеси утримують за собою ресурси які вже виділені їм, очікуючи в той же час виділенню нових ресурсів
умова неперерозподілюваності – ресурси неможливо відібрати у процесів які їх утримують, доки ці ресурси не будуть використані для завершення роботи
умова кільцевого очікування – існує кільцевий ланцюжок процесів в якому кожний процес утримує за собою один або декілька ресурсів, які потрібні наступному процесу ланцюжка.
Якщо хоча б одна з умо не виконується, тупик не виникає. Стратегія боротьби з тупиками полягає в томк щоб порушити хоча б одну умову. В системах із спулінгом можливе виникнення тупиків коли виділена область буферної пам'яті заповнюється коли процес завершує свою роботу.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!