ご覧のとおり、aはvm_area_struct
仮想メモリの領域に関連付けられており、その領域の始まりと終わりをvm_start
指しています。vm_end
私たちはカーネルがヒープのbrk
上部へのポインタを保持していることを知っています。だから私の質問は、malloc
要求されたメモリ割り当てを呼び出すときに利用可能な空きブロックがないと仮定することです。したがって、この場合、malloc
内部呼び出しmmap
またはsbrk
要求されたメモリを取得するとbrk
ポインタが増加/増加し、vm_area_struct
ヒープの変更は次のようになります。たとえば、vm_end
最新を指すように増加しますかbrk
?
答え1
はい、brk
変更された割り当てに一致するようにVMAを変更します。こんなことが起こったdo_brk_flags
:割り当てが可能であることを確認し、既存のVMAをクリーンアップした後、更新によって既存のbrk
VMAが更新されるか(適切なVMAがある場合)、新しいVMAが作成されます。