
Задача №3.
Существует
вычислительная система с тремя классами
доступных ресурсов. В системе
одновременно запущено 5 процессов,
каждый их которых использует по
несколько экземпляров каждого класса
ресурсов
.
В некоторый момент времени все процессы
запрашивают у операционной системы
еще определенное количество ресурсов
.
Придумайте и запишите минимально возможные значения вектора свободных ресурсов таким образом, чтобы система имела выход из тупиковой ситуации. Рассчитайте значение вектора существующих ресурсов.
Правила
формирования матриц
и
:
Первый столбец матрицы соответствует значениям вашего варианта. Второй столбец соответствует значениям следующего варианта. Третий столбец соответствует значениям варианта с порядковым номером на 2 больше вашего.
Первый
столбец матрицы R соответствует значениям
варианта с порядковым номером на 3
больше вашего. Второй столбец
соответствует значениям
варианта с порядковым номером на 4
больше вашего. Третий столбец соответствует
значениям
варианта с порядковым номером на 5
больше вашего.
Исходные данные:
Решение.
Для получения минимального количества свободных ресурсов, которых должно хватить для выхода системы из состояния взаимоблокировки, возьмём минимальное количество ресурсов:
Если ОС позволит выполнить процесс 3, дав ему все необходимые ресурсы из вектора , то по окончании его он освободит все используемые им ресурсы.
Далее следует предоставить свободные ресурсы процессу 4:
Затем при последовательном выполнении процессов в любом порядке (например: процесс 5, процесс 1, процесс 2) ОС может выйти из состояния взаимоблокировки.
Вектор существующих ресурсов в таком случае будет равен:
Задача №4.
Для
той же системы (задача 3) возможны 5
вариантов векторов доступных ресурсов:
.
Для каждого значения вектора A запишите
порядок предоставления требуемых
ресурсов процессам, согласно которому
система имеет выход из тупиковой
ситуации. Используйте «алгоритм банкира»
Дейкстры. Для каждого случая рассчитайте
значения вектора существующих ресурсов
в системе.
Правила
формирования векторов
:
Первый
элемент векторов
соответствует значениям
,
где
— значения вашего варианта таблицы
заданий. Второй элемент векторов
соответствует значениям
следующего варианта. Третий элемент
векторов
соответствует значениям
варианта с порядковым номером на 2
больше вашего.
Исходные данные:
Решение.
При
доступных ресурсах
невозможен выход из состояния
взаимоблокировки из-за нехватки
ресурсов. При доступных ресурсах
можем выйти из состояния взаимоблокировки
различными путями, но первым процессом
должен быть или третий, или четвертый.
К примеру,
или
.
При
вектор существующих ресурсов будет
равен
,
а при
–
.
Задача №5.
В компьютере с большим количеством устройств запущены 5 процессов ( ) для поиска наличия взаимоблокировок ОС периодически составляет граф Холта для всех ресурсов и процессов.
В определенный момент времени, при анализе состояния процессов, ОС обнаружила, что каждый процесс ранее запросил количество устройств, равное значениям соответственно, и уже получил в пользование количество устройств, равное, соответственно, значениям .
При помощи графов Холка изобразите состояние системы, в которой пять работающих процессов , а количество устройств равно сумме . Пронумеруйте устройства. Расставьте все дуги между процессами и устройствами, а также стрелки направлений на дугах.
Выделите все взаимоблокировки, выпишите последовательности из имен процессов и номеров устройств, находящихся одновременно в состоянии взаимоблокировки. Отдельно выпишите имена процессов, не находящихся в состоянии взаимоблокировок.
Какой из процессов нужно завершить принудительно, чтобы остальные смогли выйти из тупика?
Возможно, ли перегруппировать ресурсы так, чтобы избежать взаимоблокировки?
В какой последовательности должны завершаться процессы, не находящиеся в тупике, чтобы все процессы вышли из заблокированного состояния и продолжили работу?
Исходные данные:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Решение.
Имеются 2 взаимоблокировки:
Если процесс принудительно завершить, то взаимоблокировки устранятся. Чтобы избежать взаимоблокировок, необходимо иметь граф:
Для
успешного завершения всех процессов
необходима строгая последовательность
некоторых процессов:
,
а именно:
запускается после
,
а
после завершения выполнения
,
но
выполняется строго после
.