QNX

Article on other languages:

del.icio.us del.icio.us
Digg Digg
Furl Furl
Reddit Reddit
Rojo Rojo
Add to OnlyWire
QNX
公式サイト: www.qnx.com
開発者: QNX Software Systems
OSの系統: UNIX系、リアルタイム
ソースコード: クローズドソース
最新リリース: 6.3.2 / 2006年9月28日
カーネル種別: マイクロカーネル
ライセンス: プロプライエタリ
開発状況: 開発進行中

QNX(キューエヌエックス、またはキューニックスと発音)は商用のPOSIX準拠UNIXリアルタイムオペレーティングシステム(OS)であり、主に組み込みシステム向けに販売されている。

目次

詳細

マイクロカーネルOSとして、QNXではOSのほとんどが「サーバ」と呼ばれる小さなタスクとして動作する。この点は従来からのモノリシックなカーネルを採用したOSと大きく異なる。モノリシックカーネルOSでは機能の大部分はひとつの大きなプログラムに含まれ、例えば不要な機能をOFFにしたい時などにはOS自体を変更(再リンクなど)する必要がある。それに対しQNXではユーザや開発者はサーバを停止させることで簡単に不要な機能をOFFにすることができる。

QNXのシステムは非常に小さく、フロッピーディスク1枚に納まってしまう。そして非常に高速であり機能的にも完備されている。

2001年にリリースされた QNX Neutrino は現在組み込み市場で使われているほとんどのCPUで動作する。例えば、x86ファミリ、MIPSPowerPCSH-4ARMStrongARMxScaleなどである。

歴史

1980年、ウォータールー大学の学生だった Gordon Bell と Dan Dodge は一般情報工学課程でオペレーティングシステム設計を学び、その中で基本的なリアルタイムカーネルを作成した。彼らは、このようなシステムに需要があると考え、同年 Quantum Software Systems社を設立した。1982年、最初のQNX8088マイクロプロセッサ向けにリリースした。

最初にQNXが広く使われたのは組み込みシステムではなく、オンタリオ州の教育システムに採用された Unisys ICON のOSとしてである。当時としては、44KバイトのOSは組み込みシステムには大きすぎたため、もっと大きなシステムで主に使われたのである。このシステムは信頼性が高いと評判が良く、いくつかの工業アプリケーションに採用されるようになっていった。

1990年代中盤、Quantum社は市場がPOSIXモデルに素早く移行しつつあるのを見て、カーネルの互換性を高めるための書き換えを決定した。そしてリリースされたのが QNX 4 である。このバージョンでは、組み込み可能なGUIである Photon microGUI が使用可能であり、同時に QNX 用のX Window Systemも用意された。QNX 4 ではUNIX用ソフトウェアの移植が容易となり、従来バージョンに存在していた独自のソフトウェアは削除された。

1990年代末までに彼らはマイクロカーネルを維持しつつLinuxに可能な限り近づけることを決めた。これによって2001年に QNX Neutrino がリリースされた。これに基本的に同梱されたのが Momentics というEclipse IDE をベースとした統合開発環境 (IDE)、様々なGNUツール、Voyager ウェブブラウザ/サーバなどのインターネットソフトウェアである。また会社は1990年代初期に QNX Software Systems と改称してハードディスク企業と混同されないようにした。

2004年末、同社は Harman International社に売却されることとなった。これに関連して QNX のフリー版が無くなった。

Cisco の IOS-XR (IOSの新バージョン)は QNXベースである。

技術

QNX カーネルには、CPUスケジューリングプロセス間通信割り込み処理、タイマーだけが含まれる。その他はユーザープロセスとしてされ、例えばプロセス生成、メモリ管理を管轄する proc という特殊なプロセスはマイクロカーネルと協調して動作する。これを可能にしているのは、サブルーチン呼び出し型のプロセス間通信と、ブートローダカーネルだけでなく複数のユーザープログラムや共有ライブラリを含めたイメージをロードできる機能があるからである。

QNX のプロセス間通信は、プロセスからプロセスへメッセージを送り、応答を待つ。メッセージはカーネルが送信側のアドレス空間からコピーして、受信側プロセスのアドレス空間にコピーする。受信プロセスがメッセージを待っていた場合、同時に受信側プロセスにCPUの制御が渡され、この際にスケジューラを経由しない。従って、メッセージを送信して返事を待つまで、全く無駄な点がない。このようなメッセージパッシングとCPUスケジューリングの密接な結合が鍵となって、QNX のメッセージパッシングが強力となっているのである。UNIXLinuxの多くのプロセス間通信は、このような強力な機能ではない。この点の設計がまずいことが、多くのマイクロカーネルの性能が期待はずれとなっている原因である。

マイクロカーネルアーキテクチャであるため、QNX は分散OSでもある。Dan Dodge と Peter van der Veen の特許 は QNX の分散処理機能に関するものである。

全ての入出力、ファイルシステム操作、ネットワーク操作は、全て上記の手段を使ってデータのやり取りを行っている。性能強化のため、QNX は途中のバージョンから一部プロセスの統合を行い、プロトコルスタックの統合や他の機能ブロックの統合をしている。デバイスドライバはカーネル内には存在しない。

メッセージ処理はスレッドの優先度に従って優先順位付けされる。入出力もメッセージ処理を使っているため、優先度の高いスレッドが入出力の結果を受け取るのも優先される傾向がある(リアルタイムシステムなのでそれが基本である)。

ブートローダも重要なシステムの一部である。ユーザープログラムをブートイメージに含めることができ、デバイスドライバ群や各種ライブラリをカーネル以外にブートイメージに含めることが多い。また、ブートイメージをROMに格納することでディスクのない組み込みシステムでも利用可能となっている。

競合OS

組み込み市場での主な競合OSは、LynxOS, VxWorks, Linux, THEOS, Windows CE, OS-9 である。

参考文献

外部リンク

This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.


Giant Panda

Mercedes Car
James Bond Guide
This site monitored by SitePinger.net