- •1. Определение и основные особенности осрв.
- •2. Определение осрв. Типичные времена реакции на внешние события в управляемых осрв процессах.
- •3. Основные области применения осрв.
- •4. Особенности оборудования, на котором работают осрв.
- •5. Основные определения: программа, процессор, процесс, состояние, стек, виртуальная память.
- •6. Основные определения: межпроцессное взаимодействие (семафоры и т.П.), событие, задача, ресурс, связывание.
- •Типы задач. Виды программирования.
- •8. Виды ресурсов. Состояние процесса
- •9)Типы взаимодействия процессов.
- •10)Стандарты на осрв. Нормы esse консорциума vita. Стандарт posix 1003.1b.
- •11. Стандарт на осрв sceptre
- •12. Типы архитектур осрв
- •13.ОБъектно-ориентированный подход к программированию. Основная концепция объектно-ориентированного подхода
- •14. Монолитная архитектура осрв
- •15. Модульная арх-ра осрв(на основе микроядра)
- •16. Объектная арх-ра на основе объектов-микроядер
- •17. Строение ос
- •18. Синхронизация и взаимодействие процессов
- •19. Семафоры.
- •20. События (сигналы).
- •21. Почтовые ящики
- •23.Собъекты синхронизации стандарта Posix, Mutex, Condvar
- •24.Управление задачами. Планирование задач.
- •25. Планирование задач. Приоритеты.
- •26. Стратегии планирования задач.
- •27. Планирование периодических задач
- •28.Переключение контекста.
- •29. Классификация осрв.Краткий обзор современных осрв
- •30.Системы на основе Linux
- •31.Осрв на основе Windows nt
- •32.Критерии выбора языка программирования для срв
- •32.Языки разработки для осрв
- •35. Типовая структура программ, работающих в рв.
- •36. Необходимость оптимизации программ.
- •37. Осрв qnx. Краткая характеристика.
- •38. Осрв qnx. Особенности.
- •39. Элементы стандарта posix в осрв qnx.
35. Типовая структура программ, работающих в рв.
Инициализация (загрузка данных, предварительные расчеты, инициализация значений переменных)
Главный цикл работы программы, содержащий:
- вывод информации на ОУ
- ввод информации с ОУ (считывание информации с датчиков)
- решение задач, требующих получение результата в текущем шаге цикла (так называемые задачи основного времени)
- решение задач, не требующих получение результата в текущем шаге цикла (так называемые фоновые задачи)
- решение импульсных задач (задачи, решаемые по необходимости)
- синхронизация выполнения цикла с РВ
СУ на базе компьютеров д б ориентирована на круглосуточную работу и обеспечивать высокую надежность работы. Поэтому в программах должны учитываться все нюансы, связанные с продолжительностью работы. Например, переменные, имеющие смысл счетчиков, не должны переполняться.
while (1)
{
t1
………
}
while ((t2-t1)< T)
{
t2=считать время
}
Завершение работы
36. Необходимость оптимизации программ.
При оптимизации программ могут использоваться различные критерии. Главным является критерий максимальной производительности (быстродействия). Существуют и другие критерии: минимальный размер исполняемого кода и минимальные затраты системных ресурсов. Компиляторы языка С являются оптимизирующими. Но при этом их возможности ограничены. Т к компилятор не в силах глобально изменить алгоритм работы программы, основная работа по оптимизации ложится на программиста.
Все приемы оптимизации можно условно разделить на 3 группы:
1) связанные с математическими алгоритмами
2) связанные с особенностями работы аппаратного обеспечения (процессора и т д)
3) связанные с особенностями компиляторов
Часто тот пример, который используется программистом, бывает трудно отнести к какой-либо конкретной группе.
Некоторые приемы оптимизации:
Использование Ассемблера (могут ипользоваться ассемблерные вставки и внешние модули).
while (++i<100) while (i<100)
{ {
….. i++;
} …….. } - проще
Компилятор формирует исполняемый код по исходному тексту. Получаемый исполняемый код содержит много лишней информации (н-р, проверка соответствия типов и т д). Чтобы убрать лишний код, фрагменты программы м б написаны на Ассемблере. В этом случае программист сам формирует тот исполняемый код, который ему нужен.
Предварительные вычисления и таблицы значений функции. Все расчеты, которые можно произвести заранее, делаются вне участка программы, требующих высокого быстродействия. Часто вычисления математич-х ф-ий типа sin, cos, корень и т д заменяют на операции выбора из таблиц значений этих ф-ий. Таблицы строятся заранее, т к процессор выполняет быстрее операцию выбора, чем вычисление значения ф-ии.
Целочисленные вычисления. Процессоры работают быстрее с целыми числами, чем с вещественными. Для реализации этого приема используется область компьютерной математики (целочисленная арифметика).
Замена операций умножения и деления на 2 в степени n на операции арифметического сдвига влево (умножение) или вправо (деление) на n разрядов.
640=128+512=2^7+2^9
а*640=а<<7 + а<<9 (сдвиг влево на 7 и 9 разрядов)
Языковые конструкции в программе д б более простыми (пример из п.1)
Не рекомендуется использовать оператор goto (заменяется циклом). Нежелательны вложенные циклы. Если цикл повторяется ограниченное малое кол-во раз, то он разворачивается.
Использование приближенных вычислений. Если в расчетах не требуется особая точность получения результата, то можно воспользоваться приближенными вычислениями.