系统实际可扩展的内存.docx

系统实际可扩展的内存.docx

ID:51713125

大小:37.19 KB

页数:3页

时间:2020-03-15

系统实际可扩展的内存.docx_第1页
系统实际可扩展的内存.docx_第2页
系统实际可扩展的内存.docx_第3页
资源描述:

《系统实际可扩展的内存.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、win732位其实早就支持128G内存,只是微软故意限制罢了操作系统, 内存, Windows, 逻辑推理, 源代码如何证明这个事情呢,最终证据这种东西,除非把Windows源代码放到你面前,否则一切证据都是浮云。不过呢,我还是可以给你证明32位操作系统能完全利用4G以上内存,至于你看不看得懂和相不相信,就不是我能决定的了。现在我从三个方面给你证明。分别是逻辑推理、内部原理、自己动手。首先,从逻辑推理的角度看。首先我们知道,Windows内核的实体是ntoskrnl.exe(当然还可能是ntkrnlpa.exe,ntkrnlmp

2、.exe,ntkrpamp.exe),操作系统的基本机制在Kernel层实现,内存管理器在Executive层实现。换句话说,操作系统能识别和利用多少内存是内核决定的。首先承认一个事实。32位WindowsClient版本,例如xp/vista/7,在正常情况下最大只能识别4G内存。而同样是32位的WindowsServer版本,例如2000/2003/2008却可以识别高达128G的内存。你可能说内核不一样,那么以WindowsServer2008为例,其内核和WindowsVistaSP1一模一样(这种常识就不要找我要证据了

3、,请自己查微软知识库或自己试验)。为何一个不支持4G另一个又支持呢?这显然不是32位操作系统本身的技术限制,肯定是其他方面的限制。这样我们就从逻辑推理的方法推断出32位操作系统肯定是支持4G以上内存的。那么,到底是什么因素限制了32位Client版本Windows的可用内存大小呢?下面从内部原理的角度分析。很多人说32位操作系统不支持4G以上内存的理由是:32位处理器寻址能力有限,只能寻2的32次方那么多址,正好4G。那么,说这句话的人,请你告诉我,什么是“址”?难道是物理地址吗?错!这里的“址”,指的是虚拟地址。在Window

4、sNT内核中,进程之间是相互隔离的,各个进程拥有独立的“地址空间”,32位操作系统中,每个进程拥有独立的4GB虚拟地址。注意是每个进程的地址空间容量只有4G,而不是总的物理内存大小只有4G,请区分清楚!用户态应用程序无需访问真实的物理地址,而是通过访问虚拟地址,接受操作系统的调度,经过翻译后访问真实的物理地址。这是操作系统内存管理的精髓。事实上,早在英特尔奔腾2的时代,处理器就从硬件层面支持了物理地址扩展(PAE)。页式地址转换技术又原来的两级页表变成了三级,这样就可以让虚拟地址映射到更多的物理地址。WindowsNT内核中,早

5、就原生支持了PAE。Windows安装程序会自动选择内核的PAE版本ntkrnlpa.exe或ntkrpamp.exe。所以,Windows根本就是真真正正支持4G以上内存的操作系统。那么,WindowsNT6.x是怎样限制可用内存最大容量的呢?事实上,Windows的许可信息保存在了注册表HKEY_LOCAL_MACHINESystemControlSet001ControlProductOptions中,在Windows启动过程中,ZwQueryLicenseValue被调用,用以读取ProductPolicy中的Ke

6、rnel-WindowsMaxMemAllowedx86,这个值限定了特定版本的Windows能够使用的最大物理内存。我们看一下内核ntkrnlpa.exe的部分反汇编结果:7Cxx        jl    default8B45FC    mov    eax,dwordptr[ebp-4]85C0        test  eax,eax74yy        je    defaulteax寄存器储存了ZwQueryLicenseValue的结果,根据查询到的版本许可,超过限制的内存部分将直接被ntos吃掉。你可能会想修

7、改注册表键值ProductPolicy来突破限制,不过很遗憾,微软早就防着你这一手呢,ExGetLicenseTamperState/ExSetLicenseTamperState会检查LicenseValue是否被篡改。不过如果Patch内核,直接修改ntkrnlpa.exe,是可以绕过检查,完全利用到4G以上内存的。这也是现在市面上一些所谓“破解”的原理。最后,我们自己动手亲自看看。这里需要用到微软出品的调试器windbg。比如我的机器安装4G内存,Windows显示可用内存2.98G。我们用windbg来看看怎么回事。lk

8、d>ddMmHighestPhysicalPage8088b124  000bf7ff000bf3990000004000000000lkd>ddMmNumberOfPhysicalPages8088b128  000bf39900000040000000007

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。