組み込みシステムにおけるメモリ確保について大学生です。読んでいる本に次の記述がありました。「 RTOSではメモリの動的確保/解放機能を提供するものがあります。事前にタスクごとのメモリ使用量を見積もれない場合は便利な機能です。 一方でこのメモリの動的確保、解放機能には副作用があります。1つはオーバヘッドがあることです。このオーバヘッド時間も「メモリの空き状態やアルゴリズムによって一定ではないことがあります。要求されるリアルタイム性と比載して余裕があるのかどうかを見極めておく必要があります。もしリアルタイム性の要求がきつい場合は事前の動的メモリの確保、解放の使用は断念せざるを得ません。 副作用のもう1つは動的確保時に、確保に失敗する可能性があることです。つまり必要なメモリが他のタスクに占有されてしまい、いざメモり確保となったときに確保できない状態になる可能性があるということです。こうなると今メモリを確保しているタスクがメモリを解放してくれるまでイベント待ち状態になるしかありません。もちろんリアルタイム性は保証できなくなります。 このような状況を避けるためには、タスクの動作開始時に必要なメモリを使保しておくという方法があります。タスクが動作する前か、動作時に確保しておくかの違いとなるので、リアルタイム性を意識する場合には事前にメモリを量を確保しておくことが重要です。」これは結局、動的確保よりも静的確保の方がいいよってことですか?

1件の回答

回答を書く

1146144

2026-02-06 03:20

+ フォロー

\u0026gt;「実行する前」か、「実行時に確保しておく」か、について、同じじゃないの?と思うのですが、、

「実行する前に」というのは、
プログラムを開始する前に必要なスペースを全て確保してしまい、あのと作業はその中でやり繰りする。という意味です。

「実行時に確保しておく」というのは、
プログラムを実行中に、個々の作業に応じて、その都度、その作業に必要なスペースを計算して確保してから、作業を開始する。
どの作業をやるかに応じて、柔軟にメモリの使用量を変化させながら、プログラムを実行してゆく感じです。

後者の場合、確保に失敗したり、確保に時間が掛かったりする可能性があり、各作業にかかる時間が見通せなくなる。(プログラムの処理時間の保証が出来なくなる)

という事の説明です。

理想は、初めに確保しておく方が良いですが、その代わり、使うか使わないかも分からないメモリを、動作中ずっと確保しておく必要があるので、メモリリソースを圧迫します。
(途中で追加確保しない以上、予め最大限に使う可能性のある十分なメモリの確保が必要です)

うったえる有益だ(0シェアするブックマークする

関連質問

Copyright © 2026 AQ188.com All Rights Reserved.

博識 著作権所有