Эффективность обслуживания прерываний
Прерывания в OS-9 обрабатываются соответствующими подпрограммами, которые могут быть установлены в ОС либо драйвером устройства, либо прикладным процессом.
Подпрограммы обработки прерывании
В большинстве ОС разрешена приостановка исполнения любого кода подпрограммой обработки прерываний, когда бы ни возникло данное прерывание (независимо от того, является ли этот код прикладной программой или подпрограммой обработки системной директивы), при этом должно гарантироваться, что подпрограмма обработки прерывания не будет модифицировать никакие разделяемые системные данные. Это обеспечиваегся с помощью запрета выдачи подпрограммой обработки прерываний каких-либо сисгем-ных директив.
Однако OS-9 изначально разрабатывалась с учетом того условия, что подпрограмма обработки npc'phianiulii Aio.~>iccin использовать системные директивы тик лке, как и исполняющиеся процессы. Это обеспечивает дополшпсльную гибкосп. разработки и оптимизацию параметров производшслыюсш прикладных программных систем РВ. Таким образом, если некоторое прерывание не требует масштабного обслуживания, то оно может быть обработано соответствующей подпрограммой обработки прерываний (в гом числе с применением какого-либо системного сервиса), в противном случае эта подпрограмма может активизировать обслужнваю-щий процесс и вернуть управление. В первом случае, т.е. если подпрограмма может обработать возникшее прерывание без помощи вспомогательного процесса, время отклика на прерывание определяется только временем ее исполнения. Если же подпрограмма активизирует специальный процесс, то время отклика на прерывание включает в себя i ребующесся для завершения работы данной подпрограммы время, а также время, необходимое для приостановки текущего процесса н возобновления исполнения требуемого процесса.
Системные директивы могут использоваться подпрограммами обработки прерываний для посылки сигналов, объявления событий, сбрасывания семафоров, установки или снятия аварийной ситуации (alarms), распределения и освобождения памяти, передачи информации другому процессу, изменения приоритета процесса.
Полная вытеснимость ядра - повышение детерминированности
В предыдущих версиях OS-9 весь системный код исполнялся эффективно с максимально возможным приоритетом. Выполнение выданной процессом системной директивы могло быть прервано только подпрограммой обработки прерываний.
Это приводило к увеличению времени отклика на прерывание, особенно в тех приложениях, в которых одновременно исполнялись как процессы РВ, так и обычные процессы, так как после возврата управления из подпрограммы прерывания возобновляется исполнение системной директивы, ранее выданной прерванным процессом (возможно, с низким приоритетом). В результате нужный процесс не сможет отреагировать на возникновение прерывания, пока не завершится выполнение системной директивы, и если ее выполнение занимает много времени, то это существенно снижает реакцию системы на события РВ.
Для решения этой проблемы реализован иной механизм работы ядра: обработка системной директивы ведется с тем же приоритетом, что и выполнение выдавшего эту директиву процесса. При таком подходе любой процесс может вызвать любую функцию ядра. не влияя на время активизации процессов с более высоким приоритетом.
Средства обеспечения межпроцессной коммуникации
Поскольку, как правило, приложения РВ состоят из нескольких взаимодействующих процессов, то производительность всей системы в значительной мере зависит от того, насколько быстро происходит обмен сообщениями между процессами и насколько эффективно ОС может управлять межпроцессной синхронизацией. При определении механизмов межпроцессной коммуникации OS-9 Вы встретите все имеющиеся и известные в мире UNIX-примитивы: двоичные семафоры, сигналы, события, программные каналы, очереди, разделяемые модули данных.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.