- •5. Взаимодействие и синхронизация процессов
- •5.1. Взаимодействие процессов (Лекция 9)
- •5.1.1. Способы взаимодействия процессов
- •5.1.1.1. Проблема синхронизации
- •5.1.1.2. Критические секции, средства коммуникации процессов
- •5.1.1.3. Способы взаимодействия процессов, понятия взаимного исключения, взаимной блокировки, голодания процессов
- •5.1.2. Взаимные исключения
- •5.1.2.1. Требования к взаимным исключениям
- •5.1.2.2. Алгоритмы Деккера и Петерсона реализации взаимного исключения
- •5.2. Семафоры и другие средства синхронизации (Лекция 10)
- •5.2.1. Синхронизация задач с помощью семафоров
- •5.2.1.1. Семафоры Дейкстры
- •5.2.1.2. Условная синхронизация с помощью семафоров
- •5.2.1.3. Планирование очереди процессов, ожидающих у семафора
- •5.2.2. Другие средства синхронизации: счётчики событий, секвенсоры, мониторы, передача сообщений
- •5.2.2.1. Счетчики событий и секвенсоры
- •5.2.2.2. Объекты синхронизации, регламентированные posix
- •5.2.2.3. Мониторы Хоара
- •5.2.2.4. Передача сообщений
- •5.3. Классические проблемы межпроцессного взаимодействия (Лекция 11)
- •5.3.1. Проблема "обедающих философов"
- •5.3.1.1. Описание проблемы "обедающих философов"
- •5.3.1.2. Решение (алгоритм) проблемы "обедающих философов"
- •5.3.2. Проблема "спящего брадобрея" (задача о парикмахерской)
- •5.3.2.1. Описание задачи о парикмахерской
- •5.3.2.2. Решение (алгоритм) задачи о парикмахерской
- •5.3.3. Задача "читателей и писателей"
- •5.3.3.1. Описание задачи читателей и писателей
- •5.3.3.2. Решение (алгоритм) задачи читателей и писателей
- •5.4. Взаимоблокировки (Лекция 12)
- •5.4.1. Возникновение взаимоблокировок
- •5.4.1.1. Проблема взаимоблокировок
- •5.4.2. Устранение взаимоблокировок
- •5.4.2.1. Запрещение запуска процесса
- •5.4.2.2. Запрет выделения ресурса
- •5.4.3. Обнаружение взаимоблокировок
- •5.4.3.1. Алгоритм обнаружения взаимоблокировок
- •5.4.3.2. Действия, выполняемые после обнаружения взаимоблокировки
5.4.3. Обнаружение взаимоблокировок
5.4.3.1. Алгоритм обнаружения взаимоблокировок
Стратегии предотвращения взаимоблокировок консервативны. Они ограничивают доступ процессов к ресурсам и накладывают ограничения на процессы. Их противоположность – стратегия обнаружения взаимоблокировок. Запрошенные ресурсы выделяются процессам при первой возможности. Периодически ОС выполняет алгоритм, который позволяет обнаружить условие циклического ожидания. Проверка может выполняться как при каждом запросе ресурса, так и менее часто.
В обобщенном алгоритме обнаружения используются матрица распределения и вектор доступности. Кроме того, определена матрица запросов Q, такая, чтоqij – количество ресурсов типаj, затребованных процессомi. Алгоритм работает, помечая незаблокированные процессы. Изначально все процессы не помечены. После этого выполняются шаги:
1. Помечаем все процессы, у которых строки в матрице распределения состоят из одних нулей.
2. Временной вектор W инициализируем значениями вектора доступности.
3. Находим индекс i, такой, что процессi в настоящий момент не помечен, иi-я строка матрицыQне превышаетW, т.е. для всехk = 1, 2, …, mвыполняетсяQik Wk. Если такой строки нет, алгоритм прекращает работу.
4. Если такая строка имеется, помечаем процесс i и добавляем соответствующую строку матрицы распределения кW: Wk = Wk + Aik для всехk = 1, 2, …, m. Возвращаемся к шагу 3.
Взаимоблокировка имеется тогда и только тогда, когда после выполнения алгоритма существуют непомеченные процессы – каждый непомеченный процесс заблокирован. Этот алгоритм не гарантирует предотвращение взаимоблокировок, а определяет, имеется ли взаимоблокировка в настоящий момент.
5.4.3.2. Действия, выполняемые после обнаружения взаимоблокировки
Прекращение выполнения всех заблокированных процессов (наиболее распространенный подход).
Возврат каждого из заблокированных процессов в некоторую ранее определенную точку и перезапуск всех процессов.
Последовательное прекращение выполнения заблокированных процессов по одному до тех пор, пока взаимоблокировка не прекратится.
Последовательное перераспределение ресурсов до тех пор, пока взаимоблокировка не прекратится. Процесс, ресурсы которого перераспределяются, должен быть возвращен к состоянию, в котором находился до получения ресурса.
Для случаев 3-4 существуют критерии отбора процесса:
потребляющий минимальное время процессора;
с минимальным выводом информации;
с наибольшим временем ожидания;
с минимальным количеством захваченных ресурсов;
с минимальным приоритетом.
