Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпора з романова.docx
Скачиваний:
6
Добавлен:
22.11.2019
Размер:
6.65 Mб
Скачать

17. Псевдокод программы обслуживания стековой модели, описание функционирования.

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

void main(void)

/* инициализация системы, загрузка обработчиков прерываний */

{

init() ;

while(TRUE); /* бесконечный цикл ожидания */

}

void int1 (void) /* обработчик прерывания 1 */

{

save(context); /* сохранение контекста в стеке */

task1(); /* выполнение задачи 1 */

restore(context); /* восстановление контекста из стека*/

}

void int2(void) /* обработчик прерывания 2*/

{

save(context);task2(); /* сохранение контекста в стеке *//* выполнение задачи 2 */

restore(context); /* восстановление контекста из стека*/

}

void int3(void) /* обработчик прерывания 3

{

save(context);task3(); /* сохранение контекста в стеке */ /* выполнение задачи 3 */

restore(context); /*восстановление контекста из стека*/

}

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

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

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

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

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

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

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

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

19. Приоритетные/фоновые системы. Рисунок, пояснения.

Пояснения нету.((