OS-9(オーエスナイン)は、マイクロウェアシステムによってモトローラの8ビットMPUである6809のために開発されたリアルタイムオペレーティングシステム(以下、RTOS)である。
当時、マイクロウェアシステムはモトローラの依頼でプログラミング言語BASIC09を共同開発しており、この言語の開発・実行環境としてOS-9が作られた。

その後、OS-9は680x0に移植され、さらにx86、PowerPC、SH、ARMなど、幅広いCPUに対応した。

2001年にラディシス社によってマイクロウェアシステムが買収され、一部門となり、2013年に販売会社グループに売却されてマイクロウェアLP社として独立した。

## 特徴

### プリエンプティブ・マルチタスク

OS-9は、プリエンプティブ・マルチタスクをおこなうRTOSである。

### マルチプロセス

多くの組み込み用RTOSでは、全ての実行コードを単一のロードイメージにリンクしてメモリに展開・実行するので、並行実行されるタスクはスレッドモデルであることが一般的だが、OS-9では各タスクは独立したプログラムイメージ(プログラムテキストは複数タスクで共有可)を実行するプロセスモデルである。

プロセスモデルでは各タスクは論理的に独立しているのでタスク間のデータの共有や通信にコストがかかりがちだが、OS-9では「データモジュール」と呼ばれる一種の共有メモリ機能で高速なプロセス間通信を提供している。ただし、タスク間通信に不可欠なセマフォが提供されたのはかなり後のことである。また後のバージョンではPOSIXに準拠したプロセス内の複数スレッドをサポートする。

OS-9/6809レベル2ではMMUを使った仮想アドレス空間をサポートしたが、その他のバージョンでは単一のアドレス空間しか持たないフラットメモリモデルである。OS-9/6809レベル2及びOS-9/68030以降のバージョンではハードウェアによるプロセス間のメモリ保護機能がある。

OS-9での新プロセス作成はUNIX流の現在のプロセスのコピーではなく、(仮想アドレス空間を持つOS-9/6809レベル2でさえ)実行プログラムを指定するWindowsの「spawn」に近いモデルである。これは、ベース(セグメント)レジスタを持たないCPUアーキテクチャでフラットメモリモデルを採用する限りある程度必然であり、UNIXでも多くの場合せっかくコピーした子プロセスの元の実行イメージは捨てられてexecで新しい実行イメージに置き換えられることを考えれば効率的でもある(マイクロウェアはこれを逆手にとって「OS-9のforkはUNIXよりX倍速い」と喧伝していた)。

### モジュール構造

OS-9を構成するすべての部分は、モジュールと呼ばれる統一された構造を持っており、必要な機能だけを選択して使用することができ、自由度の高い構造になっている。これにより、OS-9は以下の特徴を有する。

#### OS-9のモジュールの種類

- カーネルモジュール
  - kernel(6809版を除くカーネル本体)
  - OS9p1 拡張モジュール(6809版ではカーネルのうち起動に最小限必要部分)
  - OS9p2(6809版ではカーネルのうちOS9p1に含まれない残り部分)
  - OS9p3(漢字変換処理等の拡張で日本語版のみ)
- ioman - I/Oシステムの総合管理(後に68000版でkernelに吸収されモジュールとしては存在しなくなったが、OS-9000では再び独立したモジュールとしてkernelから分離された)
- ファイルマネージャモジュール
  - RBF - Random Block File Manager (磁気ディスク装置、ディスクドライブなど)
  - SCF - Sequential Character File Manager (コンソールなど)
  - SBF - Sequential Block File Manager (テープ)
  - PipeMan - Pipe File Manager (パイプ)
  - IBF - IEEE 488 Interface Bus File Manager (エーアールケーコーポレーション製)
  - PCF - PC-DOS equivalent File Manager(PC-DOSファイルの操作)
  - NVFM - non-volatile File Manager(CD-iのデータ保存のための、ディレクトリを持たず、バッファリングしないファイルシステム)
  - CDFM - Compact Disc File Manager
  - NRF - Non-Volatile RAM File Manager
  - UCM - User Communication File Manager
  - DSM - Display Support Manager
  - GFM - Graphics File Manager
  - MFM - MAUI File Manager
  - NFM - Network File Manager
  - SOCKMAN - Socket File Manager(OS-9/ISP - Internet Support Package に含まれている)
  - IFMAN - 通信インターフェース・ファイル・マネージャ
  - PKMAN - 仮想キーボード・ファイル・マネージャ
  - SPF - Stacked Protocol File Manager(LANComm/SoftStax ネットワーク・サブシステム)
- デバイスドライバモジュール
  - (例)sc6821 - MC6821用汎用コンソールドライバ
- デバイスディスクリプタモシュール
  - (例)t0 - デバイスのアドレス、設定値などを保持
- プログラムモジュール
  - (例)shell、標準ユーティリティプログラム
  - cc - Microware C Compiler / ucc - Ultra C Compiler
- データモジュール
  - (例)init - システム初期化定数などを保持
- BASIC中間コードモジュール
- 共有ライブラリモジュール(サブルーチンモジュール)
  - runb - MW-BASIC/Basic09ランタイムライブラリ
  - cio - Microware C Compiler 用入出力ライブラリ・サブルーチン・モジュール
  - csl - C language shared library
  - psl - presentation support library(CD-i用)
- システム・モジュール
  - cache - メモリ・キャッシュの効率的使用
  - ssm - System Security Module - MMU等を利用したメモリ保護機能
  - fpu - 浮動小数点コプロセッサの利用(または演算ライブラリ)
  - vector - ハードウェア割り込み管理 (OS-9000)
  - ティッカ・ドライバ - 定周期割り込み
  - RTCドライバ - 時刻の取得・設定
  - align - アライメントエラーに相当するメモリアクセスの支援

### ダイナミックローディング

カーネル以外の多くのモジュールが、システムの稼動中、任意の時点で追加、削除、更新が可能である。例えばデバイスドライバは任意の時点でメモリにリンク/アンリンク(アンロード)が可能であるため、デバッグ中もカーネルを壊さない限りシステムの再起動を必ずしも必要としない。

またモジュールをメモリにリンク(ロード)するときにリンクカウントがインクリメントされるほか、モジュールを利用(オープン)する度にリンクカウントがインクリメントされ、プロセスでモジュールの利用が終わるとリンクカウントがデクリメントされる仕組みがある。よってモジュールを利用しているプロセスがある間は、故意にアンリンクしようとしてもアンリンク(アンロード)されない。またリンクカウントがゼロになるとモジュールがメモリからアンリンク(アンロード)される。

### メモリ保護

ハードウェアがMMUを持つ場合、メモリ保護機能が有効となる。システム空間とユーザ空間が分離され、また、各ユーザプロセス間も分離される。デバッグ中のユーザープロセスが他のプロセスやシステムを破壊することがない。OS-9/6809では特にLevel2と呼び、最大2MBのメモリを管理できる。

### マルチユーザ

組み込み用途だけではなく、一般のコンピュータとして使用可能であり、UNIXと同様のマルチユーザの機能を備えたTSSの環境がある。ユーザ、グループ別にファイルやプロセスのアクセス権がある。なお、PC用のOSとして見た場合、8bitや16bit時代の一般的なユーザには、マルチタスク・マルチユーザのメリットが理解されなかった。

### UNIXライク

以上のようなRTOSの上で、UNIXライクな開発環境が構築されている。簡易なものであるがシェルも実装されており、ファイルシステムも階層構造を始めとしてUNIXに近い機能を実現している(ユニファイドI/O)。

### OS-9LAN

OS-9には独自のLANとしてOS-9LANがある。LAN上の他のコンピュータの資源に対して、透過的にアクセスが可能な優れたものである。フルパスリストの先頭にコンピュータ名を追加するだけで、そのコンピュータのファイルやデバイスにアクセス可能で、例えばシェルからリダイレクトして、LAN上の他のコンピュータに接続されたプリンタに出力可能である。

なお、開発は当初星光電子により、OS-9/6809と富士通FM-11+ARCNetという構成でおこなわれた。

X68000用のOS-9LANは、マイクロボードより販売されていた。

### ウィンドウシステム

OS-9/680x0には以下のようなウィンドウシステムが発売された。

- X Window System:マイクロウェアが移植。Motifも付属。
- Personal-Window:マイクロウェアジャパンが、X68000のために開発。
- G-Windows: ドイツのGESPAC(代理店:フォークス)が開発。
- XiBase9: ドイツのXiSysが開発。

### 欠点

- UNIXと異なり、仮想記憶機能が存在しないため、搭載された主記憶容量以上の記憶空間が使えない(もっとも、仮想記憶を利用するとリアルタイム性が担保できなくなるため、RTOSとしての意義がなくなる)。
- 製品として販売した場合、極めて容易に分析、解析が可能である。また、実際にメモリ上にあるモジュールを保存することでコピーが可能であるため、いわゆるコピープロテクトが原理的に不可能である。
- ユーザプログラムがハードウェア資源に直接アクセスできるCP/MやMS-DOSなどのOSに慣れたユーザは、アドレス空間をユーザとスーパバイザに分離したOSにおいて、ハードウェアへのアクセスにドライバが必要なことに不満を述べることが多い(アドレス空間を分離するか否かは、OS-9のレベルやバージョン、使用するハードウェアによる)。
- プロセス優先順位の逆転現象が存在し、マイクロウェア社が顧客向けに発行する機関紙 "Microware Pipelines" においては、優先したいプロセスのプライオリティを極端に低く設定する事例が頻繁に紹介されていた。
- 2013年現在、OS-9単独では対称型マルチプロセッシングをサポートしていない。

## OS-9/680x0

OS-9は、モトローラの16ビットCPU68000に移植された。以後、6809用はOS-9/6809、68000用はOS-9/68000と呼称されるようになった。その後、68000が68020、68030とシリーズ展開されるようになると、それらに最適化したOS-9/68020、OS-9/68030が開発された。

これらOS-9/680x0は、産業用RTOSとして高いシェアを占めていた。これは、20世紀末には、産業用システムのMPU (CPU) に680x0が広く採用されていたこと、ハードウェア資源を効率的に扱う多くの特徴を持っていること、OS-9自体の移植(ポーティング)が容易なことから必然的にそうなったのである。

例えば、ドライバ・モジュールのサンプルコードが多数提供されたことで、個別のハードウェアに対するドライバ・モジュールの移植が容易であり、ドライバモジュールの中であれば割り込み処理を通常のサブルーチンまたは関数として記述できるなど制約が少なく、安全で柔軟なシステム設計ができた。

また、アプリケーションをセルフで開発できることも評価されていた。ある程度規模の大きな産業用システムではVMEバスベースのシステムが採用されることが多かったが、これら自体によるセルフ開発が可能である。OS-9は数少ない、ターゲット上でセルフ開発が出来るRTOSであった(ただし、登場時のUNIXと同程度のCUIを利用する必要があった。その後、クロス開発環境が一般的になるにつれ、CodeWarriorが採用された時期もあった。現在ではWindowsで動作するGUIのクロス開発環境 Microware Hawk もしくはEclipse によるクロス開発のみ)。

様々な機能の追加による肥大化もあって、多機能版カーネル(デバッグ機能つき)と小型版カーネル(アトミックカーネル)の2種類に分化した。

(68000版を除いて)Ver.3からはセマフォ、マルチスレッド機能も追加され、必要な場合はPOSIXスレッドを使用することも可能となった。

## OS-9000(マルチプラットフォーム化)

その後、OS-9は全体がC言語で書き直され、OS-9000としてIntel 80386、MIPS、SPARC、PowerPC、ARM、日立 SH-3、SH-4、SH-5等に移植された。アメリカではCで書き直されたOS-9000/68000も発売されたが、市場からは全く相手にされず短期間で販売を終了した。

現在商標は統一され、OS-9のみとなっている。6809用、680x0用OS-9の実体は従来のアセンブリ言語で書かれたOS-9、その他CPU用OS-9の実体はOS-9000である。

## OS-9の稼動する汎用のコンピュータ

日本では、OS-9/6809が富士通FM-7/8シリーズ、FM-11シリーズに移植され富士通から発売、日立製作所のベーシックマスターレベル3シリーズやMB-S1にも移植された(開発はどちらも星光電子)。ベーシックマスターレベル3シリーズのうちMB-6890用OS-9 Level 1 Version 1.0は日立化成商事から発売され、画面分割型マルチウィンドウ採用、カナ文字サポート、コンカレント"BASIC09"が含まれていた。また、シャープのX68000シリーズには、独自のウインドウシステム (Personal Window) を装備したOS-9/680x0 Ver.2.4が、OS-9/X68000としてシャープから販売された(開発はマイクロウェアジャパン)。その後継製品として、マイクロウェアから、X68030用のOS-9/X68030 Ver.2.4.3も発売された。

他に、フォークスから、FM-11やFM-16β、PC-9801に68000ボードを搭載してOS-9/68000を稼動させる製品、FM-Rに68020ボードを搭載してOS-9/68020を稼動させる製品が発売されていた。

初期のOS-9/68000の開発環境として著名なものが、星光電子を始めとした国内のデベロッパーが広く使用していたマイクロボード(マイクロウェアジャパンの親会社)の製品である。同社のVMEバスボードを筐体に収めてセット販売したもので、いわば純正品(?)である。同社からはVMEバスの各種カードが産業用として発売されたが、それ以外にも、PC/ATマザーボードと同規格の基板に68030を載せたPCスタイルの製品も発売された。

また、マイクロボード以外にも多くのメーカーのVMEバス(VXIバス)、マルチバス、PCI/CompactPCIバスのボードがOS-9に対応していた(いる)。例えば、モトローラ(代理店:丸文)、アドバネット、アバールデータ、オムロン、シャープ、橘テクトロン、タンバック、電産、東京エレクトロン デバイス、フォークス、フォース・コンピュータ(代理店:インターニックス)、マイクロクラフトなどの製品である。(五十音順)

米国では、Apple II用の6809カード (The Mill) がOS-9/6809を標準OSとしていた他、タンディカラーコンピュータ (CoCo)、MM/1等、また、PC/ATに68020カード(アルプス電気製)を搭載してOS-9/68020を稼動させる製品が発売されていた。また、Macintosh用OS-9/68000も発売されていた。これは、すべてがスーパバイザモードで動作する当時のMacintosh OSをうまく利用し、TOOLBOXを利用可能としていた。

## OS-9が採用された代表的な機器

- モトローラのPDA。
- デジタルサンプリング・シンセサイザー(電子楽器) - フェアライトCMI (Fairlight CMI)。
- BMW・750iシリーズ純正カーナビゲーションシステム。
- マスプロ電工 カーナビゲーションシステム。
- ソニーとフィリップスが提唱したCD-i(セットトップボックスの統一規格で、OS部分は CD-RTOS と呼ばれた)。
- 日立製作所の銀行用ATM。
- レーザープリンター用エンジン。
- TCP/IP用ルーター。
- 情報端末機器 - サクサホールディングスSAXA (TAMRA) DT-300 (OS-9/SH3, MAUI を搭載)。
- 携帯電話。
- POS端末。
- パチンコ台および玉の供給システム。
- ボウリングピン制御。
- かつてメダルゲーム機を製造するシグマが開発したビデオスロット、ビデオポーカー、メカニカルスロットのゲーム基板(6809を2つ搭載)。
- スペースシャトルメインエンジン

## 評価と現状

もともとオペレーティングシステムではなくマルチメディア関連のミドルウェアが目当てでマイクロウェアを2001年に買収したRadisysのウェブサイトでOS-9は[Microware OS-9]として紹介され、ライセンスの販売(そしておそらくはサポートも)は古くからOS-9を手がけてきたシステムビルダ3社による代理販売となっていたが、Radisysは最終的に2013年3月にOS-9とMicrowareに関わるブランドを含む全権利をこの3社による共同事業体 (Microware LP) に譲渡した。
誕生から30余年を経たOS-9は2015年現在も開発が続けられており、OS-9 v6.0のリリースが予定されている。