¿vm_area_struct cambia al llamar a malloc?

¿vm_area_struct cambia al llamar a malloc?

Estaba leyendo un libro de texto que habla sobre las áreas de memoria virtual de Linux. ingrese la descripción de la imagen aquí

Podemos ver que a vm_area_structestá relacionado con un área en la memoria virtual vm_starty vm_endapunta al principio y al final del área.

Sabemos que el kernel mantiene un brkpuntero que apunta a la parte superior del montón. Entonces mi pregunta es, digamos que no hay bloques libres disponibles cuando llamamos mallocpara asignar la memoria solicitada, por lo que en este caso, mallocllame internamente mmapu sbrkobtenga la memoria solicitada, por lo tanto, brkel puntero se incrementará/crecerá, luego el montón cambiará vm_area_structcomo bueno, por ejemplo, vm_end¿se incrementará para señalar lo último brk?

Respuesta1

Sí, brkmodifica los VMA para que coincidan con la asignación modificada. Esto sucede endo_brk_flags: después de comprobar que la asignación es posible y limpiar los VMA existentes, la actualización brkda como resultado la actualización de un VMA existente (si existe un VMA apropiado) o la creación de un nuevo VMA.

información relacionada