OS_Lektsia_6_Vzaimoblokirovka_protsessov.pptx
- Количество слайдов: 53
Взаимоблокировка процессов L/O/G/O 09. 02. 2018 Взаимоблокировка процессов 1
Основные понятия • Взаимоблокировка процессов может происходить когда несколько процессов борются за один ресурс • Тупик (Deadlock) - множество заблокированных процессов, каждый из которых владеет некоторым ресурсом и ожидает ресурса, которым владеет какой-либо другой процесс из этого множества 09. 02. 2018 Взаимоблокировка процессов 2
Основные понятия • Типы ресурсов - R 1, R 2, . . . , Rm Процессор, память, устройства ввода-вывода • Каждый тип ресурса Ri имеет Wi экземпляров. • Каждый процесс использует ресурс одним из следующих способов: – request (запрос) – use (использование) – release (освобождение) Взаимоблокировка процессов 3
Основные понятия • Ресурсы бывают выгружаемые и невыгружаемые, аппаратные и программные и т. д. • Выгружаемый ресурс – этот ресурс можно безболезненно забрать у процесса (например, память) • Невыгружаемый ресурс – этот ресурс нельзя забрать у процесса без потери данных (например, память) 09. 02. 2018 Взаимоблокировка процессов 4
Характеристики тупика Тупик может возникнуть, если одновременно выполняются четыре условия: 1. Взаимное исключение: Только один процесс в каждый момент времени может получить доступ к ресурсу 2. Удержание и ожидание: процесс, удерживающий один ресурс, ожидает приобретения других ресурсов, которыми обладают другие процессы. 3. Отсутствие прерываний: ресурс может быть освобожден процессом только добровольно, когда процесс завершает свою работу.
Характеристики тупика 4. Циклическое ожидание: существует множество процессов {P 0, P 1, …, P 0} , таких, что P 0 ожидает ресурса, которым обладает P 1, P 1 ожидает ресурса, которым обладает P 2, … , Pn– 1 ожидает ресурса, которым обладает Pn , а Pn ожидает ресурса, которым владеет P 0.
Моделирование взаимоблокировок 09. 02. 2018 Взаимоблокировка процессов 7
Моделирование взаимоблокировок • Пример: 3 процессам A, B, C требуются для своего выполнения 3 ресурса R, S, T Алгоритм планирования: FIFO При последовательном выполнении процессов, взаимоблокировка не происходит 8
Моделирование взаимоблокировок Алгоритм планирования: Циклический Взаимоблокировка 9
Моделирование взаимоблокировок Допустим, система, зная о предстоящей взаимоблокировке, заблокирует процесс В Взаимоблокировка не возникает 10
Методы борьбы с взаимоблокировками • Пренебрежением проблемой в целом (страусовый алгоритм). • Обнаружение и устранение (взаимоблокировка происходит, но оперативно ликвидируется). • Динамическое избежание тупиков. • Предотвращение четырех условий, необходимых для взаимоблокировок.
Методы борьбы с взаимоблокировками Пренебрежением проблемой в целом (страусовый алгоритм): Если вероятность взаимоблокировки очень мала, то ею легче пренебречь, т. к. код исключения может очень усложнить ОС и привести к большим ошибкам. Также многие взаимоблокировки тяжело обнаружить. • Этот алгоритм используется как в UNIX, так и в Windows. 12
ОБНАРУЖЕНИЕ И УСТРАНЕНИЕ ВЗАИМОБЛОКИРОВОК 09. 02. 2018 Взаимоблокировка процессов 13
Обнаружение и устранение взаимоблокировок • Система не предотвращает взаимоблокировку, а пытается ее обнаружить и устранить • Существует 2 алгоритма обнаружения взаимоблокировок: – При наличии одного ресурса каждого типа – При наличии нескольких ресурсов каждого типа 14
Обнаружение и устранение взаимоблокировок Обнаружение тупиков при наличии одного ресурса каждого типа • Строим и поддерживаем граф «процессы ресурсы» • Периодически вызываем алгоритм, который проверяет отсутствие циклов в этом графе. Алгоритм обнаружения цикла в графе требует O(n 2) операций, где n – число вершин в графе.
Обнаружение и устранение взаимоблокировок • Обнаружение тупиков при наличии одного ресурса каждого типа 7 процессов 6 ресурсов 16
Взаимоблокировка процессов 17 Алгоритм обнаружения взаимоблокировок
Обнаружение и устранение взаимоблокировок Обнаружение тупиков при наличии нескольких ресурсов каждого типа Обозначения: • m - число классов ресурсов (например: принтеры это один класс) • n - количество процессов • P(n) - процессы • E - вектор существующих ресурсов 18 • E(i) - количество ресурсов класса i
Обнаружение и устранение взаимоблокировок Обозначения (продолжение): • A - вектор доступных (свободных) ресурсов • A(i) - количество доступных ресурсов класса i • С - матрица текущего распределения (какому процессу, какие ресурсы принадлежат) • R - матрица запросов (какой процесс, какой ресурс запросил)
Обнаружение и устранение взаимоблокировок • C(ij) - количество экземпляров ресурса j, которое занимает процесс i. Общее количество ресурсов равно сумме занятых и свободных ресурсов 09. 02. 2018 Взаимоблокировка процессов 20
09. 02. 2018 Взаимоблокировка процессов 21
Алгоритм обнаружения тупиков при наличии нескольких ресурсов каждого типа 22
Методы борьбы с взаимоблокировками • Если в результате работы алгоритма остаются немаркированные процессы, значит обнаружен тупик • Рассмотрим пример: 23
09. 02. 2018 Взаимоблокировка процессов 24
Обнаружение и устранение взаимоблокировок • Когда можно искать тупики: – При запросе очередного ресурса (сильно загружает систему) – Через определенный промежуток времени (замедляет работу, особенно в интерактивных системах) – Если загрузка процессора слишком велика 09. 02. 2018 Взаимоблокировка процессов 25
Обнаружение и устранение взаимоблокировок Выход из взаимоблокировки: • Восстановление при помощи принудительной выгрузки ресурса • Восстановление через откат • Восстановление путем уничтожения процесса 09. 02. 2018 Взаимоблокировка процессов 26
Обнаружение и устранение взаимоблокировок • Восстановление при помощи принудительной выгрузки ресурса Как правило, требует ручного вмешательства (например, принтер) 09. 02. 2018 Взаимоблокировка процессов 27
Обнаружение и устранение взаимоблокировок • Восстановление через откат Состояние процессов записывается в контрольных точках, и в случае тупика можно сделать откат процесса к некоторому безопасному состоянию. С принтером опять будут проблемы. 09. 02. 2018 Взаимоблокировка процессов 28
Обнаружение и устранение взаимоблокировок • Восстановление путем уничтожения процесса: – Прекратить все заблокированные процессы. – В каждый момент времени прекращать только один процесс, до тех пор, пока тупик не будет ликвидирован. 09. 02. 2018 Взаимоблокировка процессов 29
Обнаружение и устранение взаимоблокировок • В каком порядке необходимо прекращать процессы? – Приоритет процесса. – Насколько долго процесс уже выполнялся и сколько еще осталось до его завершения. – Насколько много ресурсов требовал процесс. – Сколько ресурсов еще требуется для его завершения. – Сколько процессов требуется прекратить. – Является ли процесс интерактивным или пакетным? 30
Обнаружение и устранение взаимоблокировок • Недостатки приведенных алгоритмов: – Проблемы с устройствами ввода / вывода – Большая загрузка системы на циклы проверки наличия тупиков • В реальных системах они не годятся 09. 02. 2018 Взаимоблокировка процессов 31
ДИНАМИЧЕСКОЕ ИЗБЕГАНИЕ ТУПИКОВ 09. 02. 2018 Взаимоблокировка процессов 32
Динамическое избегание тупиков • Система должна знать, является ли предоставление ресурса безопасным или нет • Рассмотрим пример: процессам А и В требуется распечатать свои данные на принтер и плоттер 09. 02. 2018 Взаимоблокировка процессов 33
Граф распределения ресурсов для стратегии избежания тупиков
Небезопасное состояние на графе распределения ресурсов
• Процессам нужно обойти прямоугольник, охватывающий всю заштрихованную область Динамическое избегание тупиков 36
Динамическое избегание тупиков Безопасные и небезопасные состояния • В безопасном состоянии система может гарантировать, что все процессы закончат свою работу • Рассмотрим систему: 10 экземпляров ресурса, 3 процесса 37
Безопасное состояние 09. 02. 2018 Взаимоблокировка процессов 38
Небезопасное состояние 39
Алгоритм банкира (принципы) Автор: Э. Дейкстра Впервые применен в операционной системе THE • Ресурсы с множественными экземплярами. • Каждый процесс должен априорно обозначить свои потребности в ресурсах по максимуму. • Когда процесс запрашивает ресурс, ему, возможно, придется подождать. • Когда процесс получает все свои ресурсы, он должен их вернуть за ограниченный период времени.
Алгоритм банкира для одного вида ресурсов Рассмотрим систему: • Банкир может дать 10 кредитов (ресурсы). • К нему попеременно обращаются 4 клиента (процесса). 09. 02. 2018 Взаимоблокировка процессов 41
Алгоритм банкира для одного вида ресурсов Алгоритм: • Банкиру поступает запрос от клиента на получение кредита • Банкир проверяет, приводит ли этот запрос к небезопасному состоянию. • Банкир в зависимости от результата проверки предоставляет кредит или отказывает в кредите. 09. 02. 2018 Взаимоблокировка процессов 42
а) безопасное б) безопасное распределени ресурсов е ресурсов 09. 02. 2018 Взаимоблокировка процессов в) небезопасно е распределен ие ресурсов 43
09. 02. 2018 Взаимоблокировка процессов 44
Алгоритм банкира для нескольких видов ресурсов Пусть дано n = число процессов; m = число типов ресурсов • Вектор A: вектор доступных в данный момент ресурсов. • Вектор Е: существующие ресурсы. • Вектор P: вектор занятых ресурсов • Матрица C : текущее распределение ресурсов между процессами • Матрица R: матрица запросов ресурсов процессами 45
Алгоритм банкира для нескольких видов ресурсов • Рассмотрим пример: – 5 процессов: A, B, C, D, E – 4 типа ресурсов: принтеры, плоттеры, сканеры, устройства DVD-дисков Вектора – E = (6, 3, 4, 2) – существующие ресурсы – P = (5, 3, 2, 2) – занятые ресурсы – A = (1, 0, 2, 0) – доступные ресурсы 46
E = (6, 3, 4, 2) – существующие ресурсы P = (5, 3, 2, 2) – занятые ресурсы A = (1, 0, 2, 0) – доступные ресурсы 47
09. 02. 2018 Взаимоблокировка процессов 48
ПРЕДОТВРАЩЕНИЕ ЧЕТЫРЁХ УСЛОВИЙ ТУПИКОВ 09. 02. 2018 Взаимоблокировка процессов 49
Предотвращение 4 условий тупиков • Взаимное исключение: – не требуется для разделяемых ресурсов; – должно соблюдаться только для неразделяемых ресурсов. • Таким образом, минимизируется количество процессов, борющихся за ресурсы
Предотвращение 4 условий тупиков • Удержание и ожидание – Необходимо гарантировать, чтобы, процесс, запрашивающий некоторый ресурс, не владел никакими другими ресурсами. – Либо требовать от процессов, чтобы они запрашивали и приобретали все необходимые ресурсы до начала их исполнения Приводит к недостаточному использованию ресурсов; возможна ситуация “голодания” (starvation).
Предотвращение 4 условий тупиков Отсутствие перераспределения ресурсов – Если процесс, обладающий некоторыми ресурсами, запрашивает другой ресурс, который не может быть ему немедленно выделен, то все ресурсы, которыми он обладает, должны быть освобождены. – Перераспределяемые ресурсы добавляются к списку ресурсов, которые ожидает процесс. – Процесс будет перезапущен только в случае, если он может вновь получить все старые ресурсы, которыми он обладал, а также все новые ресурсы, которые он запрашивает.
Предотвращение 4 условий тупиков • Циклическое ожидание – ввести общую нумерацию (упорядочение) всех типов ресурсов, и потребовать, чтобы процесс запрашивал ресурсы только в порядке возрастания номеров. • Другой способ заключается в требовании, чтобы процесс освободил занятый ресурс, прежде чем занять новый
OS_Lektsia_6_Vzaimoblokirovka_protsessov.pptx