进程在将堆和栈内存划分为页面时是否预分配堆和栈内存?如果是,所有这些页面最初都是空的吗?
答案1
进程(或代表进程的内核)预分配地址空间,而不是页面。当进程分配内存时,会分配相应的页表项,并且初始化为指向零页(禁止这样做的架构除外)。零页设置为在读取时返回所有零,在写入时返回错误 - 然后错误处理程序将分配一个单独的物理页。
进程在将堆和栈内存划分为页面时是否预分配堆和栈内存?如果是,所有这些页面最初都是空的吗?
进程(或代表进程的内核)预分配地址空间,而不是页面。当进程分配内存时,会分配相应的页表项,并且初始化为指向零页(禁止这样做的架构除外)。零页设置为在读取时返回所有零,在写入时返回错误 - 然后错误处理程序将分配一个单独的物理页。