2012-07-17 12 views
5

Linux(RT_PREEMPTカーネル)でシステムコールを実行することは決してリアルタイムに安全ではないと聞いています。すべてのシステムコールはリアルタイムで安全ですか?

これは過度に制限されているように見えます - システムコールなしで、あなたのプロセスが(DMAを通じて完全に行わなければならない場合を除いて)どのようにすればいいですか?

これは本当ですか、または(clock_gettimeのような)システムコールはリアルタイム保護されていますか?

+0

* **「リアルタイム安全性」*の*** **正確**定義*とは何ですか? –

+0

私が心配している限り、リアルタイムで安全な操作は、合理的に短い時間内に完了または失敗します。私たちは1kHzの制御ループを実行しようとしています...明らかにFSや他の多くの操作を避ける必要がありますが、1ms未満の実行時間を保証するにはすべてのシステムコールを避ける必要がありますか? – crosstalk

+0

「実行時間を保証する」とは、ミリ秒未満です。あなたの人生はその約束にかかっていますか?私は十分に構成されたLinux RT_PREEMPTカーネルとシステム上で十分にコード化されたリアルタイムプログラムが、十分なハードウェアを備えていればその期限を迎えるだろうと確信しています。私の感情が十分であるかどうかを判断する必要があります。 –

答えて

1

「リアルタイム安全」とは、限られた時間内に実行することを保証している場合、ほとんどの汎用オペレーティングシステムと同様に、Linuxもリアルタイム安全ではありません。

さまざまなreal-time operating systems(RTOS)がこの種の保証を提供しました。

0

ファイルfunctionsjack_interposerリポジトリから見ることができます。これらはではなく、リアルタイム安全です。 リアルタイム安全であることを尋ねるよりも簡単な質問です。避けるべきである何のための親指の良いルールは以下のとおりです。

  • どれブロッキング同期機能
  • 任意のメモリ割り当て機能
  • どれI/O機能を持っている(ユーザ空間内)
  • アルゴリズムは、 O(n)より大きい複雑さ。ここで、nは入力バッファ内の要素の数です。
関連する問題