vm_area_struct muda ao chamar malloc?

vm_area_struct muda ao chamar malloc?

Eu estava lendo um livro que fala sobre áreas de memória virtual do Linux insira a descrição da imagem aqui

podemos ver que a vm_area_structestá relacionado a uma área da memória virtual vm_starte vm_endaponta para o início e o fim da área.

Sabemos que o kernel mantém um brkponteiro que aponta para o topo da pilha. Então minha pergunta é, digamos que não haja blocos livres disponíveis quando chamamos mallocpara alocar a memória solicitada, então neste caso, mallocchame internamente mmapou sbrkpara obter a memória solicitada, portanto brko ponteiro será incrementado/crescido, então o heap vm_area_structmudará como bem, por exemplo, vm_endserá incrementado para apontar para o mais recente brk?

Responder1

Sim, brkmodifica os VMAs para corresponder à alocação alterada. Isso acontece emdo_brk_flags: após verificar se a alocação é possível e limpar os VMAs existentes, a atualização brkresulta na atualização de um VMA existente (se existir um VMA apropriado) ou na criação de um novo VMA.

informação relacionada