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

[неперевірена версія][неперевірена версія]
Вилучено вміст Додано вміст
Немає опису редагування
Рядок 1:
'''Взає́мне блокува́ння'''&nbsp;— ситуація, коли кожен із групи [[процес]]ів очікує на подію, яку може викликати лише інший процес з цієї групи.<ref>(Таненбаум 2002), глава 3 , стор. 188.</ref><ref>(Abraham 2005), глава 7, стор. 246.</ref> Часто, така ситуація спостерігається в [[парадокс]]ах типу «Курка або яйце». Також зустрічаються назви ''тупикова ситуація'', ''тупик'', ''[[клінч]]''. В англомовній літературі, ця ситуація має назву {{lang-en|deadlock}} (вимовляється як ''дедлок'').
 
В галузі [[інформаційні технології|інформаційних технологій]], взаємним блокуванням називають ситуацію, коли два або більше [[процес]]ів чекають поки інший не не звільнить певний ресурс, або коли більше ніж два процеси чекають на звільнення ресурсів в замкненому ланцюгу.
 
В якості прикладу схожої ситуації можна навести двох чоловіків, що креслять схеми, маючи лише одну лінійку та один олівець. Якщо один ізз чоловіків візьме лінійку, а інший олівець, між ними виникає ситуація взаємного блокування коли для того, аби звільнити лінійку треба олівець, а для звільнення олівця треба лінійка.
 
Взагалі кажучи, блокуванням (або [[зависання]]м) є така ситуація, коли не залежно від того, скільки сплине часу, жоден прехід із одного стану в інший відбутись не може.<ref>(Bowman, Gomez) розділ 12.2</ref>
Рядок 82:
Тепер, для уникнення циклічного очікування, встановимо наступне правило: ''процес може запитувати ресурси лише в зростаючому порядку номерів''. Як варіант, процес має звільняти ресурс з більшим порядковим номером перед поданням запиту на ресурс з меншим номером.
 
Незважаючи на те, що встановлення та дотримання правильного порядку отримання доступу до ресурсів є відповідальністю розробника ПЗ, існють спеціалізовані інструменти для перевірки дотримання порядку та повідомлення про помилки. Одним ізз прикладів є програма 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>
 
== Посилання ==