Спонсор: Microsoft
Опубликован: 13.11.2010 | Уровень: для всех | Доступ: платный | ВУЗ: Санкт-Петербургский государственный университет
Лекция 13:

Тупики (deadlocks), методы предотвращения и обнаружения тупиков

< Лекция 12 || Лекция 13: 123 || Лекция 14 >

Ключевые термины

Reserved graph – ориентированный граф, содержащий, кроме обычных вершин, также супервершины ; дуга в таком графе может вести из обычной вершины в супервершину или из подвершины супервершины в обычную вершину.

Вершина-процесс вершина в графе распределения ресурсов, изображающая процесс.

Вершина-ресурс супервершина в графе распределения ресурсов, изображающая каждую единицу ресурса какого-либо типа.

Взаимное исключение – одно из необходимых условий тупика: только один процесс в каждый момент времени может получить доступ к ресурсу.

Граф распределения ресурсов граф, описывающий состояние распределения ресурсов в системе, состоящий из множества вершин (типа вершина-процесс и вершина-ресурс) и множества дуг ( дуги типа запрос и дуги типа присваивание ).

Дуга типа "запрос" (request edge) – направленная дуга из вершины-процесса в вершину-ресурс.

Дуга типа "присваивание" (assignment edge) – направленная дуга из подвершины, изобращающей конкретную единицу ресурса, в вершину-процесс.

Запрос (request) - действие процесса по запросу к ОС о необходимости выделения ему ресурса какого-либо вида.

Использование (use) – владение и потребление процессом полученной от ОС единицей некоторого вида ресурса.

Освобождение (release) – возврат процессом операционной системе единицы использованного и более не требующегося процессу ресурса.

Отсутствие прерываний – одно из необходимых условий тупика :процесс может освободить ресурс только добровольно, когда завершит свою работу.

Паспорт задачи – в ранних ОС: список максимальных потребностей процесса в ресурсах каждого типа – оперативной и внешней памяти, времени выполнения, листах печати и др.

Супервершина (в составе reserved graph ) – структурированная вершина, содержащая одну или несколько подвершин, из которых могут вести дуги.

Тупик (deadlock) – циклическая последовательность заблокированных процессов, каждый из которых владеет некоторым ресурсом и ожидает ресурса, которым владеет какой-либо другой процесс из этого множества.

Удержание и ожидание – одно из необходимых условий тупика: процесс, удерживающий один ресурс, ожидает приобретения других ресурсов, которыми обладают другие процессы.

Циклическое ожидание – одно из необходимых условий тупика: существует множество {P0, P1, … P0},такое, что P0 ожидает ресурса, которым обладает P1; P1 ожидает ресурса, которым обладает P2 … Pn ожидает ресурса, которым обладает P0.

Краткие итоги

Тупик – ситуация взаимной блокировки процессов, при которой существует циклическая потребность процессов, такая что первый процесс ожидает некоторого ресурса, которым обладает второй процесс, ... n- й процесс ожидает некоторого ресурса, которым обладает первый процесс. Простой пример тупика – два процесса, каждый из которых пытается закрыть последовательно два одних и тех же семафора, но в одном из процессов вызовы операций закрытия семафоров переставлены местами.

Тупик может возникнуть, если выполнены четыре условия: взаимное исключение, удержание и ожидание, отсутствие прерываний, циклическое ожидание.

Для анализа тупиков и разработки методов их обработки и избежания вводится формальная модель системы. Она основана на графе распределения ресурсов с вершинами-процессами и вершинами-ресурсами. Вершина-ресурс может иметь несколько подвершин, если ресурса данного типа в системе больше одной единицы. Дуги запроса ведут из вершины-процесса в вершину-ресурс, дуги присваивания – из подвершины-ресурса в вершину-процесс.

Если в графе распределения ресурсов нет циклов, то в системе нет тупиков. Если цикл присутствует, то имеет место тупик, если каждого ресурса в системе только по одному экземпляру; если есть ресурсы с количеством экземпляров более одного, то имеет место возможность тупика. Возможны графы распределения ресурсов с циклом, но без тупика.

Возможны следующие методы обработки тупиков: либо убедиться, что система не может войти в состояние тупика, либо допускать состояние тупика, но предусматривать меры по восстановлению системы из тупика. На практике авторы многих ОС голословно утверждают, что в их системе тупики невозможны, чем фактически игнорируют эту проблему.

Для предотвращения тупиков необходимо ограничивать методы запросов процессами системных ресурсов. Разделяемые ресурсы не требуют взаимного исключения владения ими. Методы, при которых от процесса требуется, чтобы он, запрашивая некоторый ресурс, ничем больше не обладал, либо чтобы каждый процесс приобретал все ресурсы до момента своего исполнения, могут привести к недостаточному использованию ресурсов и к "голоданию".

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

Не вполне реалистичным представляется метод, при котором все типы ресурсов перенумеровываются, и от процессов требуется, чтобы они запрашивали ресурсы только в порядке возрастания номеров.

Наиболее простая и полезная модель избежания тупиков требует, чтобы для каждого процесса при его вводе в систему указывались бы все его максимальные потребности в системных ресурсах каждого типа (как в паспорте задачи в ранних ОС). Алгоритм избежания тупиков должен анализировать состояния системы и не допускать, чтобы система перешла в небезопасное (с точки зрения возможности тупиков) состояние. Состояние системы описывается как объем доступных и распределенных ресурсов, а также максимальные потребности каждого из процессов.

Набор для практики

Вопросы

  1. Что такое тупик?
  2. Приведите простой пример тупика с двумя процессами и двумя внешними устройствами.
  3. Какие предположения о процессах и ресурсах в системе делаются для построения ее формальной модели?
  4. Какие действия над ресурсом может выполнять процесс?
  5. Каковы условия возникновения тупика?
  6. Что такое взаимное исключение (как условие возникновения тупика)?
  7. Что такое удержание и ожидание (как условие возникновения тупика)?
  8. Что такое отсутствие прерываний (как условие возникновения тупика)?
  9. Что такое циклическое ожидание (как условие возникновения тупика)?
  10. Что такое граф распределения ресурсов?
  11. Что такое вершина-процесс?
  12. Что такое (супер)вершина-ресурс?
  13. Какого типа дуги ведут из вершин-процессов в вершины-ресурсы?
  14. Какого типа дуги ведут из подвершин-ресурсов в вершины-процессы?
  15. Есть ли в системе тупик, если граф распределения ресурсов не содержит циклов?
  16. Есть ли в системе тупик, если граф распределения ресурсов содержит цикл, и в системе каждого ресурсам имеется только по одному экземпляру?
  17. Какие методы обработки тупиков возможны?
  18. Какую ошибку совершают авторы многих ОС по отношению к проблеме тупиков?
  19. Какие ограничения на запросы процессами ресурсов возможны для предотвращения тупиков?
  20. Как перераспределять ресурсы процесса, чтобы избежать ситуации удержания и ожидания?
  21. Какую информацию о процессах необходимо указать при их вводе в систему, чтобы можно было применить методы избежания тупиков?
  22. Как определяется состояние распределения ресурсов в системе?

Упражнения

  1. Предложите свой простой пример тупика, основанный на использовании семафоров.
  2. Реализуйте модель системы, состоящей из процессов и ресурсов, и граф ее распределения ресурсов.
  3. Приведите свои примеры графа распределения ресурсов с тупиком и графа распределения ресурсов с циклом, но без тупика.

Темы для курсовых работ, рефератов, эссе

  1. Методы обработки, предотвращения и избежания тупиков при распределении ресурсов в операционных системах (реферат).
  2. Граф распределения ресурсов в ОС и его использование для анализа тупиков (реферат).
  3. Реализация модели системы, состоящей из процессов и ресурсов, и граф ее распределения ресурсов (курсовая работа).
< Лекция 12 || Лекция 13: 123 || Лекция 14 >
Василий Четвертаков
Василий Четвертаков
Владислав Нагорный
Владислав Нагорный

Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки?

Спасибо!

Константин Леденев
Константин Леденев
Россия
Олег Равков
Олег Равков
Россия