32位-64位和内存关系

上传人:宝路 文档编号:20892154 上传时间:2017-11-22 格式:DOCX 页数:5 大小:84.54KB
返回 下载 相关 举报
32位-64位和内存关系_第1页
第1页 / 共5页
32位-64位和内存关系_第2页
第2页 / 共5页
32位-64位和内存关系_第3页
第3页 / 共5页
32位-64位和内存关系_第4页
第4页 / 共5页
32位-64位和内存关系_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《32位-64位和内存关系》由会员分享,可在线阅读,更多相关《32位-64位和内存关系(5页珍藏版)》请在金锄头文库上搜索。

1、首先需要明确一下,32 位也好,64 位也好,这个概念是同时存在于软件、系统、主板芯片组和 CPU 四个方面的。对于操作系统到底最多能支持多少内存这个问题,其实不是操作系统一方面说了算的。目前不少人可能对于 CPU 的寻址概念有些模糊,认为 CPU 的寻址范围与其平常概念上的位宽直接联系,即所谓的 32 位 CPU 寻址范围为 232,64 位的则是 264。其实这是一个错误的概念,对于 CPU 来说,这个的位宽一般是指是其数据总线位宽,和寻址能力并无直接联系。至于一个 CPU 的寻址位宽是多少则要看其具体的设计。而对于主板芯片组这方面来说,目前的 Intel x86 平台采取的是内存映射技术

2、(Memory-Mapped I/O, MMIO),也是 PCI 规范的一部分,也就是将 I/O 设备放置在内存空间而非 I/O 空间,从处理器和操作系统看来,访问一个硬件也就是访问内存空间,因此主板的芯片组也存在一个寻址位宽的问题,当然也有可能成为内存总量的一个瓶颈。当然了,现在的新主机一般都不会有这个问题了。说完了硬件层面的概念,我们继续看操作系统是如何与 CPU 进行“交流”的:Windows 对于内存的管理,采取的是分页机制,每个进程都占有一定的虚拟地址空间,在这个机制下,这个空间一部分被映射到物理内存,一部分映射到虚拟内存(存在于硬盘上的一个或多个空间),还有一部分则可能什么也没有映

3、射。同时,在 CPU 中,会设置一个“分页标志位”,如果 CPU 在运行指令时发现这个分页标志被设置,则会根据页目录和页表中的对应关系,将指令中的虚拟地址转换为实际的物理地址。目前的 32 位系统分页大小为 4K,寻址位宽为 32 位,因此,第 0 个分页的地址是0x00000000,第 1 个分页地址从 0x00001000 开始,以此类推。所以,在目前的 32位系统中,用到了 32 位中的高 20 位来标记物理页,剩余的 12 位用于添加一些标记信息等。这样,就可以支持到最大(220)*4096=4GB 内存,除掉我们上面所说的为 I/O 保留的内存映射空间和操作系统本身保留的内存,剩下的

4、就是我们在任务管理器里能看到的可用空间。上图显示的是我的电脑目前的内存分配情况32 位系统下的悲剧,这个图是从网上搜罗来的如何突破 32 位系统的 4G 限制其实 PAE 并不是一个新鲜东西,也不是操作系统弄出来的特性为了对 PC 服务器提供大内存的支持,Intel 采取了物理地址扩展(Physical Address Extension, PAE)的技术,将现有的 IA32 架构的处理器的地址总线从 32 位扩展到了 36位,这样从硬件层面来看,可以支持最多 64G 的内存。至于操作系统要如何实现对多出来的这几位进行内存地址映射,简要的说就是将原有的分页表结构改成了三层结构。根据微软官方的说

5、法,下述系统支持开启 PAE 功能:Windows 7 (32 bit only)Windows Server 2008 (32-bit only)Windows Vista (32-bit only)Windows Server 2003 (32-bit only)Windows XP (32-bit only)Windows 2000 Datacenter ServerWindows 2000 Advanced Server具体实现步骤可以见微软官方文章:http:/ Ready4GB 的小程序,可以自动完成改造工作。开启 PAE 的兼容性问题和收益关于开启 PAE 以后的兼容性问题和是否

6、有效可能是大家最为关心的问题了,根据微软官方的说法,PAE 开启后,可能会造成部分驱动程序的兼容性出现问题。事实上根据我自己的体验,本人的 NV 540M 双显卡就无法正确工作在 PAE 模式下,查证后发现所有的Nvidia 的双显卡都是不支持 PAE 的,网络上也有少数人反应开启 PAE 后会造成蓝屏等现象,是否有相关性尚无明确验证。所以具体情况要尝试后才能确定了。说到收益,网络上是众说纷纭,很多人认为即便开启了 PAE,单个 32 位程序也无法分配到超过 4G 的空间,因此无效。先简要了解一下应用程序运行时的内存使用情况是什么样的:因为不同用户使用环境不会完全一样,很显然应用程序的开发人员

7、不可能在设计阶段去确定这个程序有多少内存空间可以使用。所以,正如前文所述,现在的应用程序运行时,都会分配到一个“虚拟”的内存空间,所有的内存请求都是在这个虚拟地址内完成的,然后再根据具体的内存映射关系,将这些虚拟地址转换为具体的内存地址,或者是上的硬盘空间,在这些地方读写具体的数据。因此关于上述说法,前半句是对的,对于普通的 32 位程序来说,无论工作在何种环境下,其始终都只能分配到最多 4G 虚拟内存地址(0x00000000-0xFFFFFFFF ),而这4G 内存,其中有 2G 是操作系统保留的核心内存,另外 2G 才是程序的自由空间。这是32 位程序的机制所决定的,即便我们将这些程序拿

8、到现有的 64 位系统下运行,它们也只能分配到 4G 内存,2G 可用内存。应用程序内存分配示例但是上述机制的存在绝不代表这 PAE 对于整个操作系统的性能没有帮助,更多的内存有利于操作系统对多任务进行内存分页,可以提高系统在多任务下的表现。总之,单个程序不能利用超过 4G 内存,不代表整个系统不能完全利用。另外,对于支持 PAE 的几个系统来说,它们同时还支持另外一项技术:地址窗口扩展(Address Windowing Extensions, AWE)。这是一个程序设计时的接口,它可以使得32 位程序访问到超过 4GB 的内存,目前 SQL Server 是内置支持这项技术的。这几个系统还有另外一个开关:/3GB,这个开关可以使得在给应用程序分配内存的时候,仅保留 1G 的核心内存,而将 3G 的内存保留为应用程序可用空间。但是由于这个开关缩减了核心内存空间,可能会造成系统的稳定性下降,因此建议还是用 AWE 功能进行替换。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号