15

D プログラミング言語に精通しているすべての人に、それを組み込みリアルタイム環境で使用するにはどうすればよいでしょうか? 元の設計がリアルタイム組み込み環境を対象としていないことは理解していますが、この質問は、リアルタイム機能を実現する方法についての質問です。

言語のどの構成要素が不可欠でしょうか?

どの構造が問題になると思いますか?

組み込みシステムで成功した人はいますか?

他の考えや提案は素晴らしいでしょう。

4

2 に答える 2

12

D は、実際にはリアルタイム アプリケーションで使用するためのものではありません。主な理由は、D の一部の言語機能がそのガベージ コレクターに依存しており、D のガベージ コレクターは予測不可能であり、散発的にプログラムを一時停止してガベージを収集するためです。引用

ガベージ コレクションは万能薬ではありません。いくつかの欠点があります。

  • コレクションがいつ実行されるかは予測できないため、プログラムは任意に一時停止できます。
  • コレクションの実行にかかる時間に制限はありません。実際には非常に高速ですが、これは保証できません。
  • コレクションの進行中は、コレクター スレッド以外のすべてのスレッドを停止する必要があります。

ガベージ コレクターなしで D を引き続き使用できます (C/C++ のようにメモリを手動で管理することにより)。これにより、連想配列や、メモリへの参照を解放/返すことなくメモリを内部的に割り当てるライブラリ関数などの特定の言語機能を使用できなくなります。 . D は、メモリ管理に依存しない多くの分野 (メタプログラミングなど) で優れています。

于 2009-07-11T16:08:22.387 に答える
5

リアルタイムは、「リアルタイム」パフォーマンスよりも保証に関するものです。そのため、2 つの可能性があります。

  • GC に依存するライブラリが必要ない場合は、アプリケーションやライブラリをそれに依存させないようにしてください。これを行うには、制御されていない割り当てがあることを常に確認し、できればアプリケーションの実際の実行中に割り当てをまったく行わないようにします (事前に割り当てます)。
  • 他の言語でのリアルタイム GC に関する研究が行われています。ただし、これは些細なことではなく、保証のために支払っても構わないと思っている金額よりも遅くなる可能性があります。要件は、すべての操作に費やされる時間に上限があるように GC が実装されていることと、バリアを挿入することで役立つようにコンパイラが実装されていることです (非 RT 移動 GC でも必要になります)。
于 2009-07-11T20:07:11.890 に答える