mallocが呼び出されると、vm_area_structは変更されますか?

mallocが呼び出されると、vm_area_structは変更されますか?

Linux仮想メモリ領域に関する教科書を読んでいます。 ここに画像の説明を入力してください。

ご覧のとおり、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をクリーンアップした後、更新によって既存のbrkVMAが更新されるか(適切なVMAがある場合)、新しいVMAが作成されます。

おすすめ記事