- QNXは1980年代初頭にカナダで始まったマイクロカーネルベースのリアルタイムオペレーティングシステムである
- IBM PCなど多様なハードウェア対応、高い移植性と分散メッセージパッシング、優れた信頼性とマルチタスク環境を提供する
- 教育用コンピュータ、産業インフラ、車載システムなどで採用され、大きな影響力を持った
- POSIX準拠によりUnixとの互換性を強化し、**軽量GUI(Photon)**と多様なネットワーク機能へと発展した
- 自動車、組み込み、モバイルなど最新の市場変化にも対応し続け、安定性、性能、セキュリティを高めてきた
QNXオペレーティングシステムの始まり
- 1979年、University of WaterlooのGordon BellとDan Dodgeは、Thothというリアルタイムオペレーティングシステムのプロジェクトを通じて経験を積んだ
- Thothは高い移植性、同期メッセージパッシングを特徴とし、ハードウェアに依存せず動作した
- BellとDodgeは卒業後、Quantum Software Systems(後のQNX Software Systems)を設立し、プロトタイプのマイクロコンピュータ(6809ベース)で独自OSの開発に着手した
QUNIX — QNXの前身
- 最初のバージョンであるQUNIX 0.1は、マイクロカーネルベースで、CP/MとUNIXの要素を混ぜ合わせた形態を持ち、IBM PC向け初のマイクロカーネル型リアルタイムOSとして開発された
- 従来のUnixとは異なり、/cmds、/config、/sys など独自のディレクトリ構造、
helpコマンドなど固有のコマンド体系を導入した
- ハードディスク対応(QUNIX 0.4で5MB HDD)、フロッピーベースのブートなど、初期には制約があった
QNXへの転換と成長
- AT&Tの商標問題により、1982年にQUNIXからQNXへ改名し、1983年にQNX 1.0を正式リリースした
- カーネル: 約10,000行のCコードで、スケジューリング、メッセージパッシング、優先度処理などマイクロカーネルの特性を備えていた
- サービス(ファイルシステム、ドライバ、ネットワークなど)の大半はメッセージベース通信構造だった
- ネットワーク透過メッセージキューをサポートし、最大250同時タスク、マルチユーザーを許容した
- Cコンパイラ、エディタ、ネットワーク対応を含めて650ドルで販売された(1983年時点)
- QNX 1.2(1984年): パターンマッチング、シェルプログラミング強化、IBM AT対応、値下げなど
教育分野への進出: Burroughs ICON
- オンタリオ州教育省の教育用標準コンピュータプロジェクトに採用され、**ICONコンピュータ(80186、512K RAM、QNX搭載)**が開発された
- ネットワークベースのファイルサーバーブート(ARCNET)、個別ストレージ非搭載、ユーザーはサーバーベースのホームディレクトリを使用した
- ハイパーテキストベースの「lessonware」の試みや、多様な教育ソフトウェア、ネットワーク機能、オーディオ機能、拡張性など、先進的なシステム構築の経験を積んだ
産業および商用市場の拡大
- 1980年代中後半には、IBM PS/2、LAN、GUI、DOSエミュレーション(QDOS、RUNDOS)対応など、市場の要求を反映した
- 1987年のQNX 2では、**IBM AT保護モード、BSDネットワーキング、1TBファイル、32シリアルポート、簡易GUI(House)**などへアップグレードされた
- オフィス拡張、新社屋への移転など、組織も成長した
POSIX導入とPhoton GUI
- 1991年のQNX 4.0: POSIX準拠、カーネルの小型化(7K、605 LOC)、IPC、ネットワーキング、性能向上
- 1994年にQNX Photon microGUIをリリース: マイクロカーネルベースの軽量GUI、ネットワーク透過性、多様なデバイス対応
- Photonは、リソース制約のある環境から高機能GUIまで拡張でき、X Window互換APIも備えていた
- デモ環境全体(ネットワーキング、Webブラウザ、ファイル管理など)が1.44MBフロッピー1枚で動作するほど軽量化されていた
組み込みおよび分散システム、Neutrinoへの進化
- QNX 4.25(1997年)までさまざまな改良が行われ、大企業や産業現場(発電所、医療、交通、宇宙など)でリアルタイムOSの先導役となった
- 1996年のQNX Neutrino 1.0: SMP、強化されたPOSIX、広範なCPU対応、GNU/GCC導入、プロセス/スレッド管理強化
- メモリ管理とプロセス分離がより徹底され、NetBSDのネットワークコード導入によって汎用性も高まった
パートナーシップと市場参入
- 1998年、Amigaとのパートナーシップを推進した(最終的にAmigaはLinuxを採用)
- 1999年のNeutrino 2.0/2.1: UPM(カーネルレベルの保護メカニズム)、PowerPC/MIPS/ARMなどマルチアーキテクチャ対応、開発環境の多様化
- 1999年、Motorolaと協力し、自動車インフォテインメントシステム分野へ進出した(ナビゲーション、オーディオなど)
2000年代: マルチメディア、自動車、モバイルへ
- 2001年のQNX 6.0: マルチメディアストリーミング、Webパッケージマネージャ、多様なCPU/アーキテクチャ向け開発環境の統合
- EclipseベースのMomentics Tool Suite(2002年)、ネットワーククラスタリング、IPv6などで近代化が進んだ
- 2004年にHarman Internationalに買収された後、組み込み・自動車市場へ注力し、QNX CARプラットフォームを導入、主要自動車メーカーに採用された
- 大規模商用化: 2010年までに1,700万台の車両、200以上のモデルに搭載された
BlackBerryによる買収とモバイル/セキュリティの進化
- 2010年、Research in Motion(BlackBerry)がQNXを買収し、BlackBerry PlayBook・BB10(=BBX)向けOSへと拡張した
- QNX Safetyカーネル(ISO/IEC認証、ミッションクリティカルなセキュリティ)により、組み込み認証市場を拡大した
- Photonの改良、ネットワーク、マルチメディア、UI/UXなども継続的に進化した
- BBX(2013年): ジェスチャー中心UI、マルチタスク、多様なアプリフレームワーク、高性能ハードウェアを搭載
- アプリエコシステムの制約、キーボード廃止などにより競争に敗れたが、2022年まで寿命が延長された
結論
- QNXはリアルタイム性、原子的なカーネル設計、ネットワーク透過マルチプロセッシング、拡張性、セキュリティで際立っていた
- Unix互換性を持ち、産業・自動車・組み込み分野で独自の地位を築いた
- オープンソースや大衆向けモバイル環境への参入競争では敗れたが、ミッションクリティカル分野では業界標準級の名声を維持している
1件のコメント
Hacker Newsのコメント
このOSには個人的に面白い思い出がある。小学校の教室にICONコンピュータがあって、友だちとトラックボールをできるだけ速く回そうと競っていたのを覚えている。BlackBerryで働いていたときには、QNX BlackBerryをBluetooth HIDデバイスとして使えるようにする機能を開発した。これによって、トラックパッドと物理キーボードでノートPCをリモート操作でき、プレゼンのときに本当に便利だった。ところが、あるPMがこの機能をPlaybook専用に制限しろと言い出して、事実上使い物にならなくなった。Dan Dodgeが、標準なのだから制約を設けるべきではないと主張していたのをはっきり覚えている。Dan Dodgeを尊敬するようになったし、そのPMとは二度と一緒に仕事をしたくない
ICONコンピュータがこのOSベースだったと知って驚いた。当時の一般的なPCよりはるかに先進的だった。ただし、ICON同士の会話機能を通じて、ほかのシステムやネットワーク全体を簡単に落とせた点は例外だった
QNXは最終的にBlackBerry 10になった。私が使った中で最高のモバイルOSだった。ただ、使っていた人が少なかったのが残念だ
君が手がけたHID機能を使ったことがあるが、本当に気に入っていた
KDE Connectが実質的に同じ機能をさらにうまく実現している。心から素晴らしいと思う
ICONの体験をエミュレータで保存できたらいいのにと思う。今ならブラウザでもICONネットワーク全体をエミュレートできそうだ
QNX Photonのミニマルな美学が本当に好きだった。Photonの雰囲気をできるだけ再現したくて、複雑なFVWM設定を維持していた。参考までに、2004年のGentooデスクトップのスクリーンショットはこちら デスクトップのスクリーンショット
君の設定を自分でも取り入れて、15年以上維持してきた
今見てもかっこいい。dotfilesをまだ持っているのか気になる
自分のWindowMakerテーマよりずっと上だ。君のFVWMテーマは本当に素晴らしい
スクリーンショットにあるのってWinampのクローンじゃない?
QNXという発想が本当に気に入っていて、大いに期待していた。当時うちのチームは、光学式フードプロセッサをDSPから汎用ハードウェア(FireWire, 1394)へ移行しているところだった。QNXのプロセス分離は見事だったが、メッセージベースのデータ転送のオーバーヘッドにはあまり満足できなかった。結局、Linuxの1394ドライバでisochronous mode/dmaを2千ドル払ってサポートしてもらい、RT extensionsと組み合わせて使った。このとき得た教訓が「醜さ保存の法則」だ。ソフトウェアシステムには、どこかに決して洗練されない“醜さ”が残っていて、一方を改善するとその“醜さ”が別の場所へ移るということだ
「醜さ保存の法則」は、本質的に「ウォーターベッド原理」ととても似ていると思う。ある程度複雑なシステムでは、一か所の問題を押し込めると、必ず別の場所に膨らみが出る。ウォーターベッド原理についてもっと知りたいならこちらを参照できる
QNXでメッセージ転送を高速化するアイデアがある。ページング機構を使ってメッセージを送る方式で、データをコピーせずにページテーブルだけを更新する。もちろん、macro kernelと比べればdouble TSS loadのオーバーヘッドは残るが、それでも速い。それでも、優雅さには代償が伴う。レイテンシ、信頼性、安定性、正確性まで考えると、単純な処理速度よりこうした要素のほうがはるかに重い選択基準になる
今日ではDSMP(Direct System Memory Protection)が完全にサポートされ、システム性能も大きく向上しているので、メッセージ転送のオーバーヘッドはそれほど大きな問題ではないと思う。むしろ他の利点のほうが大きい
「optical food processor」が比喩なのか、本当に画像を使って食べ物を切る装置なのか気になる
このブログにあるICONの写真はまさに私のICONで、私のブログから持っていかれたものだ(出典表記には感謝している)。QNXでのICONコンピュータに関する自分の投稿を共有する。最初の記事にはQNXデモ動画のYouTubeリンクもある
ICONの記事
LEXICONの記事
2002年ごろ、ケーブルモデムにtelnetで接続したらQNXが動いていて、ものすごく不思議に感じた
1996年ごろ、フロッピー1枚にRTOS GUIとネットワークスタックまで入ったQNXを手にして、その小さな容量に感嘆した。Slackwareをインストールするだけでも何枚ものディスクが必要だったのに、QNXは信じがたかった
私も覚えている。あの小さなデモにはWebブラウザまで入っていた。実際に体験したいならここで可能だ
こういうデモ版そのものが、実際には機能を見せつけるためのものだった。当時、QNXはライブCD市場で誰もが絶賛するほど印象的だった。ちなみに、フロッピーから動くX11とWebブラウザを搭載したLinuxもあって、それも本当にすごかった HNコメントへのリンク
2000年ごろ、Linuxデスクトップを触っていたさなかにQNXデモを入手して、驚いたのを覚えている
QNX 4で大学時代にロボットシステムを作った。ネットワーク接続された486/Pentium CPUカードを使って、完全なハードリアルタイムのロボット構成を実現した。QNXの基本システムコール(send/receive/reply)が、ヘッダーファイル内でほぼ3行のアセンブリとしてインライン実装されていたのが印象的だった。この経験をもとに、ロボティクス分野でvxWorks、SunOS、Linuxなどに同様の機能を自作しながら多くを学んだ
ロボットシステムの論文
Raspberry PiでQNXを試したい人向けに、参考になる記事を共有する QNX Raspberry Piインストールガイド
こちらにQNX 8.0の無料イメージもある。そのままPi 4に書き込んで使え、Pi 400やCM4向けにも調整できる
無料のQNX 8.0イメージと案内
仮想マシンで使いたいなら、旧バージョンのイメージをarchive.orgで入手できる
旧バージョンのQNXイメージ
QNXでオーディオサーバーを作り、MP3のエンコードと再生機能まで移植した。本社を直接訪れたとき、Dan Dodgeがチームメンバーに全面的に我々を支援するよう指示してくれた。そのおかげでスタートアップを安定して立ち上げることができ、6年後にLinuxへ移行するまで大いに助けられた
QuantumではUnixを尊重すると言いながらも、QNXを1980年代の設計で1990年代のOSになると宣伝していた。当時、GNU、インターネット、Microsoft Windows、サードパーティ開発、Windowsベースのアプリ参入障壁、Web、シェアウェア、BBS、VAR、自由ソフトウェア運動などは考慮に入っていなかった。OS市場が勝者総取りの構造だという点も、数百ドルという価格設定も致命的だった。あの時代には避けがたかったのかもしれないが、問題意識自体は確かにあった。もちろんGUIの重要性に気づくのも遅く、Photon GUIが登場したのはQNX 4.1(1994年)になってからだった