差出人:https ://rt.wiki.kernel.org/articles/f/r/e/Frequently_Asked_Questions_7407.html
リアルタイムはカーネルにのみ影響します。ユーザースペースは、より良いリアルタイムの動作を除いて、違いに気づきません。
ユーザースペースでアプリケーションを作成した場合、リアルタイムのハード効果が得られないということですか?
差出人:https ://rt.wiki.kernel.org/articles/f/r/e/Frequently_Asked_Questions_7407.html
リアルタイムはカーネルにのみ影響します。ユーザースペースは、より良いリアルタイムの動作を除いて、違いに気づきません。
ユーザースペースでアプリケーションを作成した場合、リアルタイムのハード効果が得られないということですか?
それはあなたが「リアルタイム効果」で何を意味するかによります。通常、リアルタイムシステムでのタイミング動作を保証する必要があります。あなたはそれを取得しません。ただし、アプリケーションはより「スムーズに」実行され、応答性が向上します。多くのベストエフォートシステムでは、それで十分です。
いいえ、それはそれが意味することではありません。
つまり、PREEMPT_RTを使用すると、コードを調整したり、追加のライブラリ/ツールを使用したりすることなく、ユーザースペースの最大レイテンシを低くすることができます。実際には:PREEMPT_RTは、特定のAPIを使用するためにユーザーレベルのアプリケーションを必要としません。
代わりに、カーネルコード内のAPIが大幅に変更されます(たとえば、スピンロックをミューテックスに変更するなど)。
ちなみに、PREEMPT_RTはタスクで発生する最大遅延を減らしますが、システムスループットは低くなり(つまり、コンテキストスイッチが増える)、平均遅延が増える可能性があることに注意してください。
質問は、アプリケーションの作成者が使用できる特定のパッチセットによって導入されたAPIがあるかどうかを尋ねるという状況で最もよく答えることができ、このパッチセットによって追加されるものはないと思います。アプリケーションを再コンパイルする必要はなく、再コンパイルするメリットはありません。また、特定のAPIに縛られることもありません。
ハードウェアの状態によって応答する必要がある場合にできるだけ早く実行できることに依存する、適切に作成されたユーザースペースアプリケーションがある場合は、そうです。これらのパッチが役立ちます。ただし、リアルタイムの動作を妨げる貧弱なアプリケーションを作成することはできますが、パッチセットは役に立ちません。
これは、Real-Time Patchがカーネル内のいくつかのコードを操作することを意味し、この操作の効果は、きめの細かいプリエンプティブカーネルを持つことです。ユーザースペース内のすべてのプログラムは、変更を加えることなく、リアルタイムのプリエンプティブカーネルの恩恵を受けます。再コンパイルも必要ありません!PREEMPT_RTパッチの目標は、Linuxをハードリアルタイムシステムに変換することであり、ほとんどのタスクに非常に適しています。しかし、軍事や航空宇宙などのセーフティクリティカルシステムでは、Linuxは何も提供できないため、VxWorks、QNX、Integirtyなどの他のRTOSを使用する必要があります。