![](/img/trans.png)
[英]Process memory, GPU shared memory and x86 process on x64 windows address space
[英]Where are threads stored in memory relative to other process structures during execution on a windows x86 system
所以一个过程是:
------ DOS头/ PE头
------可执行代码和静态链接库
------闲置空间?
------一些动态链接的库
------堆的开始
------空闲空间
------栈顶
------栈底
我不确定内核模式堆栈和用户模式堆栈在为进程堆栈分配的虚拟内存中相对于彼此的位置-同样,当多线程进程产生新线程时,为它分配的虚拟内存在哪里?
谢谢!
在x86 Windows上,内核模式模块位于0x80000000
的(虚拟)内存空间中,无法从用户模式进程访问它,并且所有用户模式模块都位于0x80000000
之前的内存空间中。
当产生新的(用户模式)线程时,将在用户模式内存空间(可从用户模式和内核模式访问)和内核模式内存空间(仅可访问)中为其堆栈分配新的内存页从内核模式)。 请注意,有些系统线程没有用户模式上下文(因此在任何用户模式进程中都没有分配堆栈)。 这些线程仅在内核中运行,而不在用户模式下运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.