検索
ニュース

今やBlackBerryの主力事業に、下克上を果たしたRTOS「QNX Neutrino」リアルタイムOS列伝(36)(3/3 ページ)

IoT(モノのインターネット)市場が拡大する中で、エッジ側の機器制御で重要な役割を果たすことが期待されているリアルタイムOS(RTOS)について解説する本連載。第36回は、1980年代からの長い歴史を持つ「QNX Neutrino」を取り上げる。

Share
Tweet
LINE
Hatena
前のページへ |       

無償版はなくなったものの、30日間の評価版が利用可能

 というわけで長々とQNXの歴史をご紹介してきたが、QNXの特徴は以下の通りになる。

アーキテクチャ

 マイクロカーネルベースのアーキテクチャを採用している。カーネル(QNX用語ではprocnto)そのものは最小限(スケジューリング/プロセス間通信/割り込み処理/タイマー)程度の処理に留めており、デバイスドライバなどを含むその他の処理は全部別Taskという形で分離した上で、Task(というか、そのTaskの実行単位であるThread)間はMessage Passingの形で通信を行っている。

 この方式だと一般にはパフォーマンスが犠牲になりやすいが、QNXではMessage Passingがスケジューラと密接に連動する形で実装されており、パフォーマンスの犠牲が最小限にとどめられている。その一方でドライバまで別Taskなので、例えば何かの理由でドライバがクラッシュしても、OS全体は影響を受けないという利点がある(もちろんそのドライバがクラッシュすることで、アプリケーションの動作に影響を及ぼす可能性はあるが、それは別の問題である)。

スケジューリング

 スケジューリングはプライオリティベースのプリエンプティブであるが、APS(Adaptive Partition Scheduling)と呼ばれる技法(全てのThreadが、一定期間内に最小限のCPU時間の割り当てを受ける方式:より優先度の高いThreadが全てのCPU時間を独占することを防ぐ)や、Sporadic Scheduling(Threadの実行時間の上限を定めるスケジューリング)など、いくつかのオプションが用意される。

マルチプロセッサへの対応

 マルチプロセッサに対応したAMP/SMP構成が可能だが、Processor Affinity(SMTなどの仮想的なマルチプロセッサ)に対応したBMP(Bound Multi Processor)という構成を利用することもできる。最新のQNX Neutrinoでは、ターゲットは64ビット対応のx86およびArmv8-A対応(64ビット)であるが、引き続きARMv7ベースの32ビットプロセッサのサポートもあるとしている。その他のアーキテクチャは、現状は未サポートである。

 Secure BootやTPM/Trust Zoneの対応、ファイルシステムのAES256暗号化、HAM(High Availability Manager)を利用して、障害プロセスの切り離しや再起動機能の搭載など、最近のOSに求められる機能はおおむねそろっている。そもそも先に書いたように、自動車業界向けに現在も使われているわけで、そうしたターゲットに必要となる機能は当然のように用意されている。逆に言えば、自動車業界で使われていないようなアーキテクチャやデバイスのサポートなどはまだ手薄というかはっきり言えばない辺りが、汎用として利用する場合に若干ネックになるかもしれない。

 無償版のQNX Neutrinoはもはや存在しないが、30日利用の評価版は同社から提供されている。まずはこれを使って試してみる、というあたりから始めてみる格好だろう。

Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る