简而言之:一个进程的虚拟地址空间是连续的吗?
我需要了解内核分配给进程的虚拟地址.如果我继续错误,请纠正我.@H_502_3@
在进程创建时,内核将虚拟内存分配给进程,并在task_struct的mm_struct中存储进程的不同段的虚拟地址的开始和结束.@H_502_3@
现在说一个进程已经用完了堆,需要增加堆size.calls brk().@H_502_3@
如果虚拟地址范围是连续的,那么新分配的堆块是否从最初为此进程分配的范围之外提供?或者它是以新块与原始块相邻的方式分配的.如果没有空间(因为内存映射段正在那里),该怎么办?它是如何跟踪的?
如果虚拟地址范围不连续,vm_struct如何跟踪堆(或任何其他段)的地址范围的不同块?@H_502_3@
你可以清楚我的概念吗?@H_502_3@