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를 정리한 후 업데이트를 brk통해 기존 VMA가 업데이트되거나(적절한 VMA가 있는 경우) 새 VMA가 생성됩니다.

관련 정보