| QNX | |
|---|---|
| 開発者 | BlackBerry(旧QNXソフトウェアシステム) |
| OSファミリー | Unixライク |
| 作業状態 | 現在 |
| ソースモデル | クローズドソース |
| 初回リリース | 1982 (1982年) |
| 最新リリース | 8.0 / 2023年12月 (2023年12月) |
| マーケティングターゲット | 組み込みシステム |
| パッケージマネージャー | NetBSDプロジェクトのPkgsrcフレームワークを使用できる |
| サポートされているプラットフォーム | 現在: x86-64、ARM32、ARM64旧: MIPS、PowerPC、SH-4、StrongARM、XScale |
| カーネルタイプ | RTOS(マイクロカーネル) |
| ユーザーランド | POSIX |
| ライセンス | 独自の |
| 公式サイト | qnx |
QNX ( / ˌ k juː ˌ ɛ n ˈ ɛ k s /または/ ˈ k juː n ɪ k s / ) は、主に組み込みシステム市場を対象とした商用のUnix ライクなリアルタイム オペレーティング システムです。
この製品は、もともと 1980 年代初頭にカナダの企業 Quantum Software Systems (1980 年 3 月 30 日に設立され、後に QNX Software Systems に改名) によって開発されました。
2022年現在、自動車、[ 1 ]医療機器、プログラマブルロジックコントローラ、自動化製造、電車など、 さまざまな機器に使用されています。
1980年、ウォータールー大学の学生だったゴードン・ベルとダン・ドッジは、リアルタイムオペレーティングシステムのコースを受講し、基本的なリアルタイムマイクロカーネルとユーザープログラムを構築しました。二人はそのようなシステムの商業的ニーズがあると確信し、オンタリオ州カナタのハイテク計画都市に移り、同年にクォンタム・ソフトウェア・システムズを設立しました。1982年、Intel 8088 CPU向けにQUNIXの最初のバージョンがリリースされました。1984年、クォンタム・ソフトウェア・システムズは商標権侵害の疑いを避けるため、QUNIXをQNX(Quantum's Network eXecutive)に改名しました。
QNXリアルタイムOS(RTOS)が初めて広く利用されたのは、組み込み機器以外の分野において、オンタリオ教育システム独自のコンピュータ設計であるUnisys ICONのOSとして採用された時でした。長年にわたり、QNXは主に大規模なプロジェクトで使用されていました。これは、44kカーネルが当時のワンチップコンピュータに収まりきらないほど大きかったためです。QNXシステムは信頼性の高さで高い評価を得、多くの産業用途の機械を動かすのに使われるようになりました。
1980年代後半、クォンタム社は市場が急速にポータブル・オペレーティング・システム・インターフェース(POSIX)モデルへと移行していることを認識し、カーネルを低レベルでより互換性の高いものに書き換えることを決定しました。その結果生まれたのがQNX 4です。この頃、インターンとして働いていたパトリック・ヘイデンは、当時正社員だったロビン・バーゲナーと共に、新しいウィンドウシステムを開発しました。この特許取得済みの[ 2 ]コンセプトは、QNX Photon microGUIと呼ばれる組み込み型グラフィカル・ユーザー・インターフェース(GUI)へと発展しました。QNXはX Window Systemのバージョンも提供していました。
QNXは1990年代後半に、OSの性能と比較的小型なサイズを実証するために、POSIX準拠のQNX 4 OS、完全なグラフィカルユーザーインターフェイス、グラフィカルテキストエディタ、TCP/IPネットワーク、ウェブブラウザ、ウェブサーバを含むデモイメージをリリースした。これらはすべて386 PC用の起動可能な1.44 MBのフロッピーディスクに収まるものだった。[ 3 ] [ 4 ]
1990年代末、当時QNXソフトウェアシステムズと名乗っていた同社は、対称型マルチプロセッシング(SMP)対応、そしてマイクロカーネルアーキテクチャを維持しながら、現行のPOSIXアプリケーションプログラミングインターフェース(API)に加え、将来的に導入される可能性のあるあらゆる新しいPOSIX APIをサポートするよう、QNXの新バージョンの開発に着手しました。その結果、2001年にリリースされたQNX Neutrinoが誕生しました。
QNXソフトウェアシステムズは、Neutrinoカーネルの開発とともに、Eclipse(統合開発環境)コンソーシアムの創設メンバーとなりました。同社は2002年に、Eclipseワークベンチにパッケージ化されたEclipseプラグインスイート「QNX Momentics Tool Suite」をリリースしました。
2004年、同社はハーマン・インターナショナル・インダストリーズへの売却を発表しました。この買収以前から、QNXソフトウェアは自動車業界のテレマティクスシステムに広く利用されていました。ハーマンによる買収以降、QNXソフトウェアは200を超える様々な自動車メーカー・モデル、テレマティクスシステム、インフォテインメントおよびナビゲーションユニットに採用されています。QNX CARアプリケーションプラットフォームは、2011年半ば時点で2,000万台以上の車両に搭載されています。[ 5 ]その後、同社はQNX Aviageマルチメディアスイート、QNX Aviageアコースティックプロセッシングスイート、QNX HMIスイートなど、複数のミドルウェア製品をリリースしています。
シスコシステムズのIOS-XR(超高可用性IOS、2004年導入)[ 6 ] [ 7 ]とIOSソフトウェアモジュラリティ(2006年導入)[ 8 ]のマイクロカーネルはQNXをベースとしていました。IOSソフトウェアモジュラリティは普及せず、Catalyst 6500向けの小規模な実装に限定されましたが、IOS XRはリリース6.0xからLinuxに移行しました 。
2007年9月、QNXソフトウェアシステムズはソースコードの一部を公開すると発表した。[ 9 ]
2010年4月9日、リサーチ・イン・モーション(後にブラックベリー・リミテッドに改名)は、ハーマン・インターナショナル・インダストリーズからQNXソフトウェアシステムズを買収すると発表した。[ 10 ]同日、QNXのソースコードへのアクセスは一般および愛好家から制限された。[ 11 ]
2010年9月、同社はタブレットコンピュータ「BlackBerry PlayBook」と、そのタブレット上で動作するQNXベースの新しいオペレーティングシステム「BlackBerry Tablet OS」を発表した。 [ 12 ]
2011年10月18日、リサーチ・イン・モーションは「BBX」[ 13 ]を発表しましたが、これは後に2011年12月にBlackBerry 10に改名されました。 [ 14 ] BlackBerry 10デバイスは、タッチデバイス用のBlackBerry PlayBook QNXベースのオペレーティングシステムをベースに構築されていますが、 QtベースのCascades Native User-Interfaceフレームワークを使用してスマートフォン用のユーザーインターフェイスを採用しています。
ジュネーブモーターショーで、Appleは対応車両のヘッドユニットにiOS風のユーザーインターフェースを提供するCarPlayをデモしました。自動車メーカーによる設定後、QNXはディスプレイと一部の機能をApple CarPlayデバイスに渡すようにプログラムできます。[ 15 ] [ 16 ]
2014年12月11日、フォード・モーター・カンパニーはMicrosoft AutoをQNXに置き換えると発表した。 [ 1 ]
2017年1月、QNXはIntelおよびARMの32ビットおよび64ビットプラットフォームとC++14をサポートするSDP 7.0のリリースを発表しました。これは2017年3月にリリースされました。[ 17 ]
2023年12月、QNXは、最新のIntelおよびARM [v8およびv9] 64ビットプラットフォーム、GCC12ベースのツールチェーン、およびVisual Studio Code用のQNXツールキットをサポートする次世代マイクロカーネルを搭載したQNX SDP 8.0をリリースしました。[ 18 ]
マイクロカーネルベースのOSであるQNXは、オペレーティングシステムカーネルの大部分を、リソースマネージャと呼ばれる多数の小さなタスクの形で実行するという考え方に基づいています。これは、オペレーティングシステムカーネルが多数のパーツから構成され、それぞれが特別な機能を持つ1つの巨大なプログラムである従来のモノリシックカーネルとは異なります。QNXの場合、マイクロカーネルを使用することで、ユーザー(開発者)はOSを変更することなく、不要な機能を無効にすることができます。つまり、不要なサービスは単に実行されなくなります。
QNXカーネル(procntoQNX Neutrino('nto')プロセス('proc')自体のバイナリ実行可能プログラムの名前でもある)には、CPUスケジューリング、プロセス間通信、割り込みリダイレクト、およびタイマーのみが含まれています。その他すべてはユーザープロセスとして実行されます。これには、マイクロカーネルと連携してprocプロセス作成とメモリ管理を実行する特別なプロセスが含まれます。これは、サブルーチン呼び出しタイプのプロセス間通信と、カーネルと任意のユーザープログラムと共有ライブラリのセットを含むイメージをロードできるブートローダーという2つの主要なメカニズムによって可能になっています。カーネルにはデバイスドライバーはありません。ネットワークスタックはNetBSDコードに基づいています。[ 19 ] QNXは、独自のネイティブデバイスドライバーのサポートに加えて、レガシーのio-netマネージャーサーバーとNetBSDから移植されたネットワークドライバーをサポートしています。[ 20 ]
QNXプロセス間通信は、あるプロセスから別のプロセスへメッセージを送信し、応答を待つという動作で構成されます。これは と呼ばれる単一の操作ですMsgSend。メッセージはカーネルによって、送信プロセスのアドレス空間から受信プロセスのアドレス空間へコピーされます。受信プロセスがメッセージを待機している場合、CPU制御はCPUスケジューラを経由することなく同時に移行されます。したがって、別のプロセスにメッセージを送信し、応答を待つことで、CPUの「順番を失う」ことはありません。メッセージパッシングとCPUスケジューリングのこの緊密な統合は、QNXメッセージパッシングを広く利用できるようにしている重要なメカニズムの一つです。ほとんどのUnixおよびLinuxのプロセス間通信メカニズムにはこの緊密な統合が欠けていますが、Linux用のQNX型メッセージングのユーザー空間実装は存在します。この微妙な問題の不適切な処理が、 Machの初期バージョンなどの他のマイクロカーネルシステムのパフォーマンスが期待外れになる主な原因です。受信プロセスは、同じ物理マシン上にある必要はありません。
すべてのI/O操作、ファイルシステム操作、およびネットワーク操作はこのメカニズムを介して実行されるように設計されており、転送されたデータはメッセージパッシング中にコピーされていました。QNXの後のバージョンでは、パフォーマンス上の理由から、個別のプロセスの数を減らし、ネットワークスタックとその他の機能ブロックを単一のアプリケーションに統合しました。
メッセージ処理はスレッド優先度によって優先順位が付けられます。I/O要求はメッセージパッシングによって実行されるため、優先度の高いスレッドは優先度の低いスレッドよりも先にI/Oサービスを受け取ります。これは、ハードリアルタイムシステム において不可欠な機能です。
ブートローダーは、最小限のマイクロカーネルシステムのもう一つの重要なコンポーネントです。ユーザープログラムをブートイメージに組み込むことができるため、起動に必要なデバイスドライバとサポートライブラリのセットはカーネル内に存在する必要はなく、実際にカーネル内には存在しません。プログラムのロードなどの機能もカーネル内ではなく、ブートイメージの一部として読み込まれる共有ユーザー空間ライブラリ内にあります。ブートイメージ全体をROMに格納することも可能で、これはディスクレス組み込みシステムで使用されます。
Neutrinoは、対称型マルチプロセッシングとプロセッサアフィニティ(QNX用語では境界型マルチプロセッシング(BMP)と呼ばれる)をサポートしています。BMPは、キャッシュヒット率を向上させ、SMP非対応のアプリケーションをマルチプロセッサコンピュータに移行しやすくするために使用されます。
Neutrinoは、厳密な優先度プリエンプティブスケジューリングとアダプティブパーティションスケジューリング(APS)をサポートしています。APSは、他のスレッドの優先度が高くても、選択されたスレッドグループに最低限のCPU使用率を保証します。アダプティブパーティションスケジューラは、システムの負荷が低い場合でも、厳密な優先度プリエンプティブスケジューリングを維持します。また、システムの負荷が高い場合でも、 選択されたクリティカルスレッドセットを厳密にリアルタイムで実行するように設定することもできます。
QNXオペレーティングシステムには、「Voyager」と呼ばれるウェブブラウザも含まれていました。[ 21 ]
QNXはマイクロカーネルアーキテクチャを採用しているため、分散オペレーティングシステムでもあります。Dan DodgeとPeter van der Veenは、米国特許6,697,876を保有しています。この特許は、商用では透過的分散処理として知られるQNXオペレーティングシステムの分散処理機能に基づく分散カーネルオペレーティングシステムです。これにより、別々のデバイス上のQNXカーネルは、ローカルサービスへのアクセスに使用されるのと実質的に同じ通信メカニズムを使用して、互いのシステムサービスにアクセスできるようになります。
| バージョン | 日付 | 配布媒体 | 注記 |
|---|---|---|---|
| 1981 | QUNIX設立。 | ||
| ベータ | 1983 | QNXベータ版として | |
| 1.0 | 1984 | ||
| 2.0 | 1987 | TCP/IPやPPPなどの4.3BSDの要素がQNX 2.0に統合されました。 | |
| 2.21 | 1989 | QNX 2.21 | |
| 4.0 | 1990 | QNX 4.0 | |
| 4.1 | 1994 | 4.4BSD の要素を QNX 4.1に組み込む | |
| 4.2 | 1995 | QNX 4.2 | |
| 4.22 | 1995 | QNX 4.22 | |
| 4.24 | 1995 | QNX/Neutrino 1.0はQNX 4.24からフォークされたものです。 | |
| 4.25 | 1997 | QNX 4.25 は、 QNX/Neutrino 1.0 とのフォーク後に継続されます。 |
| リリース | 日付 | 注記 |
|---|---|---|
| 1.0 | 1996 | QNX 4.24 からフォークされた QNX/Neutrino 1.0 |
| 2.0 | 1998 | QNX/ニュートリノ 2.0 |
| 2.10 | 1999 | QNX/ニュートリノ 2.10 (QRTP) |
| 6 | 2001年1月18日 | QNX RTOS 6 |
| 6.1.0 | 2001 | QNX RTOS 6 |
| 6.1.0 (パッチA) | 2001年9月28日 | |
| 6.2 | 2002年6月4日 | QNX 6.2 (モメンティクス) |
| 6.2(パッチA) | 2002年10月18日 | QNX 6.2 |
| 6.2.1 | 2003年2月18日 | QNX 6.2.1 (モメンティクス) |
| 6.3 | 2004年6月3日 | QNX 6.3 |
| 6.3.0 SP1 | ? | |
| 6.3.0 SP2 | ? | |
| 6.3.0 SP3/ OS 6.3.2 | ? | |
| 6.3.2 | 2006年8月16日[ 23 ] | |
| 6.4.0 | 2008年10月30日 | QNX ニュートリノ RTOS 6.4.0 |
| 6.4.1 | 2009年5月 | QNX ニュートリノ RTOS 6.4.1 |
| 6.5.0 | 2010年7月 | QNX Neutrino RTOS 6.5.0は、2011 年 10 月 18 日に発表され、その後プレビューされ、 2012 年 5 月 1 日に「BlackBerry 10 OS 」 と名付けられ、 BBX を生成するためにフォークされました。 |
| 6.5 SP1 | 2012年7月11日 | QNX ニュートリノ RTOS 6.5 SP1 |
| 6.6 | 2014年2月28日 | QNX 6.6 |
| 7.0 | 2017年1月4日 | QNX SDP 7.0、64ビットをサポートする最初のバージョン |
| 7.1 | 2020年7月23日 | QNX SDP 7.1 |
| 8.0 | 2023年12月 | QNX SDP 8.0 [ 24 ] |
BlackBerryが設計したBlackBerry PlayBookタブレットコンピューターは、QNXのバージョンをメインオペレーティングシステムとして採用しています。BlackBerry 10オペレーティングシステムもQNXをベースにしています。
QNXは車載インフォテインメントシステムにも利用されており、多くの大手自動車メーカーがQNXアーキテクチャを組み込んだバリエーションを提供しています。wolfSSLなどの一般的なSSL/TLSライブラリもサポートしています。[ 25 ]
QNXは2010年に「Safe Kernel 1.0」を発表して以来、機能安全認証を受けたRTOSを必要とする自動車プロジェクト向けの自動運転システムやADASシステムに採用されてきました。QNXは、QNX OS for Safety製品を通じてこの機能を提供しています。[ 26 ]
QNX Neutrino (2001) は多くのプラットフォームに移植されており、現在では組み込み市場で使用されているほぼすべての最新の中央処理装置(CPU) ファミリーで動作します。これには、 PowerPC、x86、MIPS、SH-4、そして密接に関連するARM、StrongARM、XScaleが含まれます。
2025年12月16日現在、QNXソフトウェアは世界中で2億7500万台以上の車両に組み込まれており、BMW、ボッシュ、コンチネンタル、東風汽車、吉利汽車、フォード、ホンダ、メルセデス・ベンツ、スバル、トヨタ、フォルクスワーゲン、ボルボなど、ほとんどの大手OEMとTier 1サプライヤーが含まれています。[ 27 ]
QNX OS for SafetyとQNX Hypervisor for Safetyは、以下の要件に準拠していることが認定されています。[ 28 ] [ 29 ]
QNX OS for Safety は、以下の要件にも準拠していることが認定されています。
2025年1月6日、QNXはソフトウェア開発プラットフォームを非商用目的で利用できるようにしました。[ 31 ]
QNXは非商用および学術的なユーザー向けのライセンスを提供しています。[ 32 ] 2024年1月、BlackBerryはQNXを愛好家がより利用しやすくするためにQNX Everywhereを導入しました。QNX Everywhereは2024年初頭に一般公開されました。[ 33 ]
QNX標準サポートは、QNXソフトウェアセンターで利用可能なBSPとして以下に記載されているBSPに対してご利用いただけます。その他のBSPについては、下記「BSPサプライヤー」または「ボードベンダー」から代替のサポート(カスタムサポートプランなど)が提供される場合や、必要な場合があります。[ 36 ]
BlackBerry QNXは、補完的な技術を提供するために、パートナー組織のネットワークと連携してきました。これらの重要な関係により、世界で最もクリティカルな組み込みシステムを支える基盤ソフトウェア、ミドルウェア、そしてサービスを提供することが可能となっています。[ 37 ]
{{cite web}}: CS1 maint: url-status (リンク){{cite web}}: CS1 maint: url-status (リンク)