web-dev-qa-db-ja.com

RTOSとEmbedded Linuxの違いは何ですか?

RTOSおよび組み込みLinuxは、組み込みシステムのプログラミングに使用されます。 Embedded Linux自体はRTOS?誰でも比較や違いをリストできますか?

37

Linuxは汎用OS(GPOS)です。通常、組み込みシステムへのアプリケーションの動機は、デバイスサポート、ファイルシステム、ネットワーク接続、UIサポートの可用性にあります。これらはすべてRTOSで使用できますが、多くの場合、サポートの幅は狭く、追加コストまたは統合作業が必要です。

多くのRTOSは、Linuxがタスクスケジューリング、IPC、同期タイミング、割り込みサービスなどを提供する静的リンクライブラリで構成されているという意味でフルOSではありません-本質的にはスケジューリングカーネルのみです。このようなライブラリはアプリケーションコードとリンクされ、システムが直接(またはブートローダーを介して)起動する単一の実行可能ファイルを生成します。ほとんどのRTOSは、Linuxの場合のようにファイルシステムからのコードの動的なロードおよびアンロードを直接サポートしていません。起動時にすべて存在し、電源が切れるまで実行されます。

重大なことに、Linuxはリアルタイムに対応していません。 RTOSは、確定的な動作とタイムリーな応答イベントおよび割り込みを保証するためのスケジューリング保証を提供します。ほとんどの場合、これは優先度ベースのプリエンプティブスケジューリングアルゴリズムを介して行われます。このアルゴリズムでは、実行可能な最高優先度のタスクが常に実行されます-即時-CPUの特定の収量または放棄、または時間の完了なしで、優先度の低いタスクを先取りします-スライス。

Linuxには、リアルタイムスケジューラを含む多くのスケジューリングオプションがありますが、これはせいぜい「ソフト」リアルタイムです。これは定義が不明確で、ほとんどの場合リアルタイムを意味するため、嫌いな用語です。しかし時々そうではありません。アプリケーションが「ハード」リアルタイムを必要としない場合は問題ありませんが、リアルタイムLinuxの典型的なレイテンシは数十または数百マイクロ秒のオーダーになりますが、典型的なRTOSリアルタイムはカーネルはゼロから数マイクロ秒のレイテンシを達成できます。

組み込みLinuxのもう1つの問題は、おそらく200MIPS以上の32ビットプロセッサ、理想的にはMMU、4MbのROMおよび16MBのRAMを含むかなりのCPUリソースを必要とすることです。数秒かかる場合があります)。一方、RTOSは、8ビット以上のマイクロコントローラーでは、ミリ秒単位でアップし、10Kb未満で実行できます。これは、表面上は「無料」であるにもかかわらず、量産のシステムコストに大きな影響を与える可能性があります。

動的ロード、ファイルシステム、ネットワーキング、GUI(QNXなど)などのGPOSの機能のいくつかを示すより大きなRTOS製品があり、多くのRTOSがPOSIXを提供します。 API(通常はネイティブリアルタイムAPIの二次)。たとえば、VxWorksおよびQNXであり、LinuxおよびUnix用に開発された大量のコードを比較的簡単に移植できます。これらのより大規模で包括的なRTOS製品はスケーラブルなままであるため、不要な機能は含まれません。 Linuxは比較して、スケーラビリティがはるかに限られています。

72
Clifford