Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Системы реального времени.-6.pdf
Скачиваний:
27
Добавлен:
05.02.2023
Размер:
2.18 Mб
Скачать

другое сообщение, то приоритет сервера увеличивается в том случае, если приоритет нового клиента окажется выше приоритета сервера. В результате новый клиент «выравнивает» приоритет сервера под свой, позволяя ему закончить выполнение текущего запроса и перейти к выполнению вновь поступившего. В противном случае приоритет нового клиента понизился бы, так как он заблокировался бы на низкоприоритетном сервере.

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

Для установки приоритета, управляемого клиентом, воспользуйтесь функцией qnx_pflags().

4.6. Первичная обработка прерываний

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

Задержка прерывания — это интервал времени между приемом аппаратного прерывания и началом выполнения первой команды обработчика данного прерывания. В системе QNX все прерывания открыты всегда, поэтому задержка прерывания обычно незначительна. Но некоторые критические программы требуют, чтобы на время их выполнения прерывания были закрыты. Максимальное время закрытия прерывания обычно определяет худший случай задержки прерывания; следует отметить, что в системе QNX это время очень мало.

На рис. 4.2 представлена диаграмма обработки аппаратного прерывания соответствующим обработчиком прерываний. Об-

84

работчик прерываний либо просто возвращает управление процессу, либо возвращает управление и вызывает «срабатывание» proxy. Времена обработки для разных процессоров различны.

 

 

 

Запуск

Завершение

Продолжение

Возникновение

выполнения

обработчика

работы

прерывания

прерванного

прерываний

обработчика

 

 

 

процесса

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Time

 

 

 

 

 

 

 

19,0 мкс

 

 

 

 

 

17,4 мкс

 

 

 

 

Til

 

 

 

 

 

 

 

Tiret

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Tint

 

 

 

 

 

Рис. 4.2. Диаграмма обработки аппаратного прерывания: Til — время задержки прерывания; Tint — время обработки прерывания; Tiret — время завершения прерывания

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

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

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

85

На рис. 4.3 представлена диаграмма задержки планирования. Обработчик прерываний завершает работу и инициирует срабатывание proxy. Времена обработки для разных процессоров различны.

 

 

 

 

 

 

 

Завершение

Продолжение

 

 

 

Запуск

работы

Возникновение

выполнения

обработчика

обработчика и

прерывания

прерванного

прерываний

срабатывание

 

 

 

процесса

 

 

 

 

 

 

 

proxy

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Time

 

 

 

 

 

19,0 мкс

 

 

 

 

45,2 мкс

 

 

 

 

Til

 

 

 

 

 

 

Tsl

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Tint

 

 

 

Рис. 4.3. Диаграмма задержки планирования: Til — время задержки прерывания; Tint — время обработки прерывания;

Tsl — время задержки планирования

Важно заметить, что большинство обработчиков прерываний завершают работу без инициирования «срабатывания» proxy. В большинстве случаев обработчик прерываний сам справляется со всеми аппаратными событиями. Выдача proxy для подключения управляющего процесса более высокого уровня происходит только при возникновении особых событий. Например, обработчик прерываний драйвера устройства с последовательным интерфейсом, передающий один байт данных аппаратуре, должен на каждое принятое прерывание для передачи запустить высокоуровневый процесс Dev только в том случае, если выходной буфер в итоге окажется пустым.

Вложенные прерывания. Поскольку архитектура микрокомпьютера позволяет присваивать аппаратным прерываниям приоритеты, то высокоуровневые прерывания могут вытеснять низкоуровневые. Этот механизм полностью поддерживается в системе QNX.

86

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

Вопросы для самопроверки

1.Какие типичные процессы вкючены в систему QNX?

2.Назовите основные функции ядра ОС QNX.

3.Какие типы связи между процессами поддерживает ядро ОС

QNX?

4.Какие функции используются для связи между процессами посредством сообщений?

5.Какие виды блокирования существуют при связи между процессами посредством сообщений?

6.Как осуществляется связь между процессами посредством

proxy?

7.Какие варианты приемки сигнала существуют в зависимости от видов обработки?

8.Для чего используются виртуальные каналы и виртуальные процессы?

9.Какие методы планирования реализованы в ОС QNX?

10.Что понимают под задержкой планирования?

87