Главная Пресс-центр Статьи и публикации OS-9 как она есть, "Приборы и Системы Управления", N 4, 1997

OS-9 как она есть, "Приборы и Системы Управления", N 4, 1997

Халявка А. В., ЗАО «РТСофт», Москва

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

Что такое OS-9?

OS-9 — многозадачная, многопользовательская операционная система реального времени, разработанная фирмой Microware System Corporation (USA).

В 1979 году совместными усилиями фирм Microware и Motorola была разработана операционная система реального времени для микропроцессора 6809. Версия Level I OS-9/6809 была способна адресовать 64 КВ памяти. Версия Level II OS-9/6809, используя прогрессивные в то время аппаратные средства динамической трансляции адресов, была способна адресовать уже до 2 МВ памяти и стала применяться в ряде популярных компьютерных систем, например таких как, Tandy Color Computer III.

В 1982 году Microware (уже независимо от Motorola) портировала OS-9 для семейства микропроцессоров 68000, создав систему OS-9/680X0 для 16-ти и 32-х разрядных микропроцессоров и микроконтроллеров. Код системы лишь на 20% был написан на языке высокого уровня (фрагмент распределения памяти и настраиваемая часть загрузочного кода), остальная часть с целью достижения максимальной производительности написана на Ассемблере. За пять лет с момента появления — в 1987 г. — OS-9/680X0 стала признанным промышленным стандартом де-факто для операционных систем реального времени абсолютным лидером по применимости в промышленных приложениях на базе технологии VME).

В списке поддерживаемых микропроцессоров OS-9/68K наиболее полно представлено семейство 68К — от младшего в серии MC68000 до 32-х разрядного, суперскалярного MC68060. Наибольшую популярность и распространение получили версии 2.4/2.5 системы и в настоящее время пользователями по достоинству оценены пользователями мощь и надежность новейшей версии системы — 3.0.1.

Что такое OS-9000?

OS-9000 — переносимая версия OS-9, написанная главным образом (95%) на С. Оставшиеся, критичные с точки зрения производительности участки кода, написаны на Ассемблере. Как результат, только 5% OS-9000 необходимо переписать чтобы портировать ее на новый процессор. Теоретически OS-9000 может быть перенесена на любую современную микропроцессорную архитектуру. Сегодня мы имеем поддержку со стороны новой версии OS-9000 V2.0 микропроцессоров: 680x0 (x>2), Intel 80x86 (x>3) и PowerPC (40х, 50х, 60х, 8хх).

Семейство операционных систем реального времени OS-9? …

Для пользователя OS-9 и OS-9000 — UNIX подобная среда. Модель процессов, межпроцессная коммуникация, многопользовательская файловая система и большое количество стандартных для UNIX утилит — все это позволит программисту знакомому с UNIX в минимально короткий срок почувствовать себя уверенно в среде реального времени OS-9. Единство архитектурных решений, совместимость приложений на уровне исполняемого кода, технология реализации интегральных средств разработки, а также дизайна и состава системных продуктов — эти факторы объединяют операционные системы реального времени OS9 и OS9000 в семейство операционных систем OS9.

В массе приложений (Рис. 1) семейство OS-9 используется уже в течение 18 лет, а число установленных копий превысило 5 миллионов.

Несколько штрихов к портрету OS-9

Система OS-9 является модульной, чрезвычайно гибко конфигурируемой, высокопроизводительной, встраиваемой системой реального времени. Именно такой она задумывалась с самого начала и именно таким видится путь ее дальнейшего развития.

Совокупность требований, исходя из которых проектировалась OS-9, в самом общем случае сводится к обеспечению следующих потребительских свойств создаваемой коммерческой ОС РВ:

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

Если первые четыре пункта вполне интуитивно понятны, то последний требует более полной характеристики.

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

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

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

Модульность

Одним из традиционных ограничений ядер реального времени (Exucutives) является их архитектура в виде дополнительного к приложению набора функциональных подпрограмм реального времени. Имея жесткую ориентацию на применение в условиях ограниченных ресурсов, эта архитектура значительно затрудняет гибкость разработки и реконфигурирования системы. В отличие от таких операционных систем как UNIX или MS DOS, которые существуют независимо от приложений, исполняющихся в них, ядра РВ определены как библиотеки подпрограмм, которые должны быть скомпонованы с прикладным ПО, перед тем как всю систему можно запускать на исполнение. Далее разработчик должен делать новую рекомпиляцию и новую компоновку всей системы, каждый раз когда он желает изменить что-либо   в отдельном приложении или просто реконфигурировать систему.

Для достижения гибкости, как на этапах разработки, так и на этапах эксплуатации в OS-9 применен модульный объектно-ориентированный подход в разработке архитектуры системы. Все функциональные компоненты OS-9 — включая независимое (автономное) ядро, иерархические файловые менеджеры, систему ввода/вывода и средства разработки — реализованы в виде независимых модулей.

Такая система может быть легко динамически реконфигурирована, добавлением или удалением отдельных модулей во время работы системы без какой-либо рекомпиляции или релинкования объектного кода. И так как ОС полностью автономна от приложения, разработчик может выполнять такие операции как загрузка и исполнение прикладной программы, запуск диагностики, добавление или исключение драйвера или изменение конфигурации системы путем простой команды с клавиатуры или посредством канала удаленной связи.

Компактное высокоскоростное ядро

В самой простейшей конфигурации OS-9 состоит всего лишь из базового модуля — ядра и в состав OS-9 входит самое совершенное ядро из имеющихся на рынке. Оно выполняет следующие сервисные функции:

Диспетчеризация процессов.
Многоуровневое, приоритетное обслуживание прерываний.
Обмен информацией между процессами.
Обработка ошибок.
Распределение и защита системных ресурсов.

Число базовых функций ядра может быть увеличено за счет написанных пользователем модулей расширения ядра, готовых модулей расширения ядра (для управления FPU, КЭШем — SYSCash, питанием — PWrMan и т.д.), модулей управления файловым вводом/выводом.

В процессе работы над новыми версиями системы созданы различные специфичные для типа процессора ядра отличие от двух ядер общего назначения в OS-9/680x0 V2.4). Эта настройка позволила оставить в ядре только тот код, который может поддерживаться процессором данного типа. Например, ядро для 68040 содержит около 2 Кбайт кода только для восстановления сбоев шины, управления арифметическим устройством с плавающей запятой и использования инструкции move16, а также использует второй указатель стека, для обработки прерываний.

Хотя в процессе разработки желательно иметь и полнофункциональное ядро, нет никакого разумного довода требовать от целевой встроенной системы реального времени поддержания таких функций, как обеспечение многопользовательской защиты и средства отладки особенности, если прикладной код был полностью проверен и отлажен). Для решения этой проблемы Microware, наряду с полнофункциональным, предлагает микроядро OS-9 — Atomic. Из нового ядра удалены функции поддержки средств отладки, многопользовательской защиты, защиты памяти и учета использования ресурсов.

Atomic-ядро OS-9 обеспечивает выполнение только тех функций, которые требуются во встроенной целевой системе, обеспечивая наиболее высокую производительность (3 мкс — Interrupt Latency Time, 68040 25MHz) и детерминированность всех предоставляемых функций. Из ядра были удалены те функции, которые широко не используются во встроенных системах.

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

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

Надежность системы

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

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

В системе имеются следующие требующие защиты ресурсы:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Подпрограммы перехвата сигналов

Одной из важных особенностей операционной системы OS-9 является наличие подпрограмм перехвата сигналов. Эта подпрограмма представляет собой необязательную процедуру обработки исключительных ситуаций, которая связывается с данным процессом.

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

Выделение IOMan

Унифицированная система ввода/вывода операционной системы OS-9 имеет пять уровней и использует жестко стандартизованные системные директивы ввода/вывода (такие, как I$Open, I$Close, I$Read и I$Write), тем самым предоставляет стандартный базис для файловых менеджеров и драйверов устройств. Общие для всех системных директив ввода/вывода ресурсы компонуются операционной системой до того момента, как системная директива будет передана на обработку файловому менеджеру. Вся эта работа выполняется специально выделенным системным модулем менеджера ввода-вывода In-Out Manager (IOMan).

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

Система ввода-вывода

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

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

Для повышения гибкости разработки, операционные системы такие как UNIX и OS-9 рассматривают все устройства как файловые объекты и применяют технику известную как перенаправление В/В, которая позволяет разработчику выполнять В/В без детальной спецификации устройства назначения. Конфигурация устройств в OS-9 может быть изменена в период исполнения с автоматическим добавлением соответствующих драйверов, что существенно упрощает как реконфигурацию системы с новыми или дополнительными устройствами, так и процесс тестирования или отладки.

Файловые менеджеры OS-9

OS-9 имеет самый широкий набор файловых менеджеров по сравнению с другими операционными системами реального времени.

Базовые и сетевые файловые менеджеры

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

Модульная структура OS-9 позволяет системному разработчику выбирать именно те функциональные блоки, которые требуются данному приложению. Для обеспечения локального хранения и регистрации данных в систему может быть включена поддержка дисковых и ленточных устройств. Сетевые файловые менеджеры обеспечивают доступ к самым разным сетевым устройствам по протоколу TCP/IP и прозрачно связывать между собой различные системы. Любая из опций OS-9 легко может быть добавлена в систему для поддержки изменившихся требований к системе.

Дополнительные модули управления файловым вводам/выводом могут также поставляться сторонними разработчиками.

Файловые менеджеры с расширенными возможностями

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


Файловый менеджер управления стеком протоколов — SPF: этот менеджер поддерживает несколько типов коммуникационных протоколов типа Х.25 и LAP-B. В автономной встроенной системе SPF-стеки протоколов могут быть как резидентными в устройстве, так и загружаться в устройство через сеть.

Пользовательский интерфейс мультимедиа-приложения — MAUI: MAUI-интерфейс содержит расширенный набор протоколов API для соответствия требованиям высокопроизводительных мультимедиа-протоколов либо протоколов пользователя. Наиболее важной особенностью MAUI-интерфейса является то, что он может быть использован в реальном времени.

ISDN-менеджер: добавление к полнофункциональным сетевым и коммуникационным файловым менеджерам Microware. Рассчитанный на такие глобальные телекоммуникационные приложения, как видеоконференции, высокоскоростная факс-связь и мосты между локальными и глобальными сетями, эти файловые менеджеры позволяют осуществлять системе OS-9 доступ к Базовому каналу ISDN-сети (Basic Rate Channel).

Файловый менеджер для приложений мультимедиа — MPFM: соответствующий спецификациям MPEG файловый менеджер рассчитан на использование в различных приложениях мультимедиа, включающие интерактивное телевидение и выдачу видеоинформации по запросу.

Конфигурации системы

Microware поставляет операционную систему реального времени OS-9 с набором файловых менеджеров в виде логических конфигураций, соответствующих конкретным требованиям. Каждая следующая конфигурация строится на базе предыдущей и имеет более высокий уровень поддержки ввода/вывода:

Atomic — детерминированное, высокопроизводительное микроядро для глубоко встроенных применений с минимальным потреблением ресурсов и требованиями характеристик «жесткого реального времени».
Atomic Node — к ядру Atomic добавляются сервис TCP/IP и NFS-клиента для построения распределенных, мобильных или многопроцессорных коммуникационных приложений.
Embedded — базовое программное обеспечение, лицензируемое производителями встроенных систем в качестве составной части своих изделий.
Embedded Node — к ядру встроенной OS-9 добавляются TCP/IP и сервис NFS-клиента для построения распределенных или многопроцессорных приложений.
Disk-Based — полная конфигурация дисковой OS-9, предлагаемая обычно производителями систем разработки общего назначения в качестве хост-системы.
Extended — предназначена для производителей распределенных приложений, требующих сетевых и коммуникационных возможностей.

Все эти системы могут работать со средствами разработки приложений Microware.

Пакет разработчика OS-9 Developer's Package

Данный пакет разработчика содержит все необходимые для установки исходный и объектные коды и документацию, обеспечивающие легкий перенос операционной системы OS-9 в целевое оборудование. Лицензионные права на портацию и использование OS-9 в своих изделиях приобрели свыше 750 фирм (Рис 2.).

Microware предлагает значительное количество дополнительных расширений ввода/вывода и файловых менеджеров в дополнение к перечисленным выше лицензированным конфигурациям. Например, возможно добавление поддержки средств коммуникации АТМ под управлением файл-менеджера SPF для прошиваемой в ПЗУ телекоммуникационной системы, базирующейся на Embedded OS-9.

OS-9 Board Support Package

Пакеты поддержки процессорных плат (BSP — Board Support Package) содержат определенным образом сконфигурированную версию операционной системы реального времени OS-9. Эти пакеты содержат полное многозадачное программное обеспечение для встроенных приложений реального времени. В силу сложившейся лицензионной практики производители промышленных и специальных компьютеров, предлагают OS-9 BSP для своего оборудования непосредственно сами. Как правило, в подобной поставке ОС уже прошита в ПЗУ соответствующего компьютера, а драйверы локальных устройств, дополнительные системные модули и набор сервисных утилит поставляется на дистрибутивном носителе. От фирмы Microware можно приобрести OS-9 BSP для следующего оборудования на основе микропроцессоров:

Любой пакет может превратить систему на базе указанной аппаратуры в мощную целевую систему OS-9 для применения в пользовательском приложении. Кроме того, этот пакет может служить в качестве базового программного обеспечения для создания резидентных систем разработки. Пакеты OS-9 BSP устанавливаются за считанные минуты и легко приспосабливаются к конкретным требованиям данного приложения.

Вопросы переносимости

Одним из принципиальных доводов к использованию хорошо известных, коммерческих операционных систем является то, что они обеспечивают переносимость приложений от машины к машине. Написав приложение на С для стандартной ОС — скорее, чем непосредственно для «голой» целевой машины — разработчик может просто (особенно учитывая растущую стоимость разработки программного обеспечения) портировать или перенести приложение на любую аппаратную платформу, которая поддерживается данной ОС. Опираясь на переносимость мы получаем широчайший выбор для своего проекта большинства популярных микропроцессоров, одноплатных компьютеров выполненных на их основе, системных шин — ISA, EISA, Multibus II, VMEbus, Nubus и т.д.

Один из подходов к достижению переносимости — применение стандартизованных открытых решений. В OS-9 последовательно реализованы соответствующие средства, отвечающие POSIX, ANSI C/C++, NFS Server&Client, X Windows Server&Client и Open Software Foundation.

Группа стандартов POSIX определяет переносимые интерфейсы для UNIX-подобных ОС. Это развивающийся набор стандартов, каждый из которых охватывает различные аспекты операционных систем. Базовым стандартом этой группы является стандарт POSIX.1 (IEEE 1003.1 — 1990), который определяет фундаментальный набор функций, необходимых для создания пользовательской программы.

В OS-9 реализованы все функции стандарта POSIX.1, что очень важно для написания действительно переносимых приложений. Поддержка функций стандарта содержится в библиотеке POSIX.1 для компилятора Ultra C/C++.

Системы разработки приложений для OS-9

Компиляторы Ultra C и Ultra C++

Так как новые оптимизирующие компиляторы компании Microware появились между моментами выпуска версий V2.4 и V3.0, у разработчиков новых версий OS-9 появилась возможность применения более лучших методов оптимизации кода, не прикладывая при этом никаких дополнительных усилий. Хотя на языке Си написано, как уже было отмечено, только около 20 процентов кода OS-9 улучшения от смены компилятора стали заметны сразу (например, распределение памяти стало выполняться на 15 процентов быстрее).

Некоторые компиляторы оптимизируют приложения на пофайловой (file-by-file) основе. Компиляторы Ultra C и Ultra C++ выполняют оптимизацию приложения целиком, вместе с используемыми библиотеками.

Компилятор Ultra C полностью удовлетворяет спецификации ANSI/ISO 9899:1990 C Compiler. Для подтверждения совместимости со стандартом компания Microware использовала тестовый пакет Plum Hall C Validation Test Suite. Кроме ANSI C, компилятор полностью совместим с Kernigan and Ritchie C.

Источником появления компилятора Ultra C++ является рабочий стандарт X3J16 ANSI/ISO C++. Как и рабочий стандарт на С++, Ultra С++ основывается на языке, указанном в Аннотированном Справочном Руководстве (Annotated Reference Manual — ARM). Ultra С++ обеспечивает поддержку стандартных блоков (шаблонов) и исключительных ситуаций, кроме того, постоянно добавляются появляющиеся в стандарте новые характеристики. Кроме библиотек классов iostream и complex, пакет включает библиотеку классов Tools.h++ признанного лидера в создании библиотек классов для С++ компании Rogue Wave Software.

FasTrak для UNIX и Windows

Пакет FasTrak представляет собой объединение средств для групповой разработки, автоматизирующих процесс создания, отладки, анализа и управления сложными проектами разработки программного обеспечения реального времени. Построенный вокруг оптимизирующих компиляторов Ultra C и Ultra C++ компании Microware, данный пакет учитывает все аспекты реализации проекта, включая написание исходного кода и его модификацию, создание make-файлов, отладку на уровне исходного кода, профилирование системного и прикладного ПО и управление версиями программ. Пакет FasTrak разработан для платформы MS Windows 3.11, 95, NT и многих широко распространенных рабочих станций UNIX: SunOS V4.1.4, Solaris V2.4, HP 9000 семейства 700 V9, IBM RS 6000 V3.0, SGI R5.3.

Резидентный пакет OS-9 Tool Kit

Для генерации прикладного кода непосредственно в среде OS-9 предназначен пакет OS-9 Tool Kit. В него включен компилятор Ultra C либо Ultra C++. Для отладки исполняемых кодов используется Отладчик на уровне исходного текста С/С++, представляющий собой гибкое средство локализации ошибок программирования с наименьшими затратами. Этот Отладчик имеет полный интерпретатор выражений на С/С++, развитый набор команд, онлайновую справку и может выполнять отладку выражений как на С/С++, так и на Ассемблере.

20.04.2014