web-dev-qa-db-ja.com

Linuxの代わりにRTOS QNXやVxWorksなどを使用する利点?

リアルタイムのオペレーティングシステムを必要とするソリューションを開発する場合、QNXやVxWorksなどのオペレーティングシステムはLinuxよりもどのような利点がありますか?

言い換えると、これらのオペレーティングシステムは、リアルタイムの組み込み用途向けに特別に設計されているため、リアルタイムの使用に合わせて調整できるより一般的なシステムであるLinuxとは対照的に、いつ Linuxの代わりにこれらのオペレーティングシステムの1つを使用するには?

15
Justin Ethier

一部の組み込みシステムは、(a)困難なリアルタイム要件を満たす必要がありますが、(b)ハードウェアが非常に限られているため、これらの要件を満たすことがさらに困難になります。

ハードウェアを変更できない場合は、Linuxを除外し、代わりに何かを使用せざるを得ない状況がいくつかあります。

  • おそらく、CPUにはMMUさえないため、Linuxを実行することができません(uClinuxを除いて、uClinuxがリアルタイムでないことを私が知っている限り)。
  • おそらく、CPUは比較的低速であり、Linuxでの最悪の場合の割り込みレイテンシはいくつかのハード要件を満たせず、他の一部のRTOS最悪の場合の割り込みレイテンシを調整して要件を満たすことができます。
  • おそらく、システムのRAMはごくわずかです。数年前、最小のLinuxセットアップには約2 MBのRAMが必要でした。最小20 eBのRAMを必要とする最小のeCosセットアップ(元々はLinuxで実行するように設計されたいくつかのアプリケーションを実行できる互換性レイヤーを備えています)。
  • おそらく、ハードウェアへのLinuxの移植はなく、システムを起動(しゃれ)する必要がある前にLinuxを移植する十分な時間がありません。より単純なRTOSの多くは、Linuxより新しいハードウェアへの移植にかかる時間がはるかに短いです。
14
David Cary

私はリアルタイムの作業をまったく行っていないので、これを塩の粒と一緒に服用してください...

「リアルタイム」には、ハードリアルタイムとソフトリアルタイムの2つのカテゴリがあると聞いています。

「ソフトリアルタイム」とは、非公式に「できるだけ早く実行する」ことを意味します。最近のCPU上のLinuxは、この種のことに適していると思います。

「ハードリアルタイム」とは、非公式に「必要な時間枠内で実行する」ことを意味します。ウィンドウは非常に小さく、ミリ秒かそれ以上になることがあります。巡航ミサイルや衛星ロケットの飛行制御システムは、標準的な例のようです。産業用プロセス制御システムでもこれが必要になる場合があります。 Stuxnetワームは、この種の制御を行うシステムを妨害しているようです。

後者の状況ではRTOSを使用します。RTOSは、多くの場合、それほど多くの命令またはクロックティックなどでは割り込みを配信しないことを保証します。

もう1つの考慮事項は、RTOSは、制限なしにスタックスペースを消費しないように設計、テスト、および/または「提供」されていることです。これは、特定の最小量のメモリ内に存在でき、「 OOM Killer」は存在しない可能性があるため、存在しません。初期のFORTRANのいくつかの間抜けな機能は、このタイプの要件に由来します。FORTRANIIプログラムをコンパイルすると、必要なスタックとヒープの量が正確にわかります。再帰できず、動的に割り当てることができなかったためです。

現実的には、2番目の考慮事項(保証された最大メモリ消費量)は、一部の安全性が重要なアプリケーションでは、「0.001秒の保証された割り込み待ち時間」よりも重要な場合があります。

私はまた、サポートの言い回しのいちじくの葉の選択プロセスを取り除くことを想像するでしょう、あなたはエンジニアがRTOSを選択することがわかるでしょう。

8
Bruce Ediger