1

所以一个过程是:

------DOS头/PE头

------可执行代码和静态链接库

------闲置空间?

------一些动态链接的库

------堆的开始

------闲置空间

------栈顶

------栈底

我不确定内核模式堆栈和用户模式堆栈在为进程堆栈分配的虚拟内存中相对于彼此的位置 - 另外,当多线程进程产生新线程时,为其分配的虚拟内存在哪里?

谢谢!

4

1 回答 1

1

在 x86 Windows 上,内核模式模块位于从 的(虚拟)内存空间中0x80000000,用户模式进程无法访问该内存空间,并且所有用户模式模块都位于之前的内存空间中0x80000000

当一个新的(用户模式)线程被生成时,在用户模式内存空间(用户模式和内核模式都可以访问)和内核模式内存空间(只能访问)中为其堆栈分配一个新的内存页面从内核模式)。请注意,有些系统线程没有用户模式上下文(因此在任何用户模式进程中都没有分配堆栈)。这些线程纯粹在内核中运行,不在用户模式下运行。

于 2013-02-16T16:16:36.930 回答