Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопрос 33-48.docx
Скачиваний:
1
Добавлен:
25.09.2019
Размер:
265.16 Кб
Скачать

Вопрос 41. Задача обхода тупика

Обход тупика – это предотвращение тупика в процессе ее функционирования.

Алгоритм банкира, используемый в задаче обхода тупика, был предложен Дейкстрой. Суть:

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

Cij (i=1,..,n; j=1,..,m) - максимальная потребность в ресурсе Rj процесса pi.

|(pi,Rj)|+|(Rj,pi)|<=Cij<cj. Т.е сумма весов всех дуг у процесса pi не превышает максимальную потребность в ресурсе Rj, которая в свою очередь не превышает общую емкость ресурса.

Граф потребностей определяется как граф ПИР, дополненный дугами запросов на nij единиц, где nij=Cij-(|(pi,Rj)|+|(Rj,pi)|).

Граф потребностей представляет будущее состояние, в которое может перейти система из состояния S в наихудшем случае посредством выдачи запросов всеми процессами на максимально допустимое количество ресурсов.

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

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

Следующая теорема является основой для реализации данного метода обхода тупика:

Если запрещены все операции выделения ресурсов процессам, которые не приводят к состоянию системы, представляемому полностью сокращаемым графом потребностей, то любое состояние системы, которое не является тупиковым, безопасно.

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

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

Вопрос 42. Вывод системы из тупика

Существуют два общих подхода к решению задачи вывода системы из тупика:

– прекращение процессов (процессы, попавшие в тупик последовательно уничтожаются в определенном порядке);

– перехват ресурсов (у процессов в определенном порядке отнимаются выделенные ресурсы).

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

Чтоб устранить узел достаточно из графа удалить все дуги, исходящие из любой выбранной вершины, принадлежащей узлу, то есть превратить ее в сток. Эта задача может быть решена выполнением следующей последовательности действий:

  1. Найти все узлы в графе.

  2. Для каждого узла выбрать вершину Ri, представляющую ресурс, такую что для всех Rj ≠ Ri в данном узле выполняется условие: сума стоимостей удаления или перераспределения ресурса Ri (для всех процессов, использующих этот ресурс) не превышает сумму стоимостей удаления или перераспределения ресурса Rj (для всех процессов, использующих этот ресурс).

  3. Устранить все узлы, прекращая процессы, которым распределен выбранный в каждом узле ресурс Ri, или перераспределяя ресурсы, выделенные этим процессам, недостаток которых привел к тупику (удаление дуг с удалением вершин, представляющих процессы, или обращение дуг распределения в дуги запросов при перераспределении ресурсов пре-вращает выделенную вершину в сток).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]