組み込みシステムで動的データ構造を使用しないほうがよいのはなぜですか? [closed] 質問する

組み込みシステムで動的データ構造を使用しないほうがよいのはなぜですか? [closed] 質問する

来年大学で履修する組み込みシステムの単元では、組み込みシステム プログラムでは動的データ構造は好ましくないことを学びます。しかし、講義ノートにはその理由が書かれていません。

現在、私は中規模の組み込みシステム コントローラーに取り組んでいます。主に、AVR169MEGA 用の「Butterfly」デモ ボードの周辺機器を活用しています。サーボと ESC を制御するために 4 つの PWM 信号を生成しました。また、9 セグメント LCD 画面も提供します。

今のところ、USART シリアル経由で受信した命令を保存するのにキューよりも良い方法は思いつきません。特に、LCD 画面に表示する文字列など、受信するデータが不明な量になるまで待機する必要がある場合に有効です。

では、組み込みシステムのマイクロコントローラで動的データ構造を使用しないのはなぜでしょうか? メモリが厳しく制限された環境にあり、malloc が成功していることを確認する必要があるだけでしょうか?

ベストアンサー1

組み込みシステムで malloc (または同等のもの) を使用しない理由はいくつかあります。

  • あなたがおっしゃったように、突然記憶が失われないようにすることが重要です。
  • 断片化 - 組み込みシステムは何年も稼働することがあり、断片化によりメモリが大幅に浪費される可能性があります。
  • 実際には必要ありません。動的メモリ割り当てにより、同じメモリを再利用して、異なる時間に異なる処理を実行できます。組み込みシステムは、常に同じ処理を実行する傾向があります (起動時を除く)。
  • 速度。動的メモリ割り当ては、比較的遅い (メモリが断片化されるとさらに遅くなる) か、かなり無駄が多い (例: バディ システム) かのいずれかです。
  • 異なるスレッドや割り込みに対して同じ動的メモリを使用する場合、割り当て/解放ルーチンでロックを実行する必要があり、これにより割り込みを十分な速さで処理できない問題が発生する可能性があります。
  • 動的なメモリ割り当ては、特に組み込みシステムで利用できる一部の限定的/原始的なデバッグ ツールでは、デバッグが非常に困難になります。静的にメモリを割り当てると、メモリが常にどこにあるかがわかるため、状態を検査するのがはるかに簡単になります。

何よりも素晴らしいのは、メモリを動的に割り当てなければ、メモリ リークが発生しないことです。

おすすめ記事