Введение

Операционная система реального времени OS 9 — это семейство операционных систем реального времени, основанных на процессах, многозадачных и многопользовательских, разработанных в 1980-х годах компанией Microware Systems Corporation для микропроцессора Motorola 6809. В 2001 году она была приобретена компанией Radisys Corp., а в 2013 году — снова её нынешним владельцем, Microware LP. Семейство OS 9 было популярно для общего назначения и до сих пор используется в коммерческих встраиваемых системах и среди энтузиастов. Сегодня OS 9 — это название продукта, используемое как для машинного кода ОС серии Motorola 68000, так и для переносимой (PowerPC, x86, ARM, MIPS, SH4 и т. д.) версии, написанной на языке C и первоначально известной как OS 9000.

История

Первая версия ("OS 9 Level One"), датируемая 1979–1980 годами, была написана на языке ассемблера для процессора Motorola 6809, и все её процессы работали в 64 КБ адресном пространстве процессора без блока управления памятью. Она была разработана как поддерживающая операционная система для проекта BASIC09, заключенного с Motorola в рамках разработки 6809. Более поздняя версия для 6809 ("Уровень два") использовала возможности аппаратного отображения памяти, поддерживала до 2 МБ памяти (около 1980 года) в большинстве реализаций и включала графический интерфейс на некоторых платформах. В 1983 году OS 9/6809 была портирована на язык ассемблера Motorola 68000 и расширена (получила название OS 9/68K), а ещё более поздняя версия (1989 года) была переписана в основном на C для повышения переносимости. Изначально портативная версия называлась OS 9000 и была выпущена для 80386-совместимых ПК около 1989 года, а затем портирована на PowerPC около 1995 года. Эти более поздние версии лишены возможностей отображения памяти OS 9/6809 Level Two, поскольку они в них не нуждаются. Они использовали единое плоское адресное пространство, совместно используемое всеми процессами; аппаратное обеспечение отображения памяти, если оно присутствует, в основном использовалось для обеспечения доступа процессов только к той памяти, на которую у них есть права. В любом случае, процессоры 680x0 и 80386 (и более поздние) напрямую поддерживают значительно больше 1 МБ памяти. В результате ранних, повсеместно принятых проектных решений, использующих возможности легко используемого повторно входящего объектного кода процессора 6809, программы, предназначенные для OS 9, должны быть повторно входящими; компиляторы автоматически генерируют повторно входящий код, а ассемблеры для OS 9 обеспечивают значительную поддержку для этого. OS 9 также использует позиционно-независимый код и данные, поскольку 6809 также поддерживает это напрямую; компиляторы и ассемблеры поддерживают позиционную независимость. Ядро OS 9 загружает программы (включая общий код) и выделяет данные, где достаточно свободного места в карте памяти. Это позволяет размещать всю ОС и все приложения в ПЗУ или флэш-памяти и упрощает требования к управлению памятью при загрузке программ в ОЗУ и запуске. Программы, драйверы устройств и менеджеры ввода-вывода в OS 9 являются "модулями" и могут быть динамически загружены и выгружены (в зависимости от количества ссылок) по мере необходимости. OS 9/6809 работает на системах Motorola EXORbus, использующих процессоры Motorola 6809, шины SS 50 Bus и SS 50C от таких компаний, как SWTPC, Tano, Gimix, Midwest Scientific и Smoke Signal Broadcasting, системы STD bus 6809 от различных поставщиков, персональные компьютеры, такие как Fujitsu FM 11, FM 8, FM 7 и FM 77, Hitachi ベーシックマスター #S1 и многие другие. System Industries, сторонний поставщик оборудования, совместимого с DEC, использовал процессор 68B09E с OS9 в своих контроллерах QIC (четвертьдюймовых картриджей) в установках VAX. Наиболее известным оборудованием (благодаря низкой цене и широкому распространению) был TRS 80 Color Computer (CoCo) и аналогичная серия Dragon. Даже на CoCo, довольно минималистичной аппаратной платформе, под OS 9/6809 Level One было возможно одновременное выполнение нескольких интерактивных пользователей (например, один на консольной клавиатуре, другой в фоновом режиме и, возможно, третий интерактивно через последовательное соединение), а также нескольких других неинтерактивных процессов. Одна система, Positron 9000, позиционировалась как многопользовательская система для образовательных целей, предлагая среды Microware BASIC и Pascal, оснащенная 64 КБ до 512 КБ ОЗУ и имеющая от четырех до двенадцати последовательных портов. Однако, как сообщается, многопользовательские операции влияли на отзывчивость системы в минимальной конфигурации. Вторая процессорная реализация OS 9 для BBC Micro была произведена компанией Cumana. Она включала в себя ОЗУ, интерфейс жесткого диска SCSI и процессор MC68008. OS 9 также была портирована на Commodore SP 9000 или SuperPET, который имел 6809 в дополнение к 6502 базовой модели 8032, а также 64 КБ дополнительной памяти. Группа пользователей PET в Торонто спонсировала проект HW/SW, который включал дочернюю плату с MMU, а также диски с дистрибутивом OS 9. С двумя процессорами, 96 КБ, экраном 25×80 и последовательными, параллельными и IEEE 488 портами и множеством периферийных устройств это была одна из самых мощных доступных систем OS 9. Многопользовательские и многозадачные возможности OS 9 делают её пригодной для использования в качестве универсальной интерактивной компьютерной системы. Для неё было написано множество сторонних интерактивных приложений, таких как табличный процессор Dynacalc, форматировщик текста VED и текстовые процессоры Stylograph и Screditor 3 WYSIWYG. Форматировщик nroff от TSC также был портирован на OS 9 компанией MicroWay. В середине 1980-х годов OS 9 была выбрана для операционной системы CD i. Примерно в то же время Microsoft обратилась в Microware с предложением о приобретении компании, в основном привлеченная CD RTOS, операционной системой CD i. Переговоры провалились, сделка не состоялась, и Microware решила оставаться независимой. В конце 1980-х годов Microware выпустила OS 9000, более переносимую версию операционной системы. Подавляющее большинство ядра операционной системы было переписано на C, оставив лишь небольшое количество аппаратно-зависимых частей на языке ассемблера. Были добавлены несколько "более продвинутых функций", таких как древовидное пространство имен модулей ядра. OS 9000 изначально была портирована на процессоры семейства Motorola 680x0, Intel 80386 и PowerPC. OS 9000/680x0 потерпела неудачу на рынке и была быстро снята с производства, вероятно, потому, что мало кто из клиентов хотел попробовать более громоздкую и медленную операционную систему по сравнению с существующей OS 9/680x0 с доказанной стабильностью. Непопулярность OS 9000/680x0 могла быть связана с тем, что срок службы семейства Motorola 680x0 и систем VME-компьютеров подходил к концу. Позже Microware стала называть все свои операционные системы — включая ту, которая изначально называлась OS 9000 — просто OS 9 и начала переориентировать свой бизнес на рынок портативных потребительских устройств, таких как сотовые телефоны, автомобильная навигация и мультимедиа. В конце 1980-х и начале 1990-х годов компьютеры Character Generators, используемые в вещательных системах, широко использовали OS 9 и OS 9000. Компания Pesa Electronica, ныне прекратившая существование, использовала OS 9 на своих CG, таких как CG 4722 и CG4733.

Конфликты имен и судебные решения

В 1999 году, спустя девятнадцать лет после первого выпуска OS 9, Apple Computer выпустила Mac OS 9. В том же году Microware подала в суд на Apple за нарушение прав на товарный знак, однако судья постановил, что вероятность смешения между ними невелика. Некоторые пользователи Macintosh, не знакомые с менее известной ОС 9 от Microware, публиковали сообщения в новостной группе comp.os.os9, не осознавая, что это за OS 9. В 2001 году RadiSys приобрела Microware для получения доступа к сетевым процессорам Intel IXP 1200. Это приобретение обеспечило Microware капиталом и позволило продолжить разработку и поддержку OS 9. 21 февраля 2013 года Microware LP (партнерство, образованное Freestation из Японии, Microsys Electronics из Германии и RTSI LLC из США) объявила о подписании соглашения о покупке активов для приобретения прав на названия Microware, OS 9 и все активы у RadiSys.

Расписание задач

Ядро OS 9 в режиме реального времени позволяет нескольким независимым приложениям выполняться одновременно посредством переключения задач и средств межпроцессного взаимодействия. Все программы OS 9 работают как процессы, содержащие как минимум один легковесный процесс (поток), но могут содержать практически неограниченное количество потоков. Внутри процесса эти легковесные процессы совместно используют память, пути ввода-вывода и другие ресурсы в соответствии со спецификацией и API POSIX Threads. OS 9 планирует потоки, используя алгоритм планирования с фиксированным приоритетом и круговым (round robin) планированием внутри каждого приоритета. Поддерживается разделение времени. Уровни приоритета могут быть разделены на диапазон, поддерживающий механизм устаревания (aging), и более высокий диапазон приоритетов, использующий строгое приоритетное планирование. Каждый процесс может получить доступ к любому системному ресурсу, отправляя соответствующий сервисный запрос OS 9. При каждой точке планирования OS 9 сравнивает приоритет потока в начале активной очереди с приоритетом текущего потока. Если приоритет потока в активной очереди выше, чем приоритет текущего процесса, происходит переключение контекста на этот поток. Механизм устаревания искусственно повышает эффективный приоритет потоков в активной очереди по мере течения времени. Через заданные интервалы разделение времени возвращает текущий поток в активную очередь за другими потоками с тем же приоритетом.

Сравнения с Unix

Понятие процессов и путей ввода-вывода в ОС 9 во всех отношениях очень похоже на понятие процессов и путей ввода-вывода в Unix, но есть некоторые существенные различия. Во-первых, файловая система – это не единое дерево, а лес, где каждое дерево соответствует устройству. Во-вторых, в OS 9 отсутствует системный вызов fork в стиле Unix. Вместо этого используется системный вызов, создающий процесс, запускающий указанную программу, выполняющий практически ту же функцию, что и fork exec или spawn. Кроме того, процессы OS 9 отслеживают два "текущих каталога", а не один; "текущий каталог исполнения" – это место, где по умолчанию сначала производится поиск программ для запуска (что аналогично использованию переменной среды PATH в UNIX). Другой каталог – текущий каталог данных. Еще одно отличие заключается в том, что в OS 9 родительские каталоги можно указывать повторением точек три и более раз без промежуточных слешей (такая функция также присутствует в 4DOS/4OS2/4NT/TC). Например, /file в OS 9 аналогичен ///file в Unix. Однако, . и .., с одной или двумя точками, работают одинаково как в OS 9, так и в Unix. OS 9 изначально имела модульную структуру, сформировавшуюся под влиянием представлений разработчиков 6809 и их ожиданий относительно распространения программного обеспечения в будущем (см. серию из трех статей в журнале Byte за январь-март 1979 года, написанных Терри Риттером и др. из Motorola, разработчиков процессора). Структура модулей требует дополнительного пояснения: OS 9 хранит "каталог модулей" – список всех модулей, находящихся в памяти либо из-за загрузки, либо из-за обнаружения в ROM при начальном сканировании во время загрузки. При вводе команды в оболочку OS 9, она сначала ищет в текущем каталоге модулей модуль с указанным именем и использует его (увеличивая счетчик ссылок), если он найден, или производит поиск соответствующего файла на диске, если модуль отсутствует. В OS 9/6809 и OS 9/68000 каталог модулей плоский, но в OS 9000 каталог модулей стал древовидным. Оболочка OS 9000 ищет в альтернативном каталоге модулей переменную среды MODPATH, аналогичную переменной PATH во всех версиях, указывающую последовательность каталогов модулей, в которых следует искать предварительно загруженные модули. Модули используются не только для хранения программ, но также могут создаваться "на лету" для хранения данных и являются способом реализации общей памяти в OS 9. OS 9/non 68000 поддерживает POSIX-потоки. Один процесс может запускать любое количество потоков.

Статус

OS 9 устарела и практически не используется, хотя Microware LP продолжает её поддерживать и она работает на современных архитектурах, таких как ARM и x86. Предоставляемый компилятор, Ultra C/C++, поддерживает C89, но не поддерживает ни C99, ни C++98. Ultra C++ обеспечивает ограниченную поддержку шаблонов C++. Она также поддерживается популярными библиотеками SSL/TLS, такими как wolfSSL. Версия OS 9 с G Windows от Steve Adams присутствует на оборудовании для очистки полупроводниковых пластин, производимом компаниями Ontrak Systems / Lam Research. Тысячи таких систем используются сегодня, однако программное обеспечение, работающее на них, датируется 1999 годом, когда была создана последняя версия для решения проблем, связанных с Y2K. Версии OS 9/68K работали на широком спектре платформ семейства 68000, включая Sharp X68000 в Японии, некоторые персональные компьютеры, задуманные их создателями как модернизация Color Computer (например, MM/1 на базе 68070 и 68340, а также компьютеры от Frank Hogg Laboratories, PEP Modular Computers и Delmar Co.). Она также была портирована на Atari ST компанией Recc o ware в начале 1990-х годов и распространялась компанией Cumana в Европе. Существует порт для Apple Macintosh на базе 68000, распространяемый Ultrascience. Также, по слухам, существует порт для Amiga от Digby Tarvin. OS 9/68K является обязательной для использования в контроллерных картах 2070 1B и 2070 1E, и поэтому используется во многих североамериканских системах управления дорожным движением. OS 9/68K также применяется в некоторых других встраиваемых приложениях, включая генератор телевизионных символов Quanta Delta, который до сих пор производится ScanLine Technologies в штате Юта. Хотя код пользовательского интерфейса на этой системе запускался при загрузке, существовала скрытая, недокументированная последовательность клавиш, которая предоставляла пользователю командную строку root в окне прокрутки на мониторе канала редактирования устройства. В сфере встраиваемых систем OS 9 нашла применение в таких устройствах, как синтезаторы Fairlight CMI, робототехника, автомобильные навигационные системы и промышленный стандарт Compact Disc Interactive (CD i) от Philips. TRS 80 Color Computer (и клоны) до сих пор имеет пользователей и ежегодную конференцию в Чикаго; по состоянию на 2018 год 27-й ежегодный "Последний" Чикагский CoCoFEST был запланирован на 21-22 апреля 2018 года. Группа канадских программистов переписала OS 9/6809 Level II для CoCo 3 (с аппаратным обеспечением для трансляции адресов) для повышения эффективности и использования преимуществ родного режима Hitachi 6309. Сегодняшние серьезные пользователи CoCo обычно заменяют 68B09E в CoCo 3 на Hitachi 63B09E и запускают переписанную версию, называемую NitrOS 9. Эта комбинация удивительно быстрая, учитывая, что она работает на явно недорогой 8-битной компьютерной системе. CoCo3 FPGA от Gary Becker – это синтезированный TRS 80 Color Computer, работающий под управлением NitrOS 9 на плате разработки Altera DE 1. Ядро процессора 6809 было разработано John Kent и в настоящее время работает на частоте 25 МГц. OS 9000/80x86 может работать на компьютерах типа PC, построенных на базе процессоров Intel x86. OS 9000 также была портирована на PowerPC, MIPS, некоторые версии процессора ARM от Advanced RISC Machines и некоторые процессоры семейства Hitachi SH. Аудиопроигрыватель DigiCart/II Plus работает под управлением OS 9/68K. Это твердотельное устройство, заменяющее картковые проигрыватели, используемые на радиостанциях. Эти устройства используются на радио и в таких местах, как Walt Disney World, где они воспроизводят объявления парка. Немецкий производитель электроники Eltec производит платы процессоров Eurocom для промышленных целей с конца 1970-х годов, начиная с 6802 и 6809 Eurocom 1 и Eurocom 2, и далее с платами процессоров 68K и их производными до сегодняшнего дня. Современные платы могут поставляться с различными операционными системами, среди которых OS 9. Omron использовала OS 9 в своих панелях HMI серии NS. Однако для своей новой серии NA Omron выбрала Windows Embedded Compact 7. Omron отметила, что для OS 9 почти все драйверы, например для USB-накопителя, приходилось разрабатывать самостоятельно. OS 9000/SH4 можно найти в загрузчике (внутри контейнера формата KIWI LOADING. KWI) на картах CD/DVD для старых автомобильных GPS-навигационных систем, произведенных Matsushita для внутреннего рынка Японии.