Uploaded by Sad Tenshimi

реферат алгоритм банкира

advertisement
МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ
Федеральное государственное образовательное бюджетное учреждение
высшего профессионального образования
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М. А. БОНЧ-БРУЕВИЧА»
09.02.07 Информационные системы и программирование
Реферат
«Алгоритм банкира»
По дисциплине «Операционные системы и среды »
Выполнил:
студентка 535 гр.
Саидова Р. Ш.
Проверил:
преподаватель
Соловьева О. М.
Санкт-Петербург
2023
Алгоритм банкира
Можно избежать взаимоблокировки, если распределять ресурсы,
придерживаясь определенных правил. Среди такого рода алгоритмов наиболее
известен алгоритм банкира, предложенный Дейкстрой, который был впервые
реализован в операционной системе THE в конце 1960-х гг.
Принципы алгоритма банкира следующие:
 Каждый процесс должен априорно обозначить свои потребности в
ресурсах по максимуму.
 Когда процесс запрашивает ресурс, ему, возможно придется подождать
(выделение ресурсов по запросу не всегда может произойти немедленно).
 Когда процесс получает требуемые ресурсы, он должен их вернуть
системе за ограниченный период времени.
Структуры данных для алгоритма банкира
Пусть в системе имеется n процессов и m типов ресурсов.
Вектор Available длины m содержит информацию о доступных ресурсах.
Если Avaliable[j] = k, то в системе в данный момент доступно k единиц
ресурса j.
Матрица Max (n * m) отображает максимальные потребности процессов в
ресурсах. Если Max [i, j] = k, то процесс i может запросить, самое
большее, k единиц ресурса j.
Матрица Allocation (n * m) отображает фактическое выделение системой
ресурсов. Если Allocation [i, j] = k, то процессу i в данный момент выделено
системой k единиц ресурса j.
Матрица Need (n * m) отображает оставшиеся потребности процессов в
ресурсах. Если Need [i, j] = k, то процессу i могут потребоваться еще k единиц
ресурса j для завершения работы.
1
Имеет место следующее соотношение между элементами матриц:
Need [i, j] = Max [i, j] – Allocation [i, j].
Рис. 1. Общая блок-схема алгоритма банкира.
Сам алгоритм базируется на так называемых безопасных или надежных
состояниях (safe state).
Безопасное состояние – это такое состояние, для которого имеется по крайней
мере одна последовательность событий, которая не приведет к
взаимоблокировке. Модель алгоритма основана на действиях банкира, который,
имея в наличии капитал, выдает кредиты.
Суть алгоритма состоит в следующем.
Предположим, что у системы в наличии n устройств, например лент. ОС
принимает запрос от пользовательского процесса, если его максимальная
потребность не превышает n. Пользователь гарантирует, что если ОС в
состоянии удовлетворить его запрос, то все устройства будут возвращены
системе в течение конечного времени. Текущее состояние системы
называется надежным, если ОС может обеспечить всем процессам их
выполнение в течение конечного времени. В соответствии с алгоритмом
2
банкира выделение устройств возможно, только если состояние системы
остается надежным.
Рассмотрим пример надежного состояния для системы с 3 пользователями и 11
устройствами, где 9 устройств задействовано, а 2 имеется в резерве. Пусть
текущая ситуация такова:
Пользователи Максимальная потребность Выделенное пользователям
в ресурсах
количество ресурсов
Первый
9
6
Второй
10
2
Третий
3
1
Табл. 1. Пример надежного состояния для системы с 3 пользователями и 11
устройствами.
Данное состояние надежно. Последующие действия системы могут быть
таковы. Вначале удовлетворить запросы третьего пользователя, затем
дождаться, когда он закончит работу и освободит свои три устройства. Затем
можно обслужить первого и второго пользователей. То есть система
удовлетворяет только те запросы, которые оставляют ее в надежном состоянии,
и отклоняет остальные.
Термин ненадежное состояние не предполагает, что обязательно возникнут
тупики. Он лишь говорит о том, что в случае неблагоприятной
последовательности событий система может зайти в тупик.
Данный алгоритм обладает тем достоинством, что при его использовании нет
необходимости в перераспределении ресурсов и откате процессов назад.
Однако использование этого метода требует выполнения ряда условий.
Число пользователей и число ресурсов фиксировано. Число работающих
пользователей должно оставаться постоянным. Алгоритм требует, чтобы
клиенты гарантированно возвращали ресурсы. Должны быть заранее указаны
3
максимальные требования процессов к ресурсам. Чаще всего данная
информация отсутствует.
Наличие таких жестких и зачастую неприемлемых требований может склонить
разработчиков к выбору других решений проблемы взаимоблокировки.
Пример использования алгоритма банкира.
Алгоритм банкира может быть распространен на работу с несколькими
ресурсами. На рис. 2 показано, как он работает. Здесь изображены две матрицы.
Левая матрица показывает, сколько экземпляров каждого ресурса в данный
момент выделено каждому из пяти процессов. Правая показывает, сколько
экземпляров ресурсов все еще необходимо каждому процессу для завершения
его работы. На рис.2 эти матрицы назывались С и R. Как и в случае с ресурсом
одного типа, процессы перед выполнением своей работы должны сообщить о
своих общих потребностях в ресурсах, чтобы система в любой момент могла
вычислить правую матрицу.
Рис. 2. Алгоритм банкира для системы с несколькими типами ресурсов
Три вектора, изображенные справа от матриц, показывают соответственно
существующие ресурсы (вектор Е), занятые ресурсы (вектор Р) и доступные
ресурсы (вектор А). Судя по значению вектора Е, в системе имеется шесть
накопителей на магнитной ленте, три плоттера, четыре принтера и два привода
компакт-дисков. Из них заняты в данный момент пять накопителей, три
плоттера, два принтера и два привода компакт-дисков. Этот факт можно
4
установить путем сложения значений четырех столбцов, соответствующих
ресурсам, в левой матрице. Вектор доступных ресурсов — это разница между
количеством присутствующих в системе ресурсов, и количеством ресурсов
используемых в настоящее время.
Теперь может быть изложен алгоритм проверки состояния на безопасность.
1. Ищем в матрице R строку, соответствующую процессу, чьи
неудовлетворенные потребности в ресурсах меньше или равны вектору А. Если
такой строки не существует, то система в конце концов войдет в состояние
взаимоблокировки, поскольку ни один процесс не сможет доработать до
успешного завершения (предполагается, что процессы удерживают все
ресурсы, пока не завершат свою работу).
2. Допускаем, что процесс, чья строка была выбрана, запрашивает все
необходимые ему ресурсы (возможность чего гарантируется) и завершает свою
работу. Отмечаем этот процесс как завершенный и прибавляем все его ресурсы
к вектору А.
3. Повторяем шаги 1 и 2 до тех пор, пока либо все процессы будут помечены
как завершенные (в этом случае исходное состояние может считаться
безопасным), либо не останется процессов, чьи запросы могут быть
удовлетворены (в этом случае возникнет взаимоблокировка).
Если в шаге 1 подходят для выбора несколько процессов, то неважно, который
из них будет выбран: фонд доступных ресурсов либо увеличивается, либо в
худшем случае остается таким же.
Недостатки алгоритма банкира:
У алгоритма банкира имеются серьезные недостатки, из-за которых
разработчик может выбрать другой подход для решения проблемы тупиков:
 Алгоритм банкира исходит из фиксированного количества ресурсов.
5
 Он требует, чтобы число работающих пользователей оставалось
постоянным
 Данный алгоритм требует, чтобы распределитель гарантированно
удовлетворял запросы за конечный период времени. Очевидно, что для
реальных систем нужны более конкретные гарантии.
 Алгоритм требует, чтобы клиенты гарантированно возвращали ресурсы.
Опять таки в реальных системах требуются, гораздо более конкретные
гарантии.
 · Требуется, чтобы пользователи заранее указали свои максимальные
потребности в ресурсах. При динамическом распределении ресурсов
трудно оценить максимальные потребности пользователей.
 В следующей секции рассмотрены другие способы предотвращения
тупиков.
Резюме:

Алгоритм запроса ресурсов позволяет вам представлять поведение
системы, когда конкретный процесс делает запрос ресурса.

Алгоритм банкира хранит множество ресурсов, удовлетворяющих
требованиям как минимум одного клиента

Самый большой недостаток алгоритма банкира заключается в том, что он
не позволяет процессу изменять свою максимальную потребность во
время обработки.
6
Download