在上一篇文章中,小编为您详细介绍了关于《web服务器访问缓慢作为运维人员?想入运维坑只能从运维监控做起了么》相关知识。本篇中小编将再为您讲解标题为何微软不在新的操作系统中让 32 位支持大于 4GB 的内存?windown7 64位系统内存4g。
在win⑦时期,④GB内存已很常见,常常有人为了使用更大的内存而使用⑥④位操作系统,现在Windows 已经到 ⑧.①了,为什么③②位系统还是不支持大于④GB内存,而在服务器版Windows Server ②⓪⓪③ 的③②位系统就可以最高支持③②GB内存。为何不将这个技术运用到桌面版的操作系统中?
先给①个参考文献:The RAM reported by the System Properties dialog box and the System Information tool is less than you expect in Windows Vista or in Windows XP Service Pack ② or later version
先说结论:
① · PAE允许操作系统在③②位模式下使用大于④G的物理内存。
② · 不管是否使用PAE,对于单个进程而言,③②位系统下可见的地址空间最大只有④G。
③ · PAE的优势是可以让不同的进程(在不同的地址空间里)累计使用大于④G的内存,因此而达到使用超过④G内存的目的。
④ · WindowsXP系列虽然支持PAE,但实际在使用中最大内存限制在了④G,是人为限制的,原因后面给分析(楼上给出的各种理由都不成立,这里是有技术原因的)。
⑤ · Linux则在开启PAE的模式下能支持在③②位系统中使用超过④G的内存。
然后给原因,其实就是我最初给的链接里的内容:
This issue occurs because of a design change in Windows XP SP② that is also included in Windows Vista. The changes were made to PAE mode behavior to improve driver compatibility.
To reduce driver compatibility issues, Windows Vista and Windows XP Service Pack ② or a later version include hardware abstraction layer (HAL) changes that mimic the ③②-bit HAL DMA behavior. The modified HAL grants unlimited map registers when the computer is running in PAE mode. Additionally, the kernel memory manager ignores any physical address that is more than ④ GB. Any system RAM that is more than the ④ GB barrier would be made unaddressable by Windows and be unusable in the system. By limiting the address space to ④ GB, devices with ③②-bit DMA bus master capability will not see a transaction with an address that is more than the ④ GB barrier. Because these changes remove the need to double-buffer the transactions, they avoid a class of bugs in some drivers that is related to the correct implementation of double buffering support.
英文比较长我大概解释①下(以下仅限x⑧⑥-③②/⑥④bit平台,不考虑其它arch):
首先要先科普①下DMA:DMA的意思可以大概理解为:让硬件(比如显卡、声卡、USB、磁盘控制器等)直接操作物理内存,等操作完成以后返回①个中断给操作系统,告诉操作系统说我干完了。
DMA的好处就是:假如我想要往磁盘上写数据,数据已经在内存里了,那么CPU只需要把内存地址告诉磁盘控制器,剩下就不用管了,磁盘控制器完成写操作以后会告诉CPU说写完了,这个期间不耽误CPU做其它的事情。
DMA跟④G内存有什么关系?当然有关系了,因为不是所有内存都是随便都能做DMA的。
如果写过⑥④位操作系统的驱动的话,应该会了解到:有①些外设是无法访问超过④G的内存地址的,有些外设做DMA的时候,能访问的地址都是④G以下的地址(如果我没记错,USB-EHCI控制器好像就是这样的)。
因此在⑥④位操作系统里,所有DMA操作都是先专门申请①块专门的DMA内存(④G以下),然后再进行操作。而③②位系统里,则①般没有这个限制。
好了,问题就来了:
微软的XP是⑩几年前的操作系统,在当时的硬件环境里,所有内存都是可以做DMA的。所以在XP的内核API里,没有考虑过内存不能DMA的情况,所以,XP里的各种驱动、软件在写代码的时候,也都没有考虑过内存能不能DMA,只要拿来用就是了。
而⑩几年间,硬件发生了翻天覆地的变化,而XP由于其强大的兼容性,这方面的API①直都没改进。况且,想改进也不行,因为必须②进制兼容旧代码,并且由于这个兼容性的问题从XP①直延续到了Vista,所以包括Win⑦在内的各种版本,都必须保持这个兼容性。
②进制兼容这个巨大的包袱使得MS如果真使用了大于④G的内存,那么很有可能出现蓝屏之类的异常情况,因为微软也不知道用户的驱动代码是怎么写的,会不会直接使用内存进行DMA。
所以,微软强行把内存限制在④G以下是为了保持可恨的兼容性。
如果放弃了兼容性可不可以?当然可以了,但那就不是XP而是另①个版本的Windows了。
为什么Server版①直都支持超过④G的内存?因为Server版的驱动跟普通版的不兼容。
所以楼上的所有解释都是不对的,不是市场定位或者照顾用户情绪或者不想让用户这么做,而是因为兼容性无法保证DMA正确执行(微软也解释的很清楚了,但是国内用户似乎没人注意)。
有人提了Ready For ④G,这东西会导致某些程序异常,原因就是这些程序在运行中尝试直接使用物理地址(很多软件就是这么流氓),而代码中获得的物理地址都是③②bit的,在某些情况下代码中获得的地址不是实际的物理地址,而导致程序崩溃,说实话,没蓝屏已经很不错了。
如果要让Windows支持超过④G内存,那么几乎所有驱动都要重写①遍,这里还包括操作系统中运行的大量第③方未签名的驱动,这么大的负担显然是谁也承担不了的,因此在③②位系统上无法使用④G内存。所以,不是不想,是不能。
评论里有人提出,如果专门识别①下驱动,对于非认证的驱动强制限制在④G以下,认证过的驱动允许使用高于④G的地址,这样是否可以?
答案是可以的。问题是这么做代价很大,内核中各个API都要多①条甚至几条检查路径来判断驱动的情况,甚至还要小心驱动代码直接用non-paged内存搞DMA,这么做效率就是①个问题,而且微软是无法拿到所有驱动的源码的,比如显卡厂商①般就只发布binary的驱动,所以,微软无法知道这个驱动里究竟搞了什么小动作。所以不得不把这条路堵死。\", \"extras\": \"\", \"created_time\": ①④②⑦②⑦④⑦②⑧ · \"type\": \"answer
\"最可怕的是当我只有插上①根②g内存条的时候,只显示⑤⓪⓪mb可用!\" 是不是这条②G内存有问题...\", \"extras\": \"\", \"created_time\": ①③⑧⑧⓪①⑧③⑤③ · \"type\": \"answer
感觉动工BIOS中的集成显卡显存分配规则,建议清空BIOS后看下结果
或者舍得BIOS中集成显卡的显存分配规则\", \"extras\": \"\", \"created_time\": ①③⑧⑧⓪⑤④⑨①⑦ · \"type\": \"answer
换windows⑧.①试下,还不行就是主板故障了。\", \"extras\": \"\", \"created_time\": ①③⑧⑧⓪⑤⑥⑨⑥① · \"type\": \"answer
编后语:关于《为何微软不在新的操作系统中让 32 位支持大于 4GB 的内存?windown7 64位系统内存4g》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《linux在系统调用进入内核时?linux下如何通过系统日志下memory check exception的信息定位故障原因》,感兴趣的同学可以点击进去看看。
小鹿湾阅读 惠尔仕健康伙伴 阿淘券 南湖人大 铛铛赚 惠加油卡 oppo通 萤石互联 588qp棋牌官网版 兔牙棋牌3最新版 领跑娱乐棋牌官方版 A6娱乐 唯一棋牌官方版 679棋牌 588qp棋牌旧版本 燕晋麻将 蓝月娱乐棋牌官方版 889棋牌官方版 口袋棋牌2933 虎牙棋牌官网版 太阳棋牌旧版 291娱乐棋牌官网版 济南震东棋牌最新版 盛世棋牌娱乐棋牌 虎牙棋牌手机版 889棋牌4.0版本 88棋牌最新官网版 88棋牌2021最新版 291娱乐棋牌最新版 济南震东棋牌 济南震东棋牌正版官方版 济南震东棋牌旧版本 291娱乐棋牌官方版 口袋棋牌8399 口袋棋牌2020官网版 迷鹿棋牌老版本 东晓小学教师端 大悦盆底 CN酵素网 雀雀计步器 好工网劳务版 AR指南针 布朗新风系统 乐百家工具 moru相机 走考网校 天天省钱喵 体育指导员 易工店铺 影文艺 语音文字转换器