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