Промышленные контроллеры. Сравнительный анализ протоколов fieldbus применительно к промышленным приборам. Специализированные контроллеры TeleSAFE, объединяющие алгоритмы управления и сбор данных в системе телеметрии, страница 38

Эффективность обслуживания прерываний

Прерывания в OS-9 обрабатываются соответствующими подпрограммами, которые могут быть установлены в ОС либо драйвером устройства, либо прикладным процессом.

Подпрограммы обработки прерывании

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

Однако OS-9 изначально разрабатывалась с учетом того условия, что подпрограмма обработки npc'phianiulii Aio.~>iccin использовать системные директивы тик лке, как и исполняю­щиеся процессы. Это обеспечивает дополшпсльную гибкосп. разработки и оптимизацию параметров производшслыюсш прикладных программных систем РВ. Таким образом, если некоторое прерывание не требует масштабного обслужива­ния, то оно может быть обработано соответствующей подпрограммой обработки прерываний (в гом числе с применением какого-либо системного сервиса), в противном случае эта подпрограмма может активизировать обслужнваю-щий процесс и вернуть управление. В первом случае, т.е. если подпрограмма может обработать возникшее прерывание без помощи вспомогательного процесса, время отклика на прерывание определяется только временем ее исполнения. Если же подпрограмма активизирует специальный процесс, то время отклика на прерывание включает в себя i ребующесся для завершения работы данной подпрограммы время, а также время, необходимое для приостановки текущего процесса н возобновления исполнения требуемого процесса.

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

Полная вытеснимость ядра - повышение детерминированности

В предыдущих версиях OS-9 весь системный код исполнялся эффективно с максимально возможным приоритетом. Вы­полнение выданной процессом системной директивы могло быть прервано только подпрограммой обработки прерываний.

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

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

Средства обеспечения межпроцессной коммуникации

Поскольку, как правило, приложения РВ состоят из нескольких взаимодействующих процессов, то производитель­ность всей системы в значительной мере зависит от того, насколько быстро происходит обмен сообщениями между процессами и насколько эффективно ОС может управлять межпроцессной синхронизацией. При определении механиз­мов межпроцессной коммуникации OS-9 Вы встретите все имеющиеся и известные в мире UNIX-примитивы: двоичные семафоры, сигналы, события, программные каналы, очереди, разделяемые модули данных.