Взаємне блокування: відмінності між версіями

[неперевірена версія][неперевірена версія]
Вилучено вміст Додано вміст
→‎Література: доповнення
Рядок 78:
Уникнення циклічного очікування досягається встановленням порядку отримання доступу до ресурсів різних типів.
 
Нехай <math>R = \{ R_1, R_2, \dots, R_n \}</math> &nbsp;[[множина]] типів ресурсів. Ототожнимо з кожним з них [[цілі числа|ціле число]], що дозволить порівнювати ресурси та встановлювати пріоритети (див. [[частково впорядкована множина]]).
 
Тепер, для уникнення циклічного очікування, встановимо наступне правило: ''процес може запитувати ресурси лише в зростаючому порядку номерів''. Як варіант, процес має звільняти ресурс з більшим порядковим номером перед поданням запиту на ресурс з меншим номером.
 
Незважаючи на те, що встановлення та дотримання правильного порядку отримання доступу до ресурсів є відповідальністю розробника ПЗ, існють спеціалізовані інструменти для перевірки дотримання порядку та повідомлення про помилки. Одним з прикладів є програма witness, що працює на операцінийних системах сімейства [[Berkeley Software Distribution|BSD]].<ref>{{cite web|url=http://www.freebsd.org/cgi/man.cgi?query=witness&apropos=0&sektion=0&manpath=FreeBSD+7.0-RELEASE&format=html|title=FreeBSD 7.0: WITNESS(4) Manual page|date=24 липня 2008}}</ref>
 
=== Уникнення ===
 
Для ''уникнення'' тупикових сутацій, програми мають зазделегідь надавати операційній системі інформацію про ресурси, що будуть використані процесом під час роботи. Маючи цю інформацію операційна система може вирішувати на задовільнення яких запитів процес може зачекати. Аби вирішити, чи повинен процес чекати, операційна система має брати до уваги доступні ресурси, ресурси виділені процесам та майбутні запити, які можуть зробити процеси.
 
== Посилання ==