Renesas Synergy™

FAQ 104367 : MR32R V.1.00 Release 1 ~ MR32R V.2.00 Release 2を使用する場合、ヒープ領域とは何に使われるのでしょうか?

Q: 質問

MR32R V.1.00 Release 1 ~ MR32R V.2.00 Release 2を使用する場合、コンフィグレーションファイルのシステム定義にheap_size (ヒープ領域のサイズ) を指定する項目がありますが、ここでいうヒープ領域とは何に使われるのでしょうか? cre/del/exd_tskを使用しなくても必要な領域なのでしょうか?


A: 回答

'システム定義項目で定義するheap_sizeは、cre_tsk,del_tsk,exd_tskを使用する場合にのみ定義します。この定義によって使用される領域はタスクのスタック領域にあたります。また、これらのシステムコールを使用しない場合でも、スタック領域は、同じUSER_STACKセクションに確保されます。

[参考]
heap_size,max_memsizeを定義する場合 (すなわちcre_tskなどを使用する場合) としない場合の違いは以下のとおりです。

cre_tskなどを使用する場合は動的にスタック領域を確保・解放します。そのため、OSで管理するためのデータが必要です。その管理データを生成するのにこれらの定義を行う必要があります。Cre_tskなどを使用しない場合は、スタック領域の動的な確保・解放をしないためそれを管理するための領域は必要ありません。そのため、システム定義でheap_size,max_memsizeを定義する必要はありません。

さらに、heap_size,max_memsizeを定義する場合 (すなわちcre_tskなどを使用する場合)はcre_tskなどを使用する場合は、OSの管理するメモリサイズ管理単位ごとにスタックが確保されるので、実際にタスク生成時に指定したスタックサイズより余分にメモリを消費する事になります。

したがって、heap_size,max_memsizeを定義するしないにかかわらず、使用する領域は同じUSER_STACKを使用しますが、定義する場合(すなわちcre_tskなどを使用する場合) は、余分にメモリが確保されます。

 

適用製品

M32Rファミリ用リアルタイムOS [M3T-MR32R]
他にご質問がございましたら、リクエストを送信してください