
- •Раздел 3. Параллельное выполнение программ
- •3.1. Концепция процесса
- •3.2. Средства описания параллелизма
- •3.2.1. Графические средства
- •3.2.3. Описание процессов средствами uml
- •3.2.4. Языковые средства описания параллелизма
- •3.3. Организация ядра ос
- •3.3.1. Ядро как средство организации виртуальной машины
- •3.3.2. Состояния процесса и структура ядра
- •3.3.3. Дескрипторы процессов
- •3.3.4. Очереди процессов в ядре
- •3.4. Общая характеристика примитивов ядра
- •3.5. Примитивы создания и уничтожения процессов
- •3.6. Примитивы синхронизации процессов
- •3.6.1. Простейшие примитивы, не учтенные в классификации
- •3.6.2. Примитивы временной синхронизации
- •3.6.3. Примитивы событийной синхронизации процессов
- •3.7. Общий семафор как средство событийной синхронизации
- •3.8. Средства синхронизации в существующих операционных системах
- •3.9. Монитор как средство реализации взаимного исключения
- •3.10. Примитивы ядра для обмена сообщениями
- •3.10.1. Буфер как средство коммуникации между процессами
- •3.10.2. Почтовый ящик с очередью сообщений
- •3.10.3. Средства коммуникаций в существующих ос
- •3.11. Проблема тупиков при взаимодействии процессов
- •3.12. Планирование загрузки процессора в ядре
- •3.12.1. Классификация алгоритмов планирования
- •3.12.2. Тесты планируемости задач и классификация задач
- •3.12.3. Динамическое планирование
- •3.12.3.1. Планирование независимых задач
- •1. Алгоритм монотонной скорости.
- •2. Алгоритм “задача с минимальным предельным сроком завершения - первая”
- •3. Алгоритм минимальной неопределенности
- •3.12.3.2. Планирование зависимых задач
- •3.12.4. Статическое планирование
3.12.3.2. Планирование зависимых задач
Планирование зависимых задач с ограничениями предшествования и взаимного исключения гораздо более важно, чем планирование независимых задач.
Обычно, параллельно выполняющиеся задачи должны обмениваться информацией и обращаться к общим ресурсам, чтобы достигать каких-то общих системных целей.
Таким образом, наличие ограничений предшествования и взаимного исключения скорее являются нормой, чем исключением.
Проблема планирования множества процессов, которые используют семафоры для преодоления взаимного исключения, относится к классу нерешаемых проблем.
Чрезвычайно дорого искать оптимальный план для множества зависимых задач.
Ресурсы, требуемые для решения проблемы динамического планирования, соразмерны с ресурсами, необходимыми для выполнения самих прикладных задач.
Чем больше ресурсов потратится на планирование, тем меньше ресурсов останется в распоряжении прикладных задач для выполнения фактической работы.
Существуют следующие пути выхода из этого трудного положения:
Вопрос (
Использование мощных вычислительных ресурсов (например, многопроцессорность).
Деление проблемы планирования на две части. Одна часть может быть решена неоперативно (до выполнения), а вторая часть должна решаться во время выполнения.
Введение существенных ограничений на характер задач в части регулярности. Т. е. спорадические задачи заменять периодическими. Применять не прерывания, а циклический опрос.
)Вопрос
Второй и третий пути ведут в направлении использования статических решений проблемы планирования.
Основной путь создания алгоритмов планирования зависимых задач – это модифицирование алгоритма монотонной скорости.
Протокол наследования приоритета и протокол предельного приоритета
Протокол предельного приоритета используется для планирования множества периодических задач, которые имеют исключительный доступ к общим ресурсам, защищенным семафорами.
Эти общие ресурсы, например, общие структуры данных, могут быть использованы для реализации межпроцессных коммуникаций.
Вопрос (
Известно явление, называемое инверсией приоритета.
На примере его можно иллюстрировать следующим образом.
Есть 3 задачи Т1, Т2 и Т3 (Т1 имеет высший приоритет, а Т3 имеет низший приоритет), которые планируются алгоритмом монотонной скорости.
Т1 и Т3 требуют исключительного доступа к общему ресурсу, защищенному семафором С.
Пусть в какой-то момент времени низкоприоритетная задача Т3 владеет критическим ресурсом.
Пусть в этот момент высокоприоритетная задача Т1 запрашивает сервис.
Т1 должна ждать, пока Т3 не пройдет свой критический участок и не освободит семафор С.
Если в течение этого времени сервис запрашивает задача Т2, то он будет ей отдан, поскольку Т2 имеет более высокий приоритет, чем Т3.
Таким образом задача Т2 со средним приоритетом задерживает задачу Т3 и, следовательно, задачу Т1, задачу с высоким приоритетом.
Такое явление и называется инверсией приоритета.
Было предложено поднять приоритет низкоприоритетной задачи Т3, пока она находится в критической секции, до высокого приоритета блокированной задачи Т1, и, следовательно,, устранить возможность того, что среднеприоритетная задача Т2 вмешается в течение критической секции низкоприоритетной задачи.
)Вопрос
Вопрос (
Это основная идея протокола наследования приоритета. Однако, анализ показал, что этот протокол может вести к цепным блокированиям и тупикам.
Чтобы решить эти проблемы и был разработан протокол предельного приоритета.
)Вопрос
Вводится понятие предельного приоритета семафора, который определяется как приоритет самой приоритетной задачи, которая может захватить этот семафор.
Задаче Т позволено войти в критическую секцию, если только ее (задачи) назначенный приоритет выше, чем предельные приоритеты всех семафоров, захваченных в данный момент другими задачами.
Задача Т выполняется со своим назначенным приоритетом пока она в критической секции и не блокирует более приоритетные задачи.
Если она блокирует задачи, то она наследует приоритет самой высокоприоритетной задачи, которую она блокирует.
Когда она выходит из критической секции, она восстанавливает приоритет, который она имела в момент входа в критическую секцию.