QNX Neutrino RTOS
QNX® Neutrino® RTOS は豊富な機能を備えた堅牢な OS であり、リアルタイム組み込みシステムの制約のあるリソース要件に合わせてスケール ダウンすることができます。マイクロカーネル設計とモジュール型アーキテクチャにより、総所有コストを抑えつつ高度に最適化された信頼性の高いシステムを作成できます。また組み込み業界で唯一、シングルコアからマルチコア プロセシングへの、現場で実証済みのクリーンな移行戦略を提供します。
QNX Neutrino では、ドライバ、プロトコル スタック、ファイルシステム、アプリケーションはすべてメモリ保護された安全なユーザー領域で実行されるので、事実上、どのコンポーネントに障害が発生しても自動的に再起動できます。
真のマイクロカーネル OS
真のマイクロカーネル オペレーティング システムである QNX Neutrino RTOS(リアルタイム オペレーティング システム)は、非常に高い信頼性を提供します。
QNX Neutrino では、ドライバ、プロトコル スタック、ファイルシステム、アプリケーションはすべてカーネルの外のメモリ保護された安全なユーザー領域で実行されます。事実上、どのコンポーネントに障害が発生しても、他のコンポーネントやカーネルに影響を与えずに自動的に回復できます。商用 RTOS で、このような優れた保護機能を実装するものは他にありません。
マルチコアへの移行
QNX Neutrino RTOS は、シングルプロセッサからマルチプロセッサ組み込み環境への、現場で実証済みの移行戦略を提供します。独自の限定型マルチプロセシング(BMP)テクノロジでは、開発者が各プロセスとスレッドを実行する場所を厳密に決定できるので、移行リスクを回避できます。
QNX® Neutrino® RTOS を使用することにより、安価な組み込みハードウエアから超高速で予測可能な応答時間を引き出すことができるため、経済的かつ技術的に大きな利益を得ることができます。
低リスク、高信頼性
1980 年より、多くのメーカーが、QNX の RTOS 技術を利用して、医療機器から、インターネット ルーター、テレマティクス デバイス、緊急電話センター、プロセス制御アプリケーション、航空管制システムまで、さまざまな基幹システムを作動させてきました。
こうしたシステムは、規模の大小、単一システム、分散システムの差に関わらず、1 日 24 時間、1 年 365 日、ノンストップで稼動できるという類稀な評判を得ています。現場での長年の実績を誇る QNX Neutrino RTOS は、信頼性、耐障害性、およびスケーラビリティで業界標準となっています。
低い資材コスト
QNX Neutrino RTOS は、組み込みハードウエアのユニット当たりのコストを削減する完璧な OS です。以下により、安価なハードウエアでも最高のパフォーマンスが得られます。
- 真のリアルタイム OS 設計 - 予測可能な応答時間と、超高速割り込み遅延およびコンテキスト スイッチ
- マイクロカーネル アーキテクチャ - 堅牢な自己修復システム
- アダプティブ パーティショニング - 使用可能なすべての CPU 容量を最適に使用し、小さなメモリ フットプリントで高性能を実現
自己修復システム
QNX Neutrino RTOS は、他の商用 RTOS にはないレベルの、障害隔離や障害回復を実現します。
マイクロカーネル アーキテクチャでは、ドライバ、プロトコル スタック、ファイルシステム、アプリケーションはすべてカーネルの外のメモリ保護された安全なユーザー領域で実行されます。事実上、どのコンポーネントに障害が発生しても、他のコンポーネントやカーネルに影響を与えずに自動的に回復できます。
スケールアップまたはスケールダウン
同じ RTOS、ツール、API、ソース コードを使用してシステムの開発と実装を行い、大小のシングルプロセッサおよびマルチプロセッサのあらゆる種類の要件を満たします。
システム リソースの保証
QNX アダプティブ パーティショニング テクノロジでは、必要に応じてすべてのアプリケーションのシステム リソースを保証できます。正常な動作状態ではアプリケーションは使用可能なすべての CPU サイクルを使用できますが、過負荷状態の場合、ハード リソース保証を施行し、アプリケーションが規定バジェットのリソースを確実に取得できるようにします。
広範なボード サポート
QNX Neutrino RTOS は、x86、PowerPC、ARM、MIPS、SH-4 といった幅広いプラットフォームをサポートします。
従来のドライバと異なり、メモリ保護されたユーザー領域で実行するリソース マネージャ フレームワークにより、ドライバ開発が容易になります。
効率的な製品開発
QNX Neutrino RTOS を使用すると、製品開発を以下のさまざまな方法で短期間で効率的に行うことができます。
- マイクロカーネル アーキテクチャによりバグの特定や解決が容易になり、コストのかかるダウンタイムやシステム停止なく、コンポーネントのアップグレードを安全かつ迅速に行うことが可能
- OS とバイナリの単一セットで、単一プロセッサ デバイス、SMP システム、またはプロセッサ クラスタのすべてに対応可能
- QNX Neutrino は POSIX 標準 (1003.1-2001 POSIX.1) に準拠して開発されているため、オープンソース UNIX、Linux、およびその他のコードを簡単なリコンパイルで移植可能
- 標準 POSIX API により、開発者はアプリケーション コードを容易に再利用できるだけでなく、使い慣れた開発環境も提供
- ドライバ、アプリケーション、カスタム OS サービスなどの製品ライン全体で実装可能な検証済みのバイナリにより、開発チームはコードを再利用して検証作業を軽減
- 幅広いネットワーキング プロトコルおよびフラッシュ ファイルシステムをすぐに使うことができ、ビルトイン ハイ アベイラビリティにより開発作業を削減
QNX® Neutrino® RTOS は豊富な機能を備えた堅牢な OS であり、他のすべての競合製品とは一線を画す数々の独自の技術的機能を備えています。
リアルタイム
QNX Neutrino RTOS は、アプリケーション レベルとすべてのサブシステムで、確実に予測可能な応答時間を実現します。スレッド優先度継承により、優先度の逆転を回避します。
自己修復システム
QNX Neutrino RTOS のマイクロカーネル アーキテクチャにより、どのコンポーネント(ローレベル ドライバも含む)に障害が発生しても、カーネルや他のコンポーネントに影響を与えません。さらに、障害が発生したコンポーネントを迅速かつインテリジェントに再起動します。
アダプティブパーティショニング
QNX Neutrino RTOS では、空きCPUサイクルが無駄になることはありません。リソースに制限がある場合、プロセスはCPUサイクルの規定バジェットを使用します。ただし、システムに空きサイクルがある場合は、プロセスは規定バジェットを超えてCPUリソースを使用することができます。
ハイ アベイラビリティ
デバイス ドライバ、プロトコル スタック、アプリケーションのいずれかに問題が発生した場合、それが原因でほかのコンポーネントが終了することはありません。QNX Neutrino RTOS のハイ アベイラビリティ マネージャは、故障しているコンポーネントを通常ほんの数ミリ秒で、再起動せずに隔離して終了および復元できます。
ネットワーキング
IPv4、IPv6、IPSec、FTP、HTTP、SSH、Telnet などのネットワーキング テクノロジをサポートします。独自の透過分散処理により、アプリケーションはネットワーク上のどのノードにあるリソースにでもアクセスすることができます。
ファイルシステム
QNX® Neutrino® RTOS では、ファイルシステムはカーネルの外側のメモリ保護されたユーザー領域で実行されます。開発者はシステムをリブートすることなく、必要に応じてファイルシステムを起動、終了、およびアップグレードできます。複数のファイルシステムを同一のターゲット上で同時に実行し、連係処理も可能なため、相互の機能を拡張できます。
ポータビリティ
POSIX 規格に対する幅広いサポートにより、アプリケーションの互換性を高め、Linux、Unix、その他のオープン ソース プログラムから迅速な移行が可能です。
ARM、MIPS、PowerPC、SH-4、x86 など一般的なチップセットに対するランタイムのサポートと BSP により、設計者は組み込みシステムに最適な ハードウエア プラットフォームを選択し、システムを迅速に立ち上げることができます。
プリエンプト可能なマイクロカーネルと優先度ベースのスケジューラにより、QNX Neutrino RTOS は高速で予測可能な応答時間を実現します。優先度の高いスレッドは、システム負荷が高い状態であっても、常にデッドラインを守ります。
QNX Neutrino RTOS のリアルタイムの信頼性とパフォーマンスを支えるのは、以下のような包括的なテクノロジの統合セットです。
- 組み込みハードウエアから最短の応答時間を引き出す高速な割り込み遅延とコンテキスト スイッチ
- 優先度継承により、優先度の逆転を回避
- 同期メッセージ パッシングによりリアルタイム アクティビティのモデリングを簡素化
- ネストした割り込みと割り込み遅延の上限設定により、予測可能なタイムフレーム内で、優先度の高い割り込みから確実に処理を実行
QNX Neutrino RTOS は真のマイクロカーネル オペレーティング システムであり、マイクロカーネルにはシグナル、タイマ、スケジューラなどの最も基本的なサービスのみが実装されます。ファイルシステム、ドライバ、プロトコル スタック、アプリケーションなどのほかのすべてのコンポーネントは、メモリ保護されたユーザー空間で安全に実行されます。このため、優れた障害回復性が得られます。
OS のすべてのコンポーネントは、十分に定義された単一のメッセージング レイヤを経由して通信します。このメッセージング レイヤは、いつでもソフトウエア コンポーネントの追加(プラグイン)と削除が可能な仮想「ソフトウエア バス」を形成します。メッセージはプロセッサ境界を透過的に流れるため、ネットワーク上のどのリソースに対してもシームレスなアクセスが実現します。
自己修復システム
QNX マイクロカーネル アーキテクチャの背後にある原理は、最も要求の厳しい環境で 30 年以上にわたり実装されてきたことにより立証されています。
- どのコンポーネント(ローレベル ドライバも含む)に障害が発生しても、カーネルや他のコンポーネントに影響を与えない
- コンポーネントに障害が発生した場合に、リブートせずにそのコンポーネントをクリーンに終了し、使われていたリソースを回復する
- オペレーティング システムのハイ アベイラビリティ マネージャにより、障害が発生したコンポーネントを迅速かつインテリジェントに再スタート
設計の簡素化
モジュール型の QNX Neutrino RTOS マイクロカーネル アーキテクチャは、本質的にシステムの設計を簡素化し、保守が簡単なモジュール構造を実現します。分散メッセージングには以下の利点があります。
- 一貫性のある IPC(プロセス間通)を提供
- 様々なメカニズムと相互接続でリソースを透過的に共有する、スケーラブルな障害回復性に優れた分散システムを実現
- 連係するコンポーネントの実行を自動的に同期
- 複雑なキュー動作のトラッキングが不要
- 複雑なアプリケーションをわかりやすい個別構築ブロックに分割し、個別の開発とテストが可能
- 単一の業界標準 POSIX 関数コールにより、システム サービスにアクセス可能 - 複雑なメッセージング レイヤーの管理が不要
QNX アダプティブ パーティショニングは、処理負荷が大きく、タスク スタベーションがあってはならないシステムのためのシンプルで信頼性の高いソリューションです。クリティカルなプロセスがリソース不足に陥ることは全くなく、リアルタイム デッドラインは常に満たされます。
アダプティブ パーティショニングにより、オーバーエンジニアリングが不要になります。この点が、未使用サイクルが無駄になり高価な CPU が必要な固定パーティショニング設計とは異なります。そのため、市場投入までの時間が短縮され、プロジェクトの統合フェーズ中に通常発生する複雑なタスク スタベーションがなくなります。
独自のアプローチ
QNX アダプティブ パーティショニングは独自のパーティショニング アプローチです。パーティション(一連のプロセスまたはスレッド)に最小の CPU タイムを保証し、他に使用できる処理サイクルがあれば、パーティションに割り当てられた最小限の時間バジェットを超過することができます。
システム設計者は、一定割合のプロセシング リソースを特定のパーティション用に予約できます。正常な動作状態では、パーティションは使用可能な CPU サイクルをすべて使用できます。ただし過負荷の場合、つまりシステムが継続的に対応できる範囲を超えた計算が長時間必要とされる場合、QNX アダプティブ パーティショニングのスケジューラが各パーティションに消費を許可する CPU サイクルを強制的に制限し、最小限必要な CPU リソースが常に指定したプロセスで使用できるようにします。
システムの効率性
QNX アダプティブ パーティショニングは、固定パーティショニングよりも効率的という性質があります。
- ARINC 653 などの固定パーティショニングは本質的に非効率的です。あるパーティションのスペア CPU の容量を別のパーティションに一時的に使用することができないため、CPU バジェットを前もって設定し、ピーク時の要求を予測する必要があります。
- QNX アダプティブ パーティショニングの場合、使用可能な限りスペア CPU の容量を使用できるため、システム全体に使用可能なサイクルがある場合は、プロセスは規定バジェットを超えることができます。CPU リソースが制約される場合はバジェットが強化され、システムの各部分でリソースを公平に共有します。
システムのセキュリティの強化
QNX アダプティブ パーティショニングは、システム セキュリティを基礎から強化します。
- ダウンロードするコンテンツを隔離してパーティションを保護し、サービス妨害(DoS)を阻止します。
- システム リソースを占有する悪意のあるソフトウエアや認証されていないソフトウエアにより、CPU タイムのクリティカルな機能が危機的な状況に陥ることはありません。
自己修復システム
QNX アダプティブ パーティショニングは、フォールト トレラント システムと自己修復システムの作成に役立ちます。
- エラー検出とシステム回復の動作に CPU サイクルが保証されるため、システムの回復が迅速です。
- ユーザー インターフェイス(コンソール、リモートなど)へアクセスするオペレータと管理者は、プロセッサの負荷に関係なく、常にシステムの状態を把握できます。
リアルタイム デッドラインの保証
QNX アダプティブ パーティショニング テクノロジでは、リアルタイム決定性を維持しながら柔軟なスケジューリングを行うことができます。
- 使用可能なCPU サイクルが、ビジー状態でないパーティションから余分な処理時間が必要なパーティションに、ダイナミックに割り当てられます。
- 使用可能な CPU サイクルは、常にシステムで最高優先度の実行準備の整ったスレッドに使用されます。
- 開発者は、パーティション バジェットやシステム負荷に関係なく実行が保証されるように、クリティカル スレッドを設計することができます。
イベントへの応答の保証
QNX アダプティブ パーティショニングにより、システム開発者は、プロセスやスレッドの優先順位の複雑な操作を行わなくてもイベントへの応答を確保できます。
- デバイスのユーザー インターフェイスに割り当てられた最小限の CPU バジェットで、ボタンを押したり音声によるコマンドなどのユーザーのアクションに対して必ず迅速に応答することができます。
- メディア プレーヤに対して CPU サイクルを保証することにより、スムースな連続再生に必要な CPU サイクルを常に取得できるため、メディア再生時のスキップや一時停止がなくなります。
効率的な製品開発
QNX アダプティブ パーティショニングは、組み込みシステムの統合とデバッグに必要な時間と工数を削減します。
- 開発者はシステムの個々のパーツに CPU バジェットを確保して、システム リソースを公平に共有するようにできます。時間がかかり、エラーが発生しやすい優先度の調整作業を行う必要はありません。
- 開発者とインテグレータは、プロジェクト固有の要件に指定されるバジェットを監視してリセットすることができます。この際、コードの記述も、再コンパイルも必要ありません。
インテグレーションの簡素化
QNX アダプティブ パーティショニング テクノロジをシステムに統合する際に、余分な作業は発生しません。
- アダプティブ パーティショニングは最小限の労力でシステムに追加でき、アプリケーションの再コーディングはもちろん、再コンパイルも不要です。
- パーティション パラメータはプログラムではなく設定を行います。コードを変更せずに、指定したプロセスに CPU 保証を改良します。
- 障害隔離機能 - 明確に定義されたソフトウエア コンポーネントに障害を隔離し、システムのアベイラビリティ全体への影響を最小限に抑える
- 回復機能 - 障害を検出し、システム リブートをせずに自動的に回復処理を行うことで、平均修復時間(MTTR)を最小限にする
これらの機能は QNX Neutrino RTOS のマイクロカーネル アーキテクチャとハイ アベイラビリティ フレームワークで実現され、前者でコンポーネントの故障をそのコンポーネント抑制、後者では障害の検出と回復のための基礎構造を提供します。
また、QNX Neutrino RTOS は以下によりハイ アベイラビリティをサポートします。
- 冗長サービス — 透過分散処理(ネットワーク分散アーキテクチャ)により冗長サービスを迅速に構築可能
- CPU リソースの保証 — アダプティブ パーティショニングにより、重要なソフトウエア コンポーネントに最小限の CPU 時間とメモリを保証し、すべての状況下で必要なリソースを確保
障害隔離機能 — マイクロカーネル
QNX RTOS マイクロカーネル アーキテクチャは障害を隔離し、コンポーネントの故障をそのコンポーネントに抑制します。
- すべてのコンポーネントに対する完全な MMU ベースのメモリ保護により、あるコンポーネントの故障が他のコンポーネントや OS カーネルに悪影響を与えないようにします。
- デバイス ドライバとシステム サービス(ネットワークやファイルシステム)は、他のソフトウエア コンポーネントに影響を与えずに、自動的に再起動できます。
- 明確なリソース所有とプロセスの異常終了時に OS による自動クリーンアップを実行する POSIX プロセス モデル
回復 — ハイ アベイラビリティ フレームワーク
QNX ハイ アベイラビリティ フレームワークは、非常に効率的なハイ アベイラビリティ システムを構築するための信頼性の高い基礎構造を提供します。ハードウエア指向のハイ アベイラビリティ ソリューションのサポートはもちろん、開発者は、ソフトウエアの故障がシステム全体に影響を与える前に隔離と修復を行うツールを使用できます。
ハイ アベイラビリティ フレームワークにより、カスタマイズされた障害回復シナリオを迅速に構築し、迅速かつ透過的に修復システムを設計できます。
自己修復システム
ハイ アベイラビリティ フレームワークにより、開発者は自己修復システムの構築と実装ができます。
- システム リブートなしに、障害が発生したプロセスを自動的に再スタート
- プロセス障害に続くプロセス間通信を自動的に修復
- アプリケーションによって故障状況を特定し、影響を緩和し速度を修復するための特定のアクティビティを実行するという障害回復アクションをカスタマイズ
ハイ アベイラビリティ マネージャ
ハイ アベイラビリティ マネージャ(HAM)は「スマート ウォッチドッグ」です。つまり、システムのサービスやプロセスが故障したり応答しない場合に、システムを監視して多段回復を行う回復機能の高いマネージャ プロセスです。
自己監視マネージャとして、HAM は内部の故障を回復する機能があります。どのような理由においても、HAM 自体が異常終了した場合、ミラー プロセスに引き渡すことにより、HAM の状態を即座に完全に再構築します。
ハイ アベイラビリティ フレームワークには、シンプルなスレッドセーフ メカニズムを提供する HAM API ライブラリと、libc の多くの標準 I/O 動作にドロップイン拡張ソリューションを提供するクライアント リカバリ ライブラリが含まれます。
QNX Neutrino RTOS ネットワーキング サポートには、以下のようなプロトコルのリストが含まれ、常に拡張されています。
- IPv4/IPv6(NetBSD 4.0 ベース)
- SNMP v1/v2/v3
- L2 VLAN、QoS、STP
- 802.11a/b/g、WPA、WPA2、WEP
セキュリティ プロトコル スイートは以下をサポートします。
- IPSec、IKE、SSL、SSH、NAT、IP フィルタリング
- オープンな暗号化 API
- パケット処理のためのハードウエア アクセラレーションのサポート
TCP/IP スタックの RFC サポート
QNX ソフトウエア システムズでは、ネットワーキング サポートを継続的に拡張しています。必要なプロトコルが見当たらない場合は、QNX に最新情報についてお問い合わせください。
QNX の透過分散処理(TDP)テクノロジにより、ネットワークでのシームレスなピアツーピア リソース共有が可能です。このテクノロジは以下に最適です。
- バックプレーンと相互接続技術で使用するインボックス ネットワーキング機器
- 分散監視、管理、制御などの工業用制御システム アプリケーション
共有リソースの使用を最適化
TDP は、QNX メッセージ パッシング アーキテクチャをあらゆるネットワーク相互接続テクノロジに拡張します。TDP は、標準メッセージを使用して、リモート ノードに存在するハードウエアとソフトウエアのリソース(メッセージ キュー、ファイルシステム、サービス、データベース)をダイナミックに相互接続するためのフレームワークを提供します。
リソースの実際の格納場所に関係なく、公開されたすべてのリソースにあらゆるノードのすべてのソフトウエアがアクセスできます。
場所を選ばない実装
グローバル ネーミング サービスとロケーション サービスにより、全く場所を選ばない実装が可能です。
- 複数のカードに同じサービスを登録可能
- 使用可能なリソースの自動的な監視と通知
- ランタイムのアプリケーションのフレキシブルな展開とパーティショニング
ビルトイン冗長性とロード バランシング
冗長性とロードバランシングは、TDP を実装しているシステムの基本品質です。
- CPU 間の複数のリンクを固有にサポート。1 つのリンクに障害が発生した場合、サービスを損なうことなく、残りのリンク上でデータを自動的に再ルーティング
- 使用可能なすべてのリンクでネットワーク トラフィックのロード バランシングを実行できるため、非常に高いスループットを実現
- アプリケーションはデータのノードを任意に指定でき、そのノードで障害が発生した場合、別の有効ノード上でデータのロード バランシングを透過的に実行
さまざまなトランスポートのサポート
TDP のメッセージングをトランスポート層で処理LAN、バックプレーン、独自のスイッチ機構、CAN や MOST などの車載用バス、そしてインターネットでも、同様の優れた性能を発揮します。
効率的な製品開発
TDP では、カスタム開発とハードウエアの追加に伴う時間とコストを節約することができます。TDP は、プロセス間通信にこれまで必要とされてきた従来の煩雑なカスタム メッセージング インフラストラクチャの代わりに使用することができます。特別なコーディングをせずに、アプリケーションとサーバーを直ちにネットワークに分散させることができます。
- ネットワーク コードの追加が不要
- 単一の CPU で実行されているプロセスは、後から複数の CPU に分散しても、相互通信を継続します。これにより、開発者はリソースをネットワーク接続されたノードに拡張でき、マルチノード システムの開発が簡素化されます。
- 複数の CPU でリソースへのオンデマンド アクセスが可能な、堅牢性と耐障害性に優れたシステム構築が可能です。1 つの CPU が使用できない状態であっても、別の CPU で類似リソースに透過的にアクセスできるため、ビルトイン冗長性とロード バランシングが確保されます。
- 開発者は、デバッグの際には単一の接続を使用して複数のカードのリモート データを照会収集でき、接続が解除されてもデータにアクセスできます。
QNX ファイルシステムは堅牢で互換性と効率性に優れており、下記のような特性があります。
- カーネルの外側のメモリ保護されたユーザー領域で実行される。開発者はシステムをリブートすることなく、必要に応じてファイルシステムを起動、終了、およびアップグレード可能。
- シンプルな POSIX / C API 呼び出し(open()、read()、write()、close() など)によりアクセス可能。
- 同一のターゲット上で同時に実行し、連係処理も可能なため、相互の機能を拡張可能。たとえば、圧縮ファイルシステムはフラッシュ ファイルシステムでも使用できるため、ターゲットのフラッシュ メモリ要件を大幅に削減可能。
QNX パス名スペース
QNX ファイルシステムは、すべて QNX パス名スペース内で動作します。このパス名スペースを使用して、QNX システムはネットワークの任意のコンピュータのファイルシステムにシームレスにアクセスできます。QNX システムは、ブートにハード ドライブやフラッシュ ドライブが必要ありません。ブートは、RAM、ネットワークの別のマシン、読み取り専用アクセスが可能なフラッシュ ドライブのいずかから行うように設計できます。
ファイルシステム一覧
|
組み込み
|
ディスク
|
ネットワーク
|
その他
|
|
フラッシュ デバイス NOR フラッシュ NAND フラッシュ RAM |
POSIX QNX ファイルシステム Ext2 - Linux FAT 12、16、32 Windows/DOS NTFS(読み取り専用) - Windows ISO9660、Joliet CD-ROM デバイス HFS+(読み取り専用)- Apple Mac OSX UDF - CD および DVD |
NFS CIFS |
圧縮 ファイルシステムに圧縮/解凍機能を追加 |
組み込みファイルシステム - NOR および NAND フラッシュ
QNX フラッシュ ファイルシステム テクノロジは、予期せぬ電力障害によるデータ破損を防止し、堅牢なストレージの読み取り/書き込みに対応するため、ファイルシステム レベルでの高い信頼性を誇っています。
- 堅牢なストレージの読み取り/書き込みにより、予期せぬリセットや電力障害によるデータ破損を防止
- 磨耗を均一化する機能により、フラッシュ パーツの寿命が延長
パフォーマンス
QNX NOR および NAND ファイルシステムには、以下のようなパフォーマンスに関する機能があります。
- バックグラウンド リクレーム(回復処理)は、同時にバックグラウンド ガーベジ コレクションを実行して未使用領域を回復し、ブロックとセクタの検出消去にかかる潜在的な I/O 遅延を緩和
- キャッシュと一時ファイル用の RAM ファイルシステム
- 圧縮サポートによるフラッシュの使用の最適化
POSIX、ISO C ファイル セマンティクスとツール
QNX NOR および NAND ファイルシステムは以下をサポートします。
- 標準ファイル ストリーム操作
- ファイルとディレクトリのダイナミックな作成と操作
- シンボリック名、長いファイル名、許可
- ロー フラッシュを直接読み取り/書き込みし、cp や dd などの標準の POSIX コマンド ライン ツールからブート ローダーを再プログラム可能
NOR フラッシュ デバイス
NOR フラッシュ デバイスは、QNX フラッシュ ファイルシステム バージョン 3(FFSv3)でサポートされています。
障害回復
メタデータへの更新は綿密に作成されたシーケンスで処理されます。この動作により、電力障害後でもファイルシステムの高い整合性が保証されます。
リセットや電源投入後に、ファイルシステムが検査され、可能な場合にはデータの整合性が復元されます。
不良セクタの処理
エラーのあるセクタを記録して自動的に使用を回避します。
NAND フラッシュ デバイス
NAND フラッシュ デバイスは、組み込みトランザクション ファイルシステム(ETFS)テクノロジでサポートされています。
電力障害によるデータ破損への耐性
アトミック トランザクションがファイルとディレクトリの操作の整合性を保証し、電力障害によるデータ破損を防止します。
ブロックの整合性
QNX ファイルシステムでは、NAND フラッシュ デバイスの全ブロックの品質が保証されます。
- 生産時にマークされた不良ブロックを除外して使用を回避
- ブロックがマークされ、規定の読み込み劣化リミットに達する前にリフレッシュされ、ECC エラーの可能性とデータ回復の必要性を回避
自動ファイル デフラグ
QNX ファイルシステムには、データの断片化を防止するための各種戦略が採用されています。
- 小規模の書き込みトランザクションを結合してから NAND に書き込むことにより、書き込みバッファで断片化を軽減
- デフラグ動作はバックグラウンドで自動的に実行されますが、ユーザーが作業する場合は自動的にプリエンプト
一括コピー サポート
一括コピー サポート - ファイルシステム データはブロック固有ではありません。NAND デバイスは別個のフラッシュ プログラムを使って一括コピーすることができます。
- BIOS レス ブート - BIOS をバイパスしてブート シーケンスをカスタマイズ
- マイクロカーネル - ドライバを開始する前にアプリケーションを容易に開始
- インスタント デバイス アクティベーション(IDA) - 早期準備に合わせるために必要なミニドライバがアプリケーションを起動し、制御を標準ブート プロセスに渡す
BIOS バイパス ブート
QNX Neutrino RTOS によって、開発者は標準 BIOS ではなく周辺機器の初期化をカスタマイズして使用することができます。初期化のカスタマイズにより、組み込みシステムに不要な時間のかかるタスク(キーボードや USB デバイスの初期化など)を省略することができます。
多くの x86 システムには BIOS にデバイス ドライバが搭載されており、デバイスの初期化を行います。QNX Neutrino RTOS では、これらのドライバは BIOS の外にあります。このアーキテクチャにより、開発者は初期化するドライバ(デバイス)と初期化するタイミングを容易に選択でき、不要な初期化を排除し、その他をブートの後まで延期します。つまり、作業の削除と延期により、ブート時間を可能な限り速くすることができます。
BIOS を使用しないブートの開発時に、開発者は、コンパイル時に認識されるようにカスタム割り込みの割り当てをハードコードできます。また、システムは、フラッシュや EEPROM などの線形マップされたデバイスで部分ブートイメージからブートするように設計できます。この部分イメージはブート時間を速めるよう最適化できますが、フル ブート イメージを含むハード ドライブ、NAND フラッシュ デバイス、USB デバイスなどのストレージにアクセスするドライバを含めることができます。
マイクロカーネル
QNX Neutrino RTOS の独自のマイクロカーネル アーキテクチャにより、ブートに続くコンポーネントとアプリケーションのアベイラビリティの最適化が容易になり、スタートアップ シーケンスを変更してアイドル タイムを利用することができます。システム設計者は、何をいつ開始するかを完全にコントロールできます。たとえば、開発者は、ほかの大多数のドライバより前にオーディオ ドライバと小さいスローアウェイ再生ユーティリティを読み込むことにより、電源投入直後にジングルを再生するようにシステムを設定できます。インスタント デバイス アクティベーション
QNX インスタント デバイス アクティベーションにより、コールド パワー アップやブート後に、組み込みシステムを CAN バス メッセージの送受信などのクリティカルな早期準備要件に合わせることができます。
クリティカルな機能
IDA は、OS カーネルの初期化前に実行を開始する、非常に効率的な小型デバイスを使用します。この最小限のドライバ レイヤでは、以下が可能です。
- 外部のイベントへの応答、クリティカルな応答時間への適合、ハードウエアへのアクセス、フル ドライバ用のデータ格納
- 制御がいったんフル ドライバ プロセスに渡されると、中断やデータの損失なしにシステムをシームレスに続行または終了
ハードウエア コストの削減
IDA テクノロジを使用すると、以下の理由でハードウエア コストを削減できます。- 外部電源モジュールなどのコストがかかるハードウエアを追加せずに、MOST や CAN などのバスからのデータを管理
- 補助通信プロセッサなしに、コールド状態や低電力状態からブートし、タイミング要件と応答要件に対応
アプリケーションのカスタマイズ
アプリケーションのカスタマイズを容易にするため設計された IDA テクノロジでは、設定を容易にするため完全なソース コードとドキュメンテーションが提供されています。設計者とインテグレータは以下を行うことができます。
- デバイスのタイミング要件を満たすように標準のポーリング間隔を調整
- IDA バッファに格納するデータ量を定義
- フル ドライバ プロセスの引き継ぎのタイミングを指定して、最適なドライバ移行モデルを定義
持続性パブリッシュ/サブスクライブ機能(PPS)は、組み込みシステム専用に QNX ソフトウエア システムズが導入した、効率性と柔軟性を備えた小規模なサービスです。PPS を使用して、開発者は非同期の発行と通知に基づいて緩く接続されたシステムを構築できます。ソフトウエア コンポーネントは、異なるプログラミング言語や環境で作成されていても、互いに容易に通信できます。以下のような機能があります。
- パブリッシャとサブスクライバ間の1対1、1対多、多対1の関係をサポート
- プラグイン コンポーネントと代用可能なコンポーネントを許可するオブジェクト名に基づくインターフェイス
- C、C++、Java、Flash、Python、Perl、bash、ksh などの任意のプログラム言語との互換性
- ロジックを追加する必要なく、システム リセットにより持続可能なオブジェクト属性
- オンデマンド発行のサポート(プッシュではなくプル)
QNX® ソフトウエア システムズは、組み込み RTOS システム向けとして市場で唯一の総合マルチコア ソリューションを提供します。
1997 年からマルチプロセッサに対応してきた実績をもち、あらゆる組み込み環境のマルチコア プロセッサで展開されてきた QNX® Neutrino® RTOS は、以下のような特長を提供します。
- 対称型(SMP)、限定型(BMP)、および非対称型(AMP)のマルチプロセッサ モデル
- 持ち前のスケーラビリティ - 対称型および限定型マルチプロセシングによる 2 プロセッサ以上へのシームレスなスケールアップ
- 一般的なマルチプロセッサ ボードを幅広くサポート
QNX Neutrino RTOS マイクロカーネル アーキテクチャには、卓越した信頼性と自己修復機能の他に、モノリシック カーネルよりも優れた点が多くあります。
モノリシック カーネル
Microsoft Windows や Linux などのモノリシック カーネルには、ビッグ カーネル ロック(BKL)または非常に細かいロッキングが必要です。これは、以下の理由により、QNX のマイクロカーネル実装よりも多くの問題があります。
- カーネルを別のコアで実行すると、カーネルのアクセスを必要とするスレッドに BKL によって長期遅延が発生することがあり、一貫性が大幅に劣化します。
- 細かいロッキングを使用すると、コードが非常に複雑になります。全体的な問題が解決されないまま、システム レベルのインタラクションが脆弱で理解困難になり、タイムリーにアクセスできるかどうかが現在のサブシステムに実装されるロッキングの程度に制限されてしまいます。
マイクロカーネル
QNX マイクロカーネルを使用すると、カーネルの動作が比較的少なく、短時間で済みます。この最小ロッキング アプローチでは、BKL も細かいロッキング アプローチも必要ないため、システムのパフォーマンスが向上します。
長時間スケールの動作(プロセス マネージャなど)がプロセス空間で実行されるため、システムの他のスレッド(アプリケーション、ドライバ、プロトコル スタック)のスケジューリングが中断されることがありません。プロセス スレッド(およびカーネルの外側)で拡張した持続時間動作を維持すると、マイクロカーネルで複数の CPU を使用して通常のプロセス スレッドを自由にスケジューリングできます。
効率的な開発
QNX Neutrino RTOS は、マルチコア アプリケーションの市場投入にかかる時間を短縮します。
- 既存のアプリケーションの再利用
- マルチコア システム用の高度な視覚化ツール
- マルチコア デバッグ ツールと最適化ツール
- SMP と BMP により、すべてのアプリケーション プロセスとシステム リソースを完全に視覚化
限定型マルチプロセシング(BMP)マルチコア システム用に QNX が考案した新技術です。SMP のプロセッサ アフィニティを拡張することにより、開発者とシステムインテグレータはコードを変更せずに、指定したプロセッサにプロセスやスレッドを限定することができます。BMP が開発者にとって魅力的な理由は以下のようになります。
- マルチコア システムへの移行を行う上で便利。たとえば、適切な同期メカニズムを使用しない従来のアプリケーションを、単一プロセッサで実行しているかのように動作させることができる
- 非対称型マルチプロセシング(AMP)の代替。1 つまたは複数のコアがデータ プレーン専用で、1 つまたは複数のコアが制御プレーン専用
- コア間のスレッドの不要な移行や、互いのキャッシュの上書きを回避
最適化方式
QNX Neutrino RTOS は多様な方式を使用して BMP システムのパフォーマンスを最適化します。これらの方式には、ソフト アフィニティやランマスクなどがあります。
ソフト アフィニティ
可能な場合、QNX Neutrino RTOS は、スレッドをスケジュールして最後に実行していたものと同じ CPUで実行し、キャッシュのパフォーマンスを改良できるようにします。
ランマスク
各スレッドにランマスクがあります。これは、スレッドの実行を許可または禁止するプロセッサを示すビットマスクです。デフォルトでは、スレッドは親スレッドのランマスクを継承し、プロセスのすべてのスレッドが同じプロセッサにバインドされることが保証されます。各スレッドのランマスクはいつでも動的に変更できますが、必要に応じて、スレッドまたは子スレッドはプロセッサを変更する必要があります。そのため、システム設計者は、スレッドを特定の CPU コアに関連付けたり、専用機能にコアを予約することにより、システムのパフォーマンスを調整する機能を使用できます。
QNX® Momentics® ツール スイートは、マルチコア プロセシング デバッガ、コンパイラ、組み込みツールを搭載した、マルチコアを意識した完全なツール チェーンです。開発者はシングルコア システム用に開発されたアプリケーションを再利用し、マルチコア システムの市場に迅速に投入することができます。
- アプリケーション プロファイラ - 処理ボトルネックを検出、マルチスレッド化と並行処理が可能な部分を検出
- システム プロファイラ - コアごとの処理負荷の確認、コア間の通信のモニタリング、リソース競合の検出を行い、マルチコア プロセッサで最適なパフォーマンスを保証
- ソース レベルのデバッグ - 1 つまたは複数のコアで同様の優れた性能を発揮
- ブロッキング解析 - 共有リソースをサポート
POSIX 認定
QNX® Neutrino® RTOS は、コードのポータビリティと再利用性を最大限に高める数百もの POSIX のコマンド、ユーティリティ、プログラミング インターフェイスをサポートしています。充実した標準ベースの環境には使い慣れたシェルとコマンドライン インターフェイスが用意されており、開発者は Linux、Unix やその他のオープン ソース プログラムを迅速に QNX に移行できます。
QNX Neutrino RTOS は、POSIX PSE52 Realtime Controller 1003.13-2003 システム規格の認可を受けています。このため、QNX を採用する企業や官公庁は、軍事、ネットワ ーキング、医療、自動車など幅広いシステムで必要なリアルタイム性とコード ポータビリティの両方を利用することができます。
POSIX 対応の設計
QNX Neutrino RTOS は POSIX 規格対応を前提に設計されているため、他の RTOS に必要な複雑な POSIX 適合レイヤーが不要になり、その結果、パフォーマンスが向上し、組み込みアプリケーションのメモリ コストが削減されます。
参照: 標準 + 認定
QNX Neutrino RTOS 6.5 サービス パック 1
QNX® Neutrino® RTOS 6.5 サービス パック 1 は 2012 年 6 月にリリースされました。このサービス パックには Neutrino RTOS ソフトウエアへの新しい改善点が含まれました。
コア オペレーティング システム
- カーネルのメモリ管理機能の強化
- io-pkt の改善
- 新しい USB 通信クラスのサポート
- 最新の x86 プラットフォームへのサポートを更新
参照: QNX Neutrino RTOS 6.5 サービス パック 1 リリース ノート
QNX Neutrino RTOS 6.5
QNX® Neutrino® RTOS 6.5 は 2010 年 7 月にリリースされました。このリリースには、コア ソフトウエアとカーネルへの新しい拡張が含まれます。
コア オペレーティング システム
- 対称型マルチプロセシングの ARM Cortex-A9 および Freescale Power e500MC コアのサポート
- 持続性パブリッシュ/サブスクライブ サービス
- パフォーマンスの改良とファイル スループットの向上
- Intel APIC および x86 ハードウエア用 MSI の新規サポート
- Advantech、Intel、Kontron 製 x86 ボードのサポートを拡張
QNX Neutrino RTOS 6.4.1
QNX® Neutrino® RTOS 6.4.1 は 2009 年 5 月にリリースされました。このリリースには、新機能と重要なバグ修正が含まれます。
コア オペレーティング システム
- ARM Cortex A8(ARMv7 アーキテクチャのサポート)
- Freescale の e500 Core Signal Processing Extensions(SPE)のサポート
- 物理メモリのデフラグ
- MIPSBE および MIPSLE ターゲットのサポートの復元
ネットワーキング
- BIND9 サポート
- SSH サポート
ファイルシステム
- Microsoft NTFS および Apple HFS+ の読み取り専用サポート
グラフィックス
- コンポジション ウィンドウ マネージャ - ビデオやフラッシュ コンテンツでの透過ホールを容易に作成できる新しいツール










