世界を動かす技術を、日本語で。

QNXオペレーティングシステム

概要

Gordon BellとDan DodgeはUniversity of WaterlooでThoth OSを学び、QNXの開発に繋げた。 QNXは初期からリアルタイム性・高い移植性・マイクロカーネル設計を特徴とした。 QUNIXからQNXへの改名後、IBM PC向けに初のマイクロカーネルOSとしてリリース。 教育現場向けのICONプロジェクトに採用され、先進的なネットワーク機能を実装。 QNXはOS/2やUNIXとの競合を意識し、DOS互換機能なども提供した。

Gordon BellとDan Dodgeの出発点

  • Gordon BellDan Dodge は1979年、 University of Waterloo で修士課程修了
  • Thoth リアルタイムOSの開発・研究経験
    • B言語 での実装、 Eh言語、最終的に Zed言語 で書き直し
    • 高水準言語による移植性と、プロセス間通信重視の設計
  • RTOSコースの最終課題として独自のリアルタイムシステム構築

Quantum Software SystemsとQUNIXの誕生

  • 1980年3月30日、Kanataで Quantum Software Systems 設立
  • Motorola 6809 搭載のマイクロコンピュータでOS開発開始
  • IBM PC 登場後、ターゲットをPCへシフト
  • 最初のOS「 QUNIX 0.1」は8bitマイクロコンピュータ向け
    • UNIX風だが、 CP/M 的要素も多い
    • ディレクトリ構成:/cmds, /config, /sys, /user, /drivers, /util
    • manコマンド 非搭載、代わりに help 使用
    • プロセス管理コマンドは task (親子関係をfather/son/brotherで表現)
  • QUNIX 0.4.33(1982年) でIBM PC用初のハードディスク対応OSに進化
    • ただしHDDからの直接起動は不可、フロッピーからのブートが必要

QUNIXからQNXへの進化

  • QUNIXの名称が AT&T UNIX と類似しすぎたため、 1982年末QNX へ改名
  • 初期の QNXカーネル は約10,000行のCで実装
    • タスクスケジューリング、メッセージパッシング、優先度管理を担当
    • その他の機能は全てサービスとして実装し、メッセージパッシングで連携
    • ネットワーク透過型メッセージキュー により、異なる物理マシン間も容易に通信
  • 最大 250タスク/4〜16ユーザー 同時利用可能
  • 8087数値演算コプロセッサ を活用、最小96KB RAM必要
  • QNX 1.0(1983年3月) はIBM PC上でDEC VAX 11/780の約30〜50%の速度を記録
  • Cやx86アセンブリのみ対応だったが、 BASIC/Fortran/Pascal のコンパイラも開発
  • GUI対応 も計画
  • 価格: $650(1983年)、Cコンパイラ・エディタ・MS-DOSディスク読込・ネットワーク機能含む
  • QNX 1.20(1984年11月) でファイル名パターンマッチ、シェル強化、ユーザースイッチ、IBM AT対応など追加

教育分野でのQNX:ICONプロジェクト

  • Ontario教育省 が1981年に学校へのコンピュータ導入を決定
  • 多機種対応コスト回避のため、 統一機種 を選定
  • CEMCORP (Canadian Educational Microprocessor Corporation)が開発・供給
    • ICON :Intel 80186(7.16MHz)、512KB RAM、ローカルストレージ非搭載
    • QNX をネットワーク経由でブート、最大32台がLAN接続
    • ファイルサーバー経由でファイル保存・管理
    • 価格:1台$2500(学校負担$495、残りは政府補助)
  • 当初は ハイパーテキスト型教材システム を計画したが、教育省の方針でCLI+エディタに変更
  • プログラミング、マルチタスク、ネットワーク、教育ソフトに優れる
  • 生徒によるネットワーク経由の“ハック”も発生

QNXの競争と発展

  • OS/2 登場(1987年)により、QNXは競争意識を強化
  • QDOS IIRUNDOS によるDOSアプリ互換機能を追加
  • IBM PS/2への移植も実現
  • QNX v2以降、広告でもUNIXやOS/2との優位性を強調

まとめ

  • QNX はリアルタイム性、移植性、マイクロカーネル設計、ネットワーク機能、教育現場での実績を持つ
  • 競合OSとの違いを明確化しつつ、産業用・教育用の両面で発展
  • 小規模企業ながら、先進的なOS設計思想を実現

Hackerたちの意見

実験してみたい人や余ってるrPiがある人向けだね: https://carleton.ca/rcs/qnx/installing-qnx-on-raspberry-pi-4...

それとも、VMで遊びたいなら古いバージョンもあるよ: https://archive.org/details/qnxnc621_202306

1996年頃だったかな?フロッピーディスクでこれを手に入れたのを覚えてる。ネットワークスタック付きのフルRTOS GUIで、こんな小さなサイズでどうやって実現してるのか不思議だった。参考までに、Slackwareの基本インストール用にフロッピーディスクのセットを山ほど作らなきゃいけなかったのを思い出すよ。Windows 95なんて言わずもがな :)

2000年頃に手に入れた記憶がある。Linuxデスクトップをちょっといじってみた後で、すごく感動したんだ。

それ覚えてる。ウェブブラウザも入ってたよね。ここにコピーがあるよ: https://winworldpc.com/product/qnx/144mb-demo

それは見せるためのものでしたね。OSの能力を示しつつ、人々を感心させることを意図していたでしょう。2000年代初頭にはLinuxがライブCDシーンを支配するようになったけど、今でもこのデモは特別にすごいって言われてるよ。実際、フロッピーから動くX11と機能するブラウザを搭載したLinuxもあったんだ。それは本当にすごいことだよね。 https://news.ycombinator.com/item?id=28515025

QNXは本当にクールなOSだよ(速いし、エレガントだし、めちゃくちゃ信頼性高い)。QNXのダン・ドッジが今までで一番楽しめたカンファレンスの基調講演をしてくれた。基本的には、30年以上のOS開発の面白い話だった。当時のQNXの使用が減っているのを見るのは悲しいね。

このOSには面白い思い出があるよ。まず、小学校の時にICONコンピュータがあって、みんなでトラックボールをできるだけ早く回そうとしてた。壊したことがあったかは定かじゃないけど。次は、BlackBerryで働いてた時のこと。QNXのBlackBerryをBluetooth HIDデバイスとして使える機能を作ってたんだ。どんなデバイスにも接続できて、トラックパッドと物理キーボードでコンピュータをリモート操作できた。素晴らしかったよ。ノートパソコンをプロジェクターに繋いで、BlackBerryからスライドを操作できたんだ。でも、判断力に疑問のあるプロダクトマネージャーが「ビジネス目的」でBlackberry Playbook専用にロックするように言ってきて、実質的に使えなくなっちゃった(Playbookは全部廃棄物だし)。ダン・ドッジが「標準なんだからロックするべきじゃない」と主張した会議を今でもはっきり覚えてる。彼にはリスペクトしてるし、そのPMとはもう一緒に働きたくないな。

ICONの体験をエミュレーターで保存できたらいいな。ブラウザでもネットワークをエミュレートするのに十分な計算能力があると思う。

KDE Connectは、正直言ってそれに似てるけど、いくつかの点でより良い。ほんとに素晴らしいよ。

QNXはBlackBerry 10になった——今でも最高のモバイルOSだ。残念ながら、使ったのは私たちの中の十数人だけだったけど。

いい記事だね、面白い読み物だよ。一般向けに「openQNX」として公開されたNeutrino 6.4バージョンは、今でも例えばここからダウンロードできるよ: https://github.com/vocho/openqnx。こちらはそのソースのAI生成ドキュメントだよ: https://deepwiki.com/vocho/openqnx

Neutrino 6.4バージョンは「openQNX」として一般に公開されました。 記憶によれば、ソースはダウンロードしたい人に自由に提供されていたけど、オープンソースライセンスではなく、個人の譲渡不可の独自ライセンスの下で提供されていたんだ。だから、法的には当時(このプログラムが終了する前に)ソースをダウンロードした人は、それを保持して永遠に使うことができるけど(使用制限があったと思うけど、詳細は忘れた)、他の人と共有するライセンスは持っていない。これは、GitHubにある漏洩したMicrosoft Windowsのソースコードリポジトリとある程度比較できるね。技術的には違法だけど、著作権者はそれを止めようとしないみたい(特にMicrosoftにとって皮肉なのは、GitHubの所有者として、簡単に終わらせられるのに、気にしないってこと)。

カナダのオンタリオで育った頃、学校でICONを使ってたんだけど、めっちゃクールだったよ。コンピュータ室でWindows PCに置き換わった時は悲しかったな。教育省によってほとんどのコンピュータが壊されちゃったし、LEXICONサーバーがないと、ほとんど役に立たないんだよね。ちょっと遊びで、486SXに8MのRAMを積んで公式のQNX4ポートでDOOMのシェアウェアデモを動かしてみたよ。 https://brynet.ca/video-qnxdoom.html 後になって趣味でQNX6を再び使い始めたけど…自己ホスト型のQNXが終わってしまって、6.5以降はブータブルな.ISOがなくなったんだ。それからホビイストライセンスも廃止されて、PhotonデスクトップGUIも消えちゃった。Windows/LinuxホストのIDEに置き換えられて、ソフトウェアの移植が難しくなったし、pkgsrcもメンテされなくなった。会社として全然コミットしてないし、MIT/BSDの下でオープンソースにしない限り、再び使う気にはならないな…また rug pull されるようなソース可用の努力じゃダメだし。 https://www.osnews.com/story/23565/qnx6-is-closed-source-onc...

QNXのアイデアが大好きだった。すごくワクワクしたよ。光学フードプロセッサーを専用DSPから汎用ハードウェアに移行して、1394(FireWire)を使ってたんだ。プロセスの隔離は素晴らしかったけど、メッセージを通じてデータを移動させるオーバーヘッドはあまり良くなかったね。結局、誰かに2,000ドル払ってLinuxの1394ドライバーにアイソクロナスモード/DMAを追加してもらって、RT拡張を使うことにしたんだ。それは「醜さの保存の法則」と呼ぶことになった大事な教訓だった。多くのソフトウェアの問題には、どうしてもエレガントに感じられない部分があるんだよね。システムの一部をエレガントにしても、他の部分で不格好さが浮き彫りになっちゃうことが多い。

「醜さの保存の法則」と呼ぶことになった。多くのソフトウェアの問題には、どうしてもエレガントに感じられない部分がある。 これはウォーターベッド原理の一例かもしれないね。十分に複雑なシステムでは、ある領域で望ましくない特性を抑制したりリファクタリングしたりすると、必然的に他の場所で別の望ましくないことが現れる。システム全体が本質的な機能を果たしながら持つことができる最低限の複雑さや醜さがあって、それはどこかで漏れ出さなければならないんだ。 https://en.wikipedia.org/wiki/Waterbed_theory

QNXでメッセージパッシングの速度を改善するすごいアイデアがあるんだ:ページングメカニズムを使ってメッセージを送るんだ。つまり、データのコピーは全くなくて、ページテーブルの更新だけで済むってこと。ダブルTSSロードのオーバーヘッドはあるけど(マクロカーネルでは1つのTSSロード)、それでもかなり速いよ。でも、エレガンスには代償があるのは確かだね。レイテンシや長期的な信頼性・安定性・正確性などを考慮に入れると、選択がしやすくなることもある。それらは単なるスループットよりもずっと重くなることがあるから。

「光学フードプロセッサー」って比喩なの?それとも実際に画像フィードバックに基づいて食材を切るデバイスなの?

QNXのPhotonの美的センスが本当に好きだった。長い間、これに似せためちゃくちゃ複雑なFVWMの設定を維持してたよ。これは2004年頃のGentooデスクトップのスクリーンショットだよ! https://lock.cmpxchg8b.com/img/fvwm_desktop.jpg

今でも素晴らしいね!まだdotfilesはどこかにある?

誤解しないでほしい。私たちQuantumはUnixを非常に尊敬している。Unixは、オペレーティングシステムを60年代から70年代に移行させる大きな力だった。しかし、QNXは80年代に設計され、90年代の推進力になるだろう。1982年以降、2万台以上のシステムが販売された。彼らが予想していなかったことには、GNU、インターネット、Microsoft Windows、サードパーティの開発、Windowsアプリケーションの参入障壁、ワールドワイドウェブ、シェアウェア、BBS、VAR、そしてフリーソフトウェア運動が含まれていた。彼らはオペレーティングシステムがウィナー・テイク・オールのゲームであることを理解していなかったので、OSの価格を数百ドルに設定するのは負け戦略だった。しかし、それは1986年のことだから、誰も彼らを責められないよね?彼らの1987年の広告はVARにアプローチしようとしている。でも、彼らは確かにUnixを意識していたし、uucpの存在も知っていたはずだ。ただ、その重要性を予測していなかっただけ。再度言うけど、誰が予測できた?彼らはまた、Macintoshや「Jackintosh」のAtari ST、C64のGEOSの人気にもかかわらず、1987年のバージョン2.0までGUIの重要性を理解していなかったようだ。記事によると、みんなが覚えている「Photon」GUIはQNX 4.1の1994年までなかったらしい。

彼らのOSは、デスクトップやサーバーで使えるPOSIX OSとしてかなりユニークで、非常に安定していて、リアルタイム制御もできた。デスクトップの観点から見ると、リアルタイムの要素はシステムを使うのが楽しいことを意味していて、すべてが超スナッピーだった。彼らはメインストリームにはなれなかったけど、1980年代から2000年代には十分なニッチがあったから、会社は存続できた。1999年にQNXが作った1.44MBのデモは、フルGUI、ネットワーキングスタック、ウェブブラウザ、ファイルブラウザ、ユーティリティ、デモプログラムなどが詰まっていて、すごく印象的だった。あんな小さなサイズにあれだけの機能を詰め込んだものは見たことがない。もちろん、リアルタイムLinuxがQNXに対抗できるほど良くなったことや、QNXが2014年にQNX 6.6で自己ホスト開発をサポートしなくなったことで、ほとんどの利点は失われてしまった。ビジネスの観点から見ると、すべての支払い顧客がいる自動車や他の組み込み市場に焦点を当てるのは理にかなっているけど、技術好きの観点から見るとちょっと悲しい。ライセンスコストや高価格帯のリアルタイムLinux、低価格帯のZephyr/FreeRTOSとの競争を考えると、今の新しいプロジェクトでQNXを選ぶ理由がわからない。もしこのコメントを読んでいる人の中で、最近新しいプロジェクトでQNXを選んだ人がいたら、その視点を聞かせてほしいな。

このブログ記事のICONの写真は、私のICONで、私のブログから取ったもの(クレジット付きで、いい感じだね)。もし、QNXを動かしているBurroughs ICONコンピュータについての私の2つの投稿を読みたい人がいたら、こちらがリンクだよ(最初の投稿には私のQNXデモのYouTubeリンクもあるよ): https://jasoneckert.github.io/myblog/icon-computer/ https://jasoneckert.github.io/myblog/lexicon-computer/