Введение
Операционная система реального времени 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 is a family of real time, process based, multitasking, multi user operating systems, developed in the 1980s, originally by Microware Systems Corporation for the Motorola 6809 microprocessor. It was purchased by Radisys Corp in 2001, and was purchased again in 2013 by its current owner Microware LP. The OS 9 family was popular for general purpose computing and remains in use in commercial embedded systems and amongst hobbyists. Today, OS 9 is a product name used by both a Motorola 68000 series machine language OS and a portable (PowerPC, x86, ARM, MIPS, SH4, etc.) version written in C, originally known as 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 для внутреннего рынка Японии.