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

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
[неперевірена версія][неперевірена версія]
Вилучено вміст Додано вміст
доповнення
доповнення
Рядок 5: Рядок 5:
В якості прикладу схожої ситуації можна навести двох чоловіків, що креслять схеми, маючи лише одну лінійку та один олівець. Якщо один із чоловіків візьме лінійку, а інший олівець, між ними виникає ситуація взаємного блокування коли для того, аби звільнити лінійку треба олівець, а для звільнення олівця треба лінійка.
В якості прикладу схожої ситуації можна навести двох чоловіків, що креслять схеми, маючи лише одну лінійку та один олівець. Якщо один із чоловіків візьме лінійку, а інший олівець, між ними виникає ситуація взаємного блокування коли для того, аби звільнити лінійку треба олівець, а для звільнення олівця треба лінійка.


Взагалі кажучи, блокуванням (або [[зависання]]м) є така ситуація, коли не залежно від того, скільки сплине часу, жоден прехід із одного стану в інший не може відбутись.
Взагалі кажучи, блокуванням (або [[зависання]]м) є така ситуація, коли не залежно від того, скільки сплине часу, жоден прехід із одного стану в інший відбутись не може.<ref>(Bowman, Gomez) розділ 12.2</ref>

== Умови виникнення взаємного блокування ==

Було показано, що для виникнення ситуації взаємного блокування, необхідно виконання наступних чотирьох умов водночас:<ref>(Coffman et al 1971)</ref><ref>(Таненбаум 2002), стор. 188—189</ref>
# ''Умова взаємного виключення''. Кожен ресурс в поточний момент або зайнятий рівно одним процесом або вільний.
# ''Умова утримання та очікування''. Процеси, що в поточний момент утримують отримані раніше ресурси, можуть робити запити на отримання нових ресурсів.
# ''Умова відсутності примусового звільнення ресурсів''. Неможливо примусити процес звільнити раніше отримані ресурси. Процес, що володіє ресурсами, повинен сам їх звільняти.
# ''Умова циклічного очікування''. Має існувати кільцева послідовність із двох або більше процесів, кожен із яких очікує на звільнення ресурса, що утримується наступним членом послідовності.
Для виникнення ситуації взаємного блокування, необхідно виконання всіх чотирьох умов водночас. Якщо хоча б одна з умов не виконується, взаємне блокування неможливе.


== Посилання ==
== Посилання ==
{{reflist}}
{{reflist|2}}
{{refbegin}}
* Coffman, E. G., Elphick, M. J. and Shoshani, A.: «System Deadlocks», ''Computing Surveys'', vol. 3, pp. 67—78, червень 1971.
{{refend}}


== Дивіться також ==
== Дивіться також ==
Рядок 19: Рядок 31:
* {{cite book|author=Таненбаум Э.|title=Современные Операционные Системы|chapter=глава 3|year=2002|publisher=СПб Питер|edition=2|isbn=5-318-00299-4}}
* {{cite book|author=Таненбаум Э.|title=Современные Операционные Системы|chapter=глава 3|year=2002|publisher=СПб Питер|edition=2|isbn=5-318-00299-4}}
* {{cite book|author=Abraham Silberschatz, Peter Baer Galvin, Greg Gagne|title=Operating Systems Concepts|chapter=глава 7|year=2005|edition=7|publisher=Wiley|isbn=0-471-69466-5}}
* {{cite book|author=Abraham Silberschatz, Peter Baer Galvin, Greg Gagne|title=Operating Systems Concepts|chapter=глава 7|year=2005|edition=7|publisher=Wiley|isbn=0-471-69466-5}}
* {{cite book|title=Concurrency Theory|author=Howard Bowman, Rodolfo Gomez|publisher=Springer|year=2006|isbn=978-1-85233-895-4}}


{{Без джерел}}
{{Без джерел}}

Версія за 08:22, 23 липня 2008

Взаємне блокування — ситуація, коли кожен із групи процесів очікує на подію, яку може викликати лише інший процес з цієї групи.[1][2] Часто, така ситуація спостерігається в парадоксах типу «Курка або яйце». Також зустрічаються назви тупікова ситуація, тупік. В англомовній літературі, ця ситуація має назву англ. deadlock (вимовляється як дедлок).

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

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

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

Умови виникнення взаємного блокування

Було показано, що для виникнення ситуації взаємного блокування, необхідно виконання наступних чотирьох умов водночас:[4][5]

  1. Умова взаємного виключення. Кожен ресурс в поточний момент або зайнятий рівно одним процесом або вільний.
  2. Умова утримання та очікування. Процеси, що в поточний момент утримують отримані раніше ресурси, можуть робити запити на отримання нових ресурсів.
  3. Умова відсутності примусового звільнення ресурсів. Неможливо примусити процес звільнити раніше отримані ресурси. Процес, що володіє ресурсами, повинен сам їх звільняти.
  4. Умова циклічного очікування. Має існувати кільцева послідовність із двох або більше процесів, кожен із яких очікує на звільнення ресурса, що утримується наступним членом послідовності.

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

Посилання

  1. (Таненбаум 2002), глава 3 , стор. 188.
  2. (Abraham 2005), глава 7, стор. 246.
  3. (Bowman, Gomez) розділ 12.2
  4. (Coffman et al 1971)
  5. (Таненбаум 2002), стор. 188—189
  • Coffman, E. G., Elphick, M. J. and Shoshani, A.: «System Deadlocks», Computing Surveys, vol. 3, pp. 67—78, червень 1971.

Дивіться також

Література

  • Таненбаум Э. (2002). глава 3. Современные Операционные Системы (вид. 2). СПб Питер. ISBN 5-318-00299-4.
  • Abraham Silberschatz, Peter Baer Galvin, Greg Gagne (2005). глава 7. Operating Systems Concepts (вид. 7). Wiley. ISBN 0-471-69466-5.
  • Howard Bowman, Rodolfo Gomez (2006). Concurrency Theory. Springer. ISBN 978-1-85233-895-4.