Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lec3.docx
Скачиваний:
1
Добавлен:
19.11.2019
Размер:
29.9 Кб
Скачать

Переключение контекста

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

В стековой модели каждый обработчик прерывания ассоциирован с аппаратным прерыванием и запускается ЦП по адресам инструкций (векторам), хранимым в соответствующих адресах обработчиков прерываний. Затем контекст сохраняется в специально выделенной области памяти, которая должна быть статической, в случае системы с одиночными (одноуровневыми) прерываниями, либо стековой, для системы с множественными (многоуровневыми) прерываниями.

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

Процедура save сохраняет содержимое некоторых регистров в области стека, а restore восстанавливает эти регистры из стека. На практике, save и restore должны иметь два аргумента: указатель на структуру, представляющую информацию контекста и указатель на стековую структуру данных. В случае структуры данных контекста, компилятор языка программирования должен обеспечить механизм извлечения текущего содержимого регистров общего назначения, программного счетчика (счетчика команд) и т.п.

Системы с вытесняющим приоритетом

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

Прерывания с установленным приоритетом могут быть как с фиксированным (закрепленным) приоритетом,, так и с динамическим приоритетом.

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

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

Отдельный класс управляемых прерываниями систем с фиксированной частотой вытеснения приоритета, называемых частотно-монотонными системами, включает системы реального времени, в которых приоритеты присвоены таким образом, что чем выше частота их выполнения, тем выше их приоритет.

Такая схема является обычной для встроенных приложений, особенно для систем авионики. Например, задача сбора данных акселерометра каждые 10 миллисекунд является наиболее приоритетной. Задача, которая осуществляет сбор данных от гироскопа и корректирует эти данные и данные акселерометра каждые 40 миллисекунд, имеет второй уровень приоритета. И, наконец, задача, которая обновляет дисплей летчика каждую секунду, имеет самый низкий приоритет.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]