Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Экзамен / OS_2014_otvety.docx
Скачиваний:
44
Добавлен:
15.02.2021
Размер:
1.65 Mб
Скачать
  1. Обнаружение взаимоблокировки при наличии одного ресурса каждого типа.

Методы борьбы с блокировками:

  • Метод страуса. Если мы будем игнорировать проблему, то она возможно не принесет вреда. Применяется, когда потери от взаимоблокировок незначительны. Популярные ОС обычно так и делают.

  • Обнаружение и исправление после возникновения блокировки (если существуют методы)

  • Динамическое избежание взаимоблокировок (ОС не допускает их возникновения)

  • Предотвращение с помощью опровержения первого условия необходимости (не давать ресурсы монопольно)

Обнаружение взаимоблокировки при наличии одного ресурса каждого типа:

Рисунок 8. Система из 7ми процессов и 6ти ресурсов

  1. Начальное условие: задаем L - пустой список. Ребра не маркированы

  2. Текущий узел добавляем в конец списка L и проверяем количество появлений узла в списке. Если есть повторы, то есть цикл, то алгоритм завершается

  3. Для заданного узла смотрим, выходит ли у него хоть 1 немаркированное ребро. Да - переход к 4, нет - переход к 5

  4. Случайным образом выбираем немаркированное ребро и отмечаем его. По нему переходим к новому текущему узлу и возвращаемся к 2.

  5. Удаляем последний узел из списка и возвращаемся к следующему узлу. Обозначаем его текущим и возвращаемся к 2. Если это первоначальный узел, значит граф не содержит циклов и алгоритм завершится.

  1. Обнаружение взаимоблокировок при наличии нескольких ресурсов каждого типа.

В системе имеем наборы однотипный ресурсов (одного класса). Классов ресурсов m. Процессов n. Для обнаружения тупиков поддерживается несколько структур.

  • E - вектор существующих ресурсов

  • С - матрица текущего распределения

Элемент Cij - показывает, сколько экземпляров j-го класса ресурсов принадлежит i-му процессу.

  • R - матрица запросов, показывает, сколько еще экземпляров ресурсов нужно процессу для благополучного завершения (j-го ресурса i-му процессу)

  • A - вектор доступных ресурсов.

Алгоритм:

  1. Ищем немаркированный процесс Pi, для которого i-я строка матрицы R <=A (запросы меньше возможностей)

  2. 2Если так, процесс найдет, прибавляем i-ю строку матрицы С к вектору А и возвращаемся к 1. Если таких процессов не существует, то алгоритм заканчивается (если все процессы промаркированы, то тупика нет).

  1. Предотвращение взаимоблокировки. Алгоритм банкира для одного вида ресурсов.

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

Алгоритм банкира для 1 вида ресурсов (основан на избегании опасных состояний):

Алгоритм рассматривает запросы на предоставления ресурсов по мере их поступления. Каждый раз проверяет, приведет ли удовлетворение запроса к безопасному состоянию. Если да - запрос удовлетворяется, если нет - откладывается на более позднее время.

  1. Предотвращение взаимоблокировки. Алгоритм банкира для нескольких видов ресурсов.

Рассмотрим систему:

Вектора: E=(6342) - существующие ресурсы, P=(5322) - занятые ресурсы, A=(1020) - доступные ресурсы.

Рисунок 9. Алгоритм банкира для несколько видов ресурсов

Если состояние безопасное, то ресурс выделить можно, если нет - нельзя. На практике эти алгоритмы сложно реализовать.

Соседние файлы в папке Экзамен