Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
96-106.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
39.36 Кб
Скачать

104. Среда программирования и структура программ реального времени.

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

- редактор с подсветкой синтаксиса конкретного языка программирования. В нем программист пишет текст программы, так называемый программный код;

- компилятор. Он, как мы уже с вами знаем, транслирует программу, написанную на высокоуровневом языке программирования в машинный язык (машинный код), непосредственно понятный компьютеру.С++;

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

Разработка программы реального времени начинается с анализа и опи­сания задачи. Функции системы делятся на простые части, с каждой из кото­рых связывается программный модуль. Например, задачи для управления движением манипулятора робота можно организовать следующим образом:

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

Принципиальной особенностью программ реального времени является постоянная готовность и отсутствие условий нормального, а не аварийного завершения. Если программа не исполняется и не обрабатывает данные, она остается в режиме ожидания прерывания/события или истечения некоторого интервала времени. Программы реального времени - это последовательный код, исполняющийся в бесконечном цикле. В системах реального времени различные процессы могут обращаться к общим подпрограммам. При простейшем решении эти подпрограммы свя­зываются с соответствующими модулями после компиляции. При этом в па­мяти хранится несколько копий одной подпрограммы.

105. Обработка прерываний, исключений, программирование ожидания.

Интерфейсное устройство, получившее новые данные, привлекает внимание центрального процессора, посылая ему сигнал прерывания через системную шину. По от­ношению к текущему процессу прерывания являются асинхронными собы­тиями, требующими немедленной реакции. Получив сигнал прерывания, про­цессор приостанавливает исполнение текущего процесса, сохраняет в стеке его контекст, считывает из таблицы адрес программы обработки прерывания и передает ей управление. Эта программа называется обработчиком преры­вания. Другой вариант обработки прерываний заключается в том, что плани­ровщик выбирает из очереди ожидания этого события или прерывания сле­дующий процесс и переводит его в очередь готовых процессов. При управлении прерываниями время реакции должно быть как можно меньше. Оно представляет собой сумму времени, необходимого процессору, чтобы среагировать на прерывание (латентность прерывания), и времени, не­обходимого на переключение контекста до запуска обработчика прерываний. Типичная загрузка системы также играет определенную роль. Если система должна обслуживать много одновременных прерываний, вновь поступающие прерывания будут ждать в очереди, пока процессор не освободится.

Реакция на исключения (exceptions) похожа на обработку прерываний. Исключениями называются нештатные ситуации, когда процессор не может правильно выполнить команду. Примером исключения является деление на ноль или обращение по несуществующему адресу. В англоязычной литерату­ре для разных видов исключений применяются термины trap, fault, abort (не путать с "взаимным исключением" - mutual exclusion). Обычно операционная система обрабатывает исключения, прекращая текущий процесс, и выводит сообщение, четко описывающее ситуацию, на устройство отображения, обычно монитор или принтер. Приемлемая при по­следовательной интерактивной многопользовательской обработке, внезапная остановка процесса в системах реального времени должна быть абсолютно исключена. Нельзя допустить, чтобы управляемые микропроцессором авто­пилот самолета или автоматическая тормозная система автомобиля (Auto­matic Braking System - ABS), внезапно прекратили работу из-за деления на ноль. В системах реального времени все возможные исключения должны анализироваться заранее с определением соответствующих процедур обра­ботки. Сложной проблемой при обработке исключений является проверка, что исключение не возникнет снова после того, как оно было обработано.Например, обработчик деления на нуль должен проверять и изменять операнды, а не просто возобновлять исполнение с мес­та, предшествующего ошибке, что приведет к бесконечному циклу.

Процесс реального времени может явным образом ждать истечения не­которого интервала (относительное время) или наступления заданного мо­мента (абсолютное время). Соответствующие функции обычно имеют сле­дующий формат:

wait (n) и wait until (время) где n - интервал в секундах или миллисекундах, а переменная "время" имеет формат часы, минуты, секунды, миллисекунды. Когда выполняется одна из этих функций, операционная система по­мещает процесс в очередь ожидания. После истечения/наступления заданно­го времени процесс переводится в очередь готовых процессов. Распространенный, но не лучший метод организации временной за­держки - цикл, контроль системного

времени в цикле занятого ожидания repeat (*холостой ход*) until (time = 12:00:00); Как правило, подобные активные циклы ожидания представляют собой бесполезную трату процессорного времени, и их следует избегать. 

106. Тестирование и отладка.

Отла́дка — этап разработки компьютерной программы, на котором обнаруживают, локализуют и устраняют ошибки. Чтобы понять, где возникла ошибка, приходится :

- узнавать текущие значения переменных;

- выяснять, по какому пути выполнялась программа.

Существуют две взаимодополняющие технологии отладки:

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

- Вывод текущего состояния программы с помощью расположенных в критических точках программы операторов вывода — на экранпринтергромкоговоритель или в файл. Вывод отладочных сведений в файл называется журналированием.

Тестирование (англ. test — испытание) — это испытание, проверка правильности работы программы в целом, либо её составных частей.

Отладка и тестирование — это два четко различимых и непохожих друг на друга этапа:

- при отладке происходит локализация и устранение синтаксических ошибок и явных ошибок кодирования;

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

- Сравнение программы со схемой алгоритма.

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

- Трансляция программы на машинных язык. На этом этапе выявляются синтаксические ошибки. --- Редактирование внешних связей и компоновка программы.

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

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

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