Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРОГРАМММНО-ТЕХНИЧЕСКИЕ КОМПЛЕКСЫ МИКРОПРОЦЕССОРНЫХ СИСТЕМ АВТОМАТИЗАЦИИ И УПРАВЛЕНИЯ.doc
Скачиваний:
63
Добавлен:
01.05.2014
Размер:
10.03 Mб
Скачать

5. 6. Выбор класса задач

Какие задачи должны войти в данный класс? Какое время цикла выбрать для данного класса задач?

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

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

Порядок выполнения задач. В каком порядке выполняются задачи в классе задач и как его изменить?

Каждая задача имеет параметр “install number”, который определяет, когда она выполняются в классе задач. Это число может находиться в диапазоне от 0 до 255. Чем меньше значение параметра, тем выше приоритет. Особому состоянию приписывается число 0. Это - установка типа “безразлично”. Задача с нулевым параметром выполняется в произвольное время внутри цикла, безотносительно к другим задачам. Если две задачи имеют одинаковое значение параметра, то относительный порядок выполнения этих двух задач не определен, но он определен относительно других задач.

Пример: В классе задач имеются 9 задач (тип класса и его время цикла в настоящее время несущественны). Для простоты, задачи обозначаются символами от А до I. Им назначены различные параметры “install number” согласно следующей таблице 5.2:

Таблица 5.2

Задача

A

B

C

D

E

F

G

H

I

inst. number

0

0

4

1

255

24

24

24

24

Задачи будут выполняться в следующем порядке: D => C => (FGHI) => E

Задачи F, G, H и I выполняются между C и E, но относительный порядок выполнения этих трех задач не определен и не установлен. Задачи А и B выполняются когда-либо в течение цикла данного класса задач, но когда именно - не фиксировано.

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

Имеется другой тип классов задач, которые “основаны на событиях”. Это означает, что вместо того, чтобы переключаться каждые X мс, они выполняются, только когда происходит некоторое конкретное событие. Они имеют более высокий приоритет, чем все классы задач, основанные на временных соотношениях, и могут прерывать их выполнение в любой момент, когда происходит определенное “событие”. Имеются два класса задач этого типа - классы задач прерывания и задач особого состояния.

Прерывания - это специальный сигнал, который “прерывает” текущую обработку. Обычно это что-то очень важное, но происходящее нерегулярно. При возникновении сигнала прерывания:

1. Стандартная циклическая обработка задачи прерывается прерыванием и временно приостанавливается.

2. Выполняется задача обработки прерывания.

3. Прерывание сбрасывается.

4. Стандартная циклическая обработка задачи продолжается снова, с того места, где она была приостановлена.

Все задачи обработки прерывания должны находиться в классе задач прерываний. Класс задач прерываний имеет более высокий приоритет, чем все классы быстродействующих и стандартных задач. Это означает, что эти задачи должны быть очень короткими, иначе возникнет та же проблема с выходом за пределы времени цикла, описанная в последнем разделе. Задачи прерывания очень полезны для выполнения срочных функций, которые не должны выполняться очень часто. Если они начинают возникать с повышенной частотой, то лучше поместить эти задачи в класс задач повышенного быстродействия и проверять событие. Наиболее важная особенность задачи прерывания - это то, что она должна быть короткой и быстрой. Задача обработки прерывания должна или обрабатывать необходимые данные очень быстро, или делать такие установки, чтобы обработку могла выполнить более медленная задача. В остальном задачи прерывания весьма похожи на все другие задачи. Они могут быть написаны на любом из трех языков, но не следует забывать, что такие задачи не выполняются циклически. Вместо параметра “install number” для таких задач имеется элемент, который определяет номер прерывания, которое обрабатывает эта задача. Стандартное использование параметра “install number” бессмысленно в контексте задачи, основанной на событии.

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

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

Таблица 5.3

EXC №

Значение

2

Ошибка шины

3

Ошибка адреса

4

Неправильная команда

5

Деление на ноль

8

Нарушение полномочий

10

Невыполненная команда

24

Неправильное прерывание

128

Особое состояние ввода/вывода

144

Нарушение времени цикла TC

145

Нарушение максимального времени цикла TC

146

Нарушение времени цикла обработки отображения входов TC

147

Нарушение времени цикла обработки отображения выходов TC

160

Нарушение максимального времени цикла HSTC

161

Нарушение времени цикла обработки входов/выходов HSTC

162

Нарушение времени системного цикла