因此,当您打开 PE (.exe) 或调用 CreateProcess(来自 Win32 API)时,将遵循以下过程:
文件头、图像扇区以及 exe 链接的 DLL 都映射到进程自己的虚拟内存中。
CPU 从程序起始地址开始执行。
所以我的问题来了 - PE 映像中的所有指令都使用相对于它自己的私有地址空间(虚拟内存)的地址,该地址以 0 开头。有时这个内存会被 Windows 在辅助内存(HDD)的某个地方分页. CPU如何找出RAM中的真实物理地址?此外,Windows 如何通过优先级从一个线程切换到另一个线程,以支持多线程以及当 CPU 未完全使用时发送空闲指令?在所有这些发现之后,我开始认为实际上存储在 PE 文件中的机器代码并不是真正由 CPU 直接执行,而是在某些 Windows 托管环境中执行?这是真的吗?如果是这样,这不会减慢执行速度吗?
编辑:好的,所以问题应该改写如下:“Windows 进程是在核心布局程序中执行还是直接在 CPU 上执行?”。我得到了我想要的答案,所以无论如何问题都解决了。