1

XenomaiのPosixスキンのAPIで、次のことがわかります。

POSIXスキン。
時計とタイマーのサービス。
条件変数サービス。
中断管理サービス。
メッセージキューサービス。
Mutexサービス。
セマフォサービス。
共有メモリサービス。
信号サービス。
スレッド管理サービス。
スレッドのキャンセル。
スレッドスケジューリングサービス。
スレッド作成属性。
スレッド固有のデータ。

ファイル処理ソケットプログラミングに関して何も見えないので、おそらくファイル処理とソケットはリアルタイムで処理されるべきではないと思いますか?推測は間違っていますか?

ご案内ください。

4

2 に答える 2

4

Xenomaiとその起源であるRTAIはどちらもスケジューラーを制御し、Linuxカーネル自体を非リアルタイムスレッドとして処理します。

彼らは多くのサービスを提供してきましたが、ご覧のとおり、そのほとんどはLinux API(カーネル空間)やシステムコール(ユーザー空間)を呼び出さないスレッドと同期に関連しています。ご存知のように、リアルタイムとは「期限を保証すること」であり、Linuxを呼び出すことはそれに違反します(Linuxは何も保証しないため)。

ドライバーはリアルタイムシステムでも重要であるため、リアルタイムドライバーモデル、つまりリアルタイムコンテキストでのデバイスドライバーの実装と使用の両方を支援するRTDMを実装しています。

カーネルでのファイル処理は非常に嫌われています。ユーザースペースのリアルタイムアプリケーションについて話している場合は、RTDMに実装されている任意のドライバーにアクセスできます。ファイル処理やソケット用のものが見つからない場合は、使用できません。printfLinuxシステムコールを使用している場合でも禁止されていることに注意してください。

それらを使用すると、何も壊れることはなく、リアルタイム性が失われることに注意してください。私は個人的にログにファイルを使用しますが、とにかくリアルタイムがすでに台無しになっていることを意味するエラーの場合にのみそれらを呼び出します。

Xenomaiについてはわかりませんが、少なくともRTAIでは、Linuxシステムコールを呼び出すと、カーネルログに「RTAI:LXRT変更モード:syscall...」のような警告が表示されます。

于 2012-04-05T09:29:19.293 に答える
1

リアルタイムはシステム全体の特性です。システムでリアルタイムの特性を実現するには、そのすべてのコンポーネント(ハードウェア、オペレーティングシステム、ドライバー、ライブラリ、およびアプリケーションを含む)を、リアルタイムシステムに適用される要件を考慮して設計する必要があります。このようなコンポーネント(RTOSなど)を使用して、リアルタイムシステムを構築できます。しかし、それらの使用法は、最終的なシステムがリアルタイムシステムになることを自動的に意味するわけではありません。実際、システムのコンポーネントの少なくとも1つがリアルタイムシステムの要件をサポートしていない場合、システム全体がリアルタイムになることはありません。

リアルタイムシステムには通常、リアルタイムタスクの平均要件を大幅に超えるリソースがあります。未消費のリソースは、ロギング、システム状態の監視、統計の収集と分析など、有用であるが重要ではないバックグラウンドタスクを実行するために使用できます。このタスクを実行するアプリケーションは、上で実行される非リアルタイムコンポーネントとして設計できます。リアルタイムコンポーネントの。この設計は、リアルタイムタスクに参加するすべてのコンポーネントがリアルタイムの要件をサポートしていることが確実な場合に安全です。あなたの質問に対するこの直接の答えのために:

それは完全にアプリケーションに依存します。一般に、リアルタイムタスクの処理に使用されないすべてのコードは、非リアルタイムとして記述できます。リアルタイムタスクの処理に使用されるすべてのコードは、リアルタイムとして記述されている必要があります。

Xenomaiが行っているのは、非リアルタイムLinuxと、RTOSカーネル上で実行されRTOSベースのリアルタイムタスクと並行して実行される特別なコンテナー内の非リアルタイムタスクの処理に使用されるそのアクティビティの分離です。 。Xenomaiベースでリアルタイムシステムを構築するには、アプリケーションはXenomai APIと、リアルタイムであることがわかっていることが証明されている他のライブラリとAPIのみに依存する必要があります。有用であるが完全に重要ではないすべてのバックグラウンドアクティビティは、通常のLinuxアプリケーションとして記述できます。

ストレージやネットワークサービスなどのシステムやサービスは、通常、リアルタイムタスクでは使用されません。これは、一般的に使用されるハードウェアが非常に不確定であり、リアルタイムの概念にうまく適合しないためです。ネットワーク経由で5つのパケットを送信したり、HDDにファイルを書き込んだりするのにどれくらいの時間がかかるかを事前に言うのは難しいです。このため、このようなシステムのインターフェースは一般的ではありません。しかし、繰り返しになりますが、アプリケーションは必要なリアルタイムサービスを指示します。ストレージとネットワークアクションを含むリアルタイムタスクを想像できます。そのようなタスクの場合、設計者は、リアルタイムのストレージとネットワークサービスを提供するそのようなシステムコンポーネントを見つけることを余儀なくされます。ご覧のとおり、Xenomaiは候補ではありません。

于 2016-11-18T09:17:19.863 に答える