Re: 内核文件ntoskrnl.exe, ntkrnlpa.exe, ntkrnlmp.exe, ntkrpamp.exe到底有什么区别?

Windows内核调试

内核文件ntoskrnl.exe, ntkrnlpa.exe, ntkrnlmp.exe, ntkrpamp.exe到底有什么区别?


肥猫 2009-03-16, 02:43 上午
在网上搜了很久也没有一个比较权威些的说法,不知道这个四个文件到底有什么区别呢?

是不同的操作系统对应的不同的内核文件?

还是在同一个版本的操作系统下根据硬件配置的不同采用的不同的内核文件?

希望大家能给我解答一下,谢谢。

前段时间,我在用windbg调试的时候发现,同样是安装winxp的机器,有的机器启动时加载的是ntoskrnl.exe这个文件,有的机器启动时加载的是ntkrnlpa.exe这个文件。我实在是很迷惑了。

Re: 内核文件ntoskrnl.exe, ntkrnlpa.exe, ntkrnlmp.exe, ntkrpamp.exe到底有什么区别?


格蠹老雷 2009-03-16, 13:02 下午
简单来说,是同一套源代码根据编译选项的不同而编译出四个可执行文件,分别用于:
ntoskrnl - 单处理器,不支持PAE
ntkrnlpa - 单处理器,支持PAE
ntkrnlmp - 多处理器,不支持PAE
ntkrpamp - 多处理器,支持PAE
在Vista之前,安装程序会在安装时根据系统的配置选择两个多处理器或者两个单处理器的版本复制到目标系统中。从Vista开始,会统一使用多处理器版本,因为多处理器版本运行在单处理器上只是效率稍微低一些。(如果有《软件调试》,可以读一下8.4节P185)

Re: 内核文件ntoskrnl.exe, ntkrnlpa.exe, ntkrnlmp.exe, ntkrpamp.exe到底有什么区别?


Coding 2009-03-16, 14:08 下午
在 Windows® Internals, Fourth Edition 第二章的Table 2-2. Multiprocessor-Specific vs. Uniprocessor-Specific System Files 也有比较详细地描述

Re: 内核文件ntoskrnl.exe, ntkrnlpa.exe, ntkrnlmp.exe, ntkrpamp.exe到底有什么区别?


肥猫 2009-03-16, 22:55 下午
哦。谢谢Raymond,Coding。
了解了。
非常感谢!

最近一段时间在研究驱动开发,正准备去买一本《软件调试》。

Powered by Community Server Powered by CnForums.Net