меняется ли vm_area_struct при вызове malloc?

меняется ли vm_area_struct при вызове malloc?

Я читал учебник, в котором говорилось о виртуальных областях памяти 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 обновление brkприводит либо к обновлению существующей VMA (если существует соответствующая VMA), либо к созданию новой VMA.

Связанный контент