Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лек СРВ от Анн.doc
Скачиваний:
11
Добавлен:
09.11.2019
Размер:
2.26 Mб
Скачать

13.2 Поддержка рв в usix

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

  • приоритетная и круговая диспетчеризация;

  • динамическое и статическое назначение приоритетов пользова­тельским задачам;

  • захват ресурсов памяти для обеспечения быстрого переключе­ния задач путем фиксации страниц в оперативной памяти;

  • возможность подключения к источникам прерываний для про­граммирования нестандартных устройств;

  • возможность отображения в адресное пространство процесса пользователя любых объектов, включая файлы на дисках, физи­ческую память, порты ввода-вывода;

  • синхронизация взаимодействия процессов пользователя с по­мощью традиционных механизмов UNIХ (семафоры, очереди сообщений, разделяемая память, именованные и неименован­ные программные каналы ввода-вывода) и дополнительных возможностей (сообщения USIХ, серверы, механизм событий).

В структуре ядра USIХ реализованы новые алгоритмы, ориен­тированные на поддержку реального времени. Среди них следует отметить полную прерываемость ядра системы и механизм обра­ботки прерываний.

Традиционные UNIХ-системы не разрешают переключения процессов во время выполнения системной фазы ядра. Ядро яв­ляется как бы одной большой критической секцией, которая должна быть выполнена до конца. Только после выполнения критической секции, что может потребовать значительного вре­мени, возможно переключение на более приоритетный процесс.

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

  • истечение кванта времени владения процессором у текущего процесса;

  • наступление запланированных событий по времени;

  • прерывание от устройств ввода-вывода;

  • изменение приоритета процессов;

  • освобождение ресурсов ядра (двоичных семафоров);

  • посылка сообщения более приоритетному ожидающему про­цессу.

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

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

Система же USIX предоставляет возможность приоритетного планирования программной обработки прерываний и разбиения обработки на этапы. Аппаратное прерывание может прерывать даже самый высокоприоритетный процесс, поскольку целый ряд устройств не допускает задержки обслуживания прерываний.

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

Надежность. Система USIX использует все доступные аппа­ратные средства для локализации неисправностей аппаратуры. В рамках многопроцессорной системы отказ одного процессорного элемента (РЕ) не влечет за собой «развала» системы, так как пла­нирование работы процессоров децентрализовано. В случае зави­сания или отказа РЕ встроенная система тайм-аутов позволяет вернуть все захваченные ресурсы ядра и, таким образом, обеспе­чивает плавную реорганизацию системы вместо полного отказа.

Ядро USIX поставляется пользователю в двоичном коде в ви­де отладочной версии и рабочей версии.

Отладочная версия USIX содержит 32 встроенных отладочных режима, позволяющих пользователю получить различные «сре­зы» выполнения задачи и, таким образом, быстро локализовать ошибки в своих программах. Среди таких «срезов» можно отме­тить отслеживание следующих действий:

  • выполнение системных вызовов;

  • обработку сигналов;

  • работу системы ввода-вывода;

  • порождение (fork), выполнение (ехес) и завершение (ехit) про­цессов;

  • работу подсистемы взаимодействия процессов (разделяемая па­мять (shm), семафоры (sem), сообщения (msg).

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

Рабочая версия USIX не содержит перечисленных отладочных возможностей и поэтому обеспечивает более высокую (на 20— 30%) производительность.

Соответствие стандартам. USIX является операционной сис­темой семейства UNIX и относительно программного интерфей­са соответствует международным стандартам Р0SIХ 1003.1, Р081Х 1003.2 и SVID (System V Interface Definition. Issue 3). Сис­тема USIX совместима на уровне исходных и двоичных кодов с системой UNIX System V и на уровне исходных кодов — с систе­мой ВSD4.3. В приложении 6 приведен краткий перечень основ­ных стандартов, связанных с ОС семейства UNIХ.