FreeRTOS
では、ヒープは、ユーザーが変更できるファイルH
に定義されているサイズ(コールがheapSize
)を持つグローバルな配列に過ぎません。この配列は、画像のBSS
セクションの一部として作成される初期化されていないグローバル配列であり、読み込み時に0が埋め込まれ、この配列からメモリの各割り当てが行われ、割り当てられたメモリのすべてのアドレスはこの配列のオフセットLinuxヒープ割り当て
ので、メモリサイズの最大利用のために、私たちは、プログラム全体のData
、Text
とBSS
領域の大きさを近似することができる、とheapSize = RAM_size - Text_size - Data_size - BSS_size
のようなものにヒープサイズを定義します。
相当する実装がLinux OSであることを知りたいと思います。 Linuxは特定のRAMをスキャンし、実行時にそのサイズを決定できますか? Linuxはヒープを管理するための同等のデータ構造を持っていますか?もしそうなら、最初にこのデータ構造にどのようにメモリを割り当てますか?
StackOverflowのQ&Aフォーマットでは、Linuxのメモリ管理ははるかに複雑です。最も重要なのは、Linuxは仮想メモリOSであり、カーネルとユーザランドのアドレス空間を分割し、それぞれに異なるメモリ割り当て方式を使用しています。 – datenwolf
http://www.johnchukwuma.com/training/UnderstandingTheLinuxKernel3rdEdition.pdf –
あなたのプログラムは '/ proc/meminfo'を読んで実際のメモリと使用されているメモリの量を判断できます。 – stark