Механизм - вытесняющая многозадачность, основанная на использовании приоритетов и квантования.
Потоков тут нет, планируем на уроне процессов.
Существует 3 класса процессов, в зависимости от их задач:
- класс реального времени
- класс системных процессов
- класс процессов разделения времени
Процессы системного класса
- стратегия фиксированных приоритетов. Приоритет однажды назначается ядром и больше не меняется.
Процессы реального времени:
- стратегия фиксированных приоритетов, но пользователь может их менять.
- для каждого уровня приоритета процессов этого класса предусмотрен свой квант времени
- при наличии готовых к выполнению процессов реального времени, другие процессы не рассматриваются (поэтому их надо тщательно планировать)
Процессы разделения времени:
- долго были единственными в этой ОС, и по умолчанию любой процесс создается именно этого класса
- стратегия динамических приоритетов
- величина приоритета состоит из пользовательской и системной части:
* пользовательская часть может быть снижена пользователем или админом (не повышена)
* системная часть может быть снижена, если процесс долго занимает процессор, не уходя в ожидание и повышении процессам, которые часто уходят в состояние ожидания.
Система OS/2
Планирование на основе квантования и абсолютных динамических приоритетов
Существует 4 приоритетных класса:
- критический (time critical) – потоки, выполняющие задачи управления сетью и тд
- серверный (server) – обслуживают серверные приложения
- стандартный (regular) – обслуживают пользовательские программы
- о статочны й (idle) – экранная заставка, например.
В каждом классе – 32 приоритетных уровня.
· Поток из менее приоритетного класса не может быть выбран, пока есть поток более приоритетного класса.
· Внутри класса потоки выбираются по приоритетам.
· Потоки с одинаковым приоритетом – в циклическом порядке.
Планировщик динамически меняет приоритеты потоков, если
· Поток ожидает больше, чем прописано в специальной переменной. (Его приоритет повышается, но не выше чем нижняя граница диапазона критического класса)
· Поток ушел на ввод-вывод. Когда вернется – у него будет максимальный для своего класса приоритет
· Поток поступил на выполнение
Величина кванта времени здесь тоже динамическая (зависит от загрузки системы и интенсивности подкачки) – от 32 мс до 65536 мс. Если поток был прерван до истечения кванта, то в след раз квант увеличится на 1 таймер (около 32 мс), и так пока не достигнет предела, прописанного в текущих настройках системы.
Система Windows 2000
Система с приоритетам и квантованием, вытесняющая многозадачность.
Приоритеты имеют 32 уровня (0- 31 включительно).
Делятся на 3 диапазона:
- 0 – системный поток для очистки страниц памяти. Готовит страницы памяти, нужен для виртуализации, для гарантированной защиты информации.
-1 – 15 вкл – диапазон динамических приоритетов (могут меняться в процессе работы в зависимости от параметров)
- 16-32 вкл – диапазон статических приоритетов (в процессе работы не меняются)
В зависимости от использования выделяется ряд классов приоритетов процессов:
1) Фоновые потоки (Idle class) – уровень 4
2) – ниже нормального (Below normal class) – уровень 6
3) Нормальный (Normal class) – уровень 8
4) – выше нормального (Above normal class) – уровень 10
5) Высокий (High class) – уровень 13
___________________________
6) Реальное время (Real time class)– уровень 24
2 и 4 появились начиная с Винды 2000;
Приоритет каждого потока = приоритет его процесса + относительный приоритет самого потока. Существует 7 относительных приоритетов потоков:
· Normal: такой же как и у процесса;
· Above normal: +1 к приоритету процесса;
· Below normal: -1;
· Highest: +2;
· Lowest: -2;
· Time critical: устанавливает базовый приоритет потока для Real time класса в 31, для остальных классов в 15.
· Idle: устанавливает базовый приоритет потока для Real time класса в 16, для остальных классов в 1.
Для процессов класса NORMAL_PRIORITY_CLASS при переключении из фонового режима в режим переднего плана и в ряде других случаев приоритет потока, с которым создано окно переднего плана, повышается. Так работают все клиентские операционные системы от Microsoft. Серверные операционные системы оптимизированы для выполнения фоновых приложений.
К тому же Windows 2000 Professional и Windows 2000 Server имеют разные алгоритмы выделения квантов времени. Первая — клиентская — операционная система выделяет время короткими квантами переменной длины для ускорения реакции на приложения переднего плана (foreground). Для сервера же более важна стабильная работа системных служб, поэтому во второй ОС система распределяет длинные кванты постоянной длины.
Планирование процессов и потоков в системах реального времени.
Главный критерий эффективности в этих системах – реактивность, обеспечение временных характеристик вычислительного процесса и быстрая реакция на управляющие сигналы.
Но задача облегчается, тем, что:
- заранее известен весь набор выполняемых задач
- есть четкая информация о сроках и задачах, на ее основе можно
- создать статическое расписание
- создать нужный динамический алгоритм
В зависимости от последствий ошибки, системы делятся:
- системы жесткого реального времени (запуск спутника, АЭС)
- системы мягкого реального времени (система бронирования билетов)
ЖЕСТКОГО РВ
Для систем жесткого реального времени время выполнения КАЖДОЙ из критических задач должно быть гарантировано при ЛЮБОМ сценарии поведения системы.
Этого можно добиться:
- исчерпывающим тестированием системы
- статическим расписанием
- составлением математически обоснованного динамического алгоритма
Возможность составить статическое расписание есть не всегда, и эта возможность просчитывается сложными математическими вычислениями.
Один из критериев такой возможности – время вычисления задачи должно быть меньше предельного срока на ее выполнение.
МЯГКОГО РВ
Время иногда может быть нарушено, не страшно.
___
Типы задач в системе РВ:
- периодические – можно определить все будущие моменты запроса задачи
- спорадические – время запросов заранее не известно
Также задачи бывают:
- независимые
- зависимые
Планирование зависимых задач важнее, чем планирование независимых задач, и сложнее.
Можно:
- разделить планирование на 2 части, одну из них выполнять заранее, а вторую – во время работы системы. Например, предварительно можно вычислить временные интервалы, в которые нельзя назначать выполнение задач, содержащих критические секции.
- ввести ограничения на поведение набора задач
Классический алгоритм для жестких систем реального времени разработан в 1973 году Лью и Лейландом.
Этот алгоритм основан на статических приоритетах
- запросы на выполнение всех задач набора, имеющих жесткие ограничения на время реакции, являются периодическими
- Все задачи независимы
- Срок выполнения каждой задачи равен ее периоду
- Максимальное время выполнения каждой задачи известно и постоянно
- Максимальный коэффициент загрузки процессора не превышает 0.7
Задачам назначаются статические приоритеты в зависимости от величины их периода выполнения: чем он короче, тем больше приоритет.
Существуют также алгоритмы, основанные на динамических приоритетах, назначаются в соответствии с текущими состояниями задачи (дедлайном).
Чем меньше время у задачи до дедлайна, тем выше ее приоритет.
Обработка прерываний (назначение, типы, механизм, маскирование). Диспетчеризация и приоритеты прерываний. Централизованная схема диспетчеризации прерываний на примере Windows NT. Отложенный (DPS) и асинхронный (APS) вызовы процедур для обработки прерываний. Выполнение обработки прерываний в контексте и вне контекста процесса.
Прерывания – основная движущая сила любой ОС.
Назначение
Система прерываний переводит процессор на выполнение потока команд, отличного от того, который на нем выполнялся до сих пор с последующим возвратом к исходному потоку.
Т.о. механизм прерываний очень похож на механизм вызова процедур, однако переключение по прерываниям непредсказуемо, с отличие от вызова процедуры, планируемого программистом.
Типы прерываний, в зависимости от источника, таковы:
- внешние
- внутренние
- программные
Внешние = аппаратные – это действия пользователя или поступление сигналов от внешних устройств. Являются асинхнонными по отношению к выполняемой проге.
Внутренние прерывание (исключения) –происходят, если в процессе исполнения программы возникает аварийная ситуация (выход за границы массива, деление на 0 и тд);
Программные прерывания – не настоящие прерывания, а сознательная имитация таковых в заранее запланированных местах программы.
Механизм прерываний
Существует 2 способа, с помощью которых шины выполняют прерывания:
- Векторный
- Опрашиваемый
При использовании векторных прерываний устройствам назначается вектор прерываний (электрический сигнал, несущий инфу об определенном номере, закрепленном за определенным устройством). Устройство запрашивает прерывание. Процессор подтверждает запрос и выполняет цикл подтверждения прерывания, в котором устройство должно себя идентифицировать. Для этого оно выставляет свой вектор прерываний, а процессор, используя этот вектор, находит соответствующий обработчик прерываний.
При использовании опрашиваемых прерываний процессор получает от устройства только инф-ю об уровне приоритета прерывания. С каждым уровнем может быть связано несколько устройств, и чтобы определить нужное, процессор вызывает все обработчики прерываний для данного типа приоритета, пока один из них не «распознает» свое прерывание.
Упорядочивание обработки прерываний достигается за счет приоритезации и маскирования
Приоретизация:
Каждому источнику прерываний назначается класс, каждому классу соответствует свой уровень приоритета.
Приоритеты могут быть:
- относительные (прерывание выбрано на обработку и обрабатывается хоть гром греми)
- абсолютные (прерывание начало обрабатываться, но при поступлении более приоритетного прерывания его обработка прекращается). Это достигается тем, что есть переменная, в которую записывается приоритет прерывания, которое сейчас обрабатывается. С ней сравнивается значение приоритета вновь поступивших прерываний.
Маскирование (собственно, оно есть и в только что описанной схеме приоретизации) – запросы на прерывания маскируются, то есть не обслуживаются. Маскирование предполагает возможность маскирования прерываний любого уровня, вне зависимости от их приоритета.