Файл: Литература по курсу аос (по всем вопросам должен быть представлен краткий рукописный конспект в общей тетради).docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 08.02.2024

Просмотров: 88

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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). Для сервера же более важна стабильная работа системных служб, поэтому во второй ОС система распределяет длинные кванты постоянной длины.



  1. Планирование процессов и потоков в системах реального времени.


Главный критерий эффективности в этих системах – реактивность, обеспечение временных характеристик вычислительного процесса и быстрая реакция на управляющие сигналы.
Но задача облегчается, тем, что:

- заранее известен весь набор выполняемых задач

- есть четкая информация о сроках и задачах, на ее основе можно

- создать статическое расписание

- создать нужный динамический алгоритм
В зависимости от последствий ошибки, системы делятся:

- системы жесткого реального времени (запуск спутника, АЭС)

- системы мягкого реального времени (система бронирования билетов)
ЖЕСТКОГО РВ

Для систем жесткого реального времени время выполнения КАЖДОЙ из критических задач должно быть гарантировано при ЛЮБОМ сценарии поведения системы.
Этого можно добиться:

- исчерпывающим тестированием системы

- статическим расписанием

- составлением математически обоснованного динамического алгоритма
Возможность составить статическое расписание есть не всегда, и эта возможность просчитывается сложными математическими вычислениями.


Один из критериев такой возможности – время вычисления задачи должно быть меньше предельного срока на ее выполнение.
МЯГКОГО РВ

Время иногда может быть нарушено, не страшно.

___
Типы задач в системе РВ:

- периодические – можно определить все будущие моменты запроса задачи

- спорадические – время запросов заранее не известно
Также задачи бывают:

- независимые

- зависимые
Планирование зависимых задач важнее, чем планирование независимых задач, и сложнее.

Можно:

- разделить планирование на 2 части, одну из них выполнять заранее, а вторую – во время работы системы. Например, предварительно можно вычислить временные интервалы, в которые нельзя назначать выполнение задач, содержащих критические секции.

- ввести ограничения на поведение набора задач
Классический алгоритм для жестких систем реального времени разработан в 1973 году Лью и Лейландом.

Этот алгоритм основан на статических приоритетах

- запросы на выполнение всех задач набора, имеющих жесткие ограничения на время реакции, являются периодическими

- Все задачи независимы

- Срок выполнения каждой задачи равен ее периоду

- Максимальное время выполнения каждой задачи известно и постоянно

- Максимальный коэффициент загрузки процессора не превышает 0.7
Задачам назначаются статические приоритеты в зависимости от величины их периода выполнения: чем он короче, тем больше приоритет.
Существуют также алгоритмы, основанные на динамических приоритетах, назначаются в соответствии с текущими состояниями задачи (дедлайном).

Чем меньше время у задачи до дедлайна, тем выше ее приоритет.



  1. Обработка прерываний (назначение, типы, механизм, маскирование). Диспетчеризация и приоритеты прерываний. Централизованная схема диспетчеризации прерываний на примере Windows NT. Отложенный (DPS) и асинхронный (APS) вызовы процедур для обработки прерываний. Выполнение обработки прерываний в контексте и вне контекста процесса.

Прерывания – основная движущая сила любой ОС.
Назначение

Система прерываний переводит процессор на выполнение потока команд, отличного от того, который на нем выполнялся до сих пор с последующим возвратом к исходному потоку.
Т.о. механизм прерываний очень похож на механизм вызова процедур, однако переключение по прерываниям непредсказуемо, с отличие от вызова процедуры, планируемого программистом.


Типы прерываний, в зависимости от источника, таковы:

- внешние

- внутренние

- программные
Внешние = аппаратные – это действия пользователя или поступление сигналов от внешних устройств. Являются асинхнонными по отношению к выполняемой проге.
Внутренние прерывание (исключения) –происходят, если в процессе исполнения программы возникает аварийная ситуация (выход за границы массива, деление на 0 и тд);
Программные прерывания – не настоящие прерывания, а сознательная имитация таковых в заранее запланированных местах программы.
Механизм прерываний

Существует 2 способа, с помощью которых шины выполняют прерывания:

- Векторный

- Опрашиваемый
При использовании векторных прерываний устройствам назначается вектор прерываний (электрический сигнал, несущий инфу об определенном номере, закрепленном за определенным устройством). Устройство запрашивает прерывание. Процессор подтверждает запрос и выполняет цикл подтверждения прерывания, в котором устройство должно себя идентифицировать. Для этого оно выставляет свой вектор прерываний, а процессор, используя этот вектор, находит соответствующий обработчик прерываний.
При использовании опрашиваемых прерываний процессор получает от устройства только инф-ю об уровне приоритета прерывания. С каждым уровнем может быть связано несколько устройств, и чтобы определить нужное, процессор вызывает все обработчики прерываний для данного типа приоритета, пока один из них не «распознает» свое прерывание.
Упорядочивание обработки прерываний достигается за счет приоритезации и маскирования
Приоретизация:

Каждому источнику прерываний назначается класс, каждому классу соответствует свой уровень приоритета.

Приоритеты могут быть:

- относительные (прерывание выбрано на обработку и обрабатывается хоть гром греми)

- абсолютные (прерывание начало обрабатываться, но при поступлении более приоритетного прерывания его обработка прекращается). Это достигается тем, что есть переменная, в которую записывается приоритет прерывания, которое сейчас обрабатывается. С ней сравнивается значение приоритета вновь поступивших прерываний.
Маскирование (собственно, оно есть и в только что описанной схеме приоретизации) – запросы на прерывания маскируются, то есть не обслуживаются. Маскирование предполагает возможность маскирования прерываний любого уровня, вне зависимости от их приоритета.

Диспетчеризация и приоритеты прерываний

Прерывания играют важную роль в работе ОС.И обработка прерываний довольно сложная задача, тк.

- они возникают асинхронно к программе

- связаны с непредвиденными переходами управления

- системные вызовы часто реализуются по прерываниям

- прерывания возникают при возникновении ошибок в программе

- сами модули ОС часто вызывают друг друга по прерываниям

- даже планировщик потоков по сути – системная процедура, вызываемая по прерываниям.

Поэтому прерываниями нужно грамотно управлять.

Этим занимается специальный программный модуль – ДИСПЕТЧЕР ПРЕРЫВАНИЙ.
Используется механизм приоритетных очередей.

Упорядочивание обработки прерываний достигается за счет приоритезации и маскирования
Приоретизация:

Каждому источнику прерываний назначается класс, каждому классу соответствует свой уровень приоритета.

Приоритеты могут быть:

- относительные (прерывание выбрано на обработку и обрабатывается хоть гром греми)

- абсолютные (прерывание начало обрабатываться, но при поступлении более приоритетного прерывания его обработка прекращается). Это достигается тем, что есть переменная, в которую записывается приоритет прерывания, которое сейчас обрабатывается. С ней сравнивается значение приоритета вновь поступивших прерываний.
При возникновении прерывания вызывается диспетчер. Он на время запрещает прерывания, выясняет источник этого, выясняет по приоритетам, будет ли его обрабатывать и либо начинает обрабатывать, либо помещает его в очередь.
Централизованная схема диспетчеризации прерываний на примере Windows NT

Некоторые процессоры (но не все) поддерживают обработку прерываний на аппаратном уровне. В таких процессорах есть внутренняя переменная – уровень прерываний процессора. Если ОС работает на таких процессорах, то она может пользоваться этой встроенной системой.
Но такие средства есть не у всех процессоров (их нет у Пентиум). И чтобы не зависеть от аппаратной платформы, в ОС вводится собственная программная система приоритетов прерываний.


  • В Виндовс НТ есть диспетчер прерывываний (Trap Handler).

  • Все, что генерирует прерывания – это источник прерывания, они делятся на несколько классов, каждому из которых присваивается свой уровень запроса прерывания Interrupt Request Query Level, IRQL. IRQL определяет приоритет прерываний данного класса.

  • Также в ОС есть внутренняя переменная, IRQL выполняемого кода. Она может отображаться на аналогичную аппаратную переменную, а если ее нет, она ее эмулирует.



Схема обработки прерываний:

  • Поступает запрос на прерывание

  • Вызывается диспетчер прерываний

  • Он анализирует IRQL поступившего прерывания.

  • Если он ниже текущего – прерывание помещается в очередь запросов, диспетчер продолжает обрабатывать текущее прерывание

  • Если он выше текущего – диспетчер текущее прерывание помещает в очередь и начинает обрабатывать вновь поступившее.

Данная схема централизованная, ОС имеет полный контроль за прерываниями.
Уровни приоритета прерываний в Виндовс НТ:

  • Самый высокий – ошибки шины, тяжелые аппаратные сбои - 31

  • Прерывания по сбою питания - 30

  • Межпроцессорные прерывания - 29

  • Системный таймер – 28

  • Контроль производительности ядра - 28

  • Прерывания от внешних устройств 26-3

  • Диспетчерский (ДПС) – вызов отложенной процедуры - 2

  • Асинхронный (АПС) – асинхронный вызов процедуры - 1

  • Обычный код, нормальное выполнение потоков – 0;


Отложенный (DPS) и асинхронный (APS) вызовы процедур для обработки прерываний
IRQL уровни 1 (APC LEVEL) и 2 (DISPATCH LEVEL) предназначены для так называемых программных (в терминологии Microsoft) прерываний соответственно:

  • асинхронный вызов процедуры - APC (asynchronous procedure call) и

  • отложенный вызов процедуры -DPC (deferred procedure call).


Если ядро принимает решение выполнить некоторую системную процедуру, но нет необходимости делать это немедленно, оно ставит ее в очередь DPC и генерирует DPC прерывание. Когда IRQL процессора станет достаточно низким, эта процедура выполняется. Характерный пример - отложенная операция планирования. Из этого следует, что код, выполняемый на IRQL уровне, выше или равном 2, не подвержен операции планирования.


  1. DPC предназначен для обслуживания программных прерываний, исходящих от модулей ядра. Сюда помещаются программные запросы, вызывающие диспетчер потоков (т.к. ситуация обработки прерываний часто требует перепланирования потоков, но эта процедура менее критичная, чем собственно обработка прерывания.)

  2. Кроме того, на этом уровне ожидают своей очереди не только вызовы планировщика / диспетчера, но и другие отложенные вызовы от других процедур.


Асинхронный вызов процедур - механизм, аналогичный механизму DPC, но более общего назначения, в частности, доступный пользовательским процессам. Эти процедуры могут прерывать выполнение обыкновенного кода, вызываются они с помощью программного прерывания и выполняются в текущем контексте.