在32bit操作系统下用好4GB物理内存

最近内存价格一路下滑
直接导致很多朋友或打算增加内存或新装机采购4GB内存
CPU都支持64bit了
然而很多人并不愿意直接使用64bit操作系统
甚至有不少人装了64bit的Vista后又卸掉重新回到32bit时代
重装完后问题来了
仔细查看系统内存怎么不是4GB
少了很多嘛
有些是3GB有些是3.25GB甚至有的少于3GB
究竟是XP不支持4GB内存还是买到的内存有问题
其实这个现象是由软件伙同硬件一并作案造成的极其恶劣的后果

首先说软件方面
主要是操作系统的责任
其实像XP 32bit这样的操作系统设计上是支持4GB内存的(32bit版本XP最高支持4GB内存)
但是在整个IA32系统上位于4GB以下的内存地址在系统中被分为很多块(4GB到64GB同样被划成多块但不是这里需要讨论的)
其中主要包括了系统可用内存及PCI设备内存地址范围
操作系统中显示内存不足4GB的主要原因来源于系统地址中PCI设备的内存地址范围
这个范围是以256为基础成倍设定的
该PCI设备地址范围包括了系统BIOS/芯片组/IO/PCI区域/VGA等等等等
这些设备都是通过实际内存地址来通信的
该类地址被定义为内存映射IO空间(MMIO)
由于MMIO地址所占用的就是4GB系统地址中部分物理内存所对应的地址
此时被其占用的对应地址的原物理内存部分就完全无效了
这就是软件方面大多32bit Windows操作系统为什么在使用4GB内存时只能看见3到3.25GB的罪魁祸首

然后是硬件方面
在物理内存槽中镶着4GB内存的时候正好包含到系统地址中第一个PCI设备地址范围(MMIO)
正如上面操作系统所要求的
对MMIO的寻址部分被内存控制路由到对应的设备上
而这些设备使用的地址正是4GB系统地址中对应物理内存地址的一部分
此时它所对应的应该是实际物理内存的那部分地址就没有了(被MMIO取代)
附和操作系统来完成这一罪恶行径的正是内存控制器

那么失踪的内存还有没有办法捞回来呢
答案是肯定的
需要说明的是捞回这部分内存有前提条件
同样要从软硬件两方面下手

软件方面
NT核心的操作系统所要完成的是对PAE的支持和4GB内存调整优化
而后支持PAE的操作系统会通过AWE使每个程序的虚地址范围可以突破2GB的限制最高到64GB(64bit操作系统暂无此类问题)
那么操作系统方面解决问题的关键在于支持PAE
Win2000开始微软的操作系统基本都支持PAE
4GB内存调整优化通过/3G启动参数来启用(本质上还是对PAE的支持)

硬件方面
要捞回这部分内存就是要将这些被MMIO占用的系统地址重新被路由到对应的内存上
为了解决这个问题引入了一种叫内存重映射(Memory Remapping)的技术
Memory Remapping技术最早是在服务器上使用的
在内存重映射启动后CPU要使用这部分被MMIO占用的物理内存时会通过PAE向高于4GB的空间寻址
此时CPU自身并不具备鉴别哪些是MMIO哪些是重映射的部分的能力
需要内存控制器将其重新转换到实际物理内存上
由此才能捞回那部分失踪的内存
这个累活完全是属于内存控制器独享的(自作自受)

那么只要你使用的是Win2000之后的操作系统
能否捞回它们的关键就在于是否支持内存重映射技术(Memory Remapping)
换句话来说
如果你用的是Intel系统那就需要确定你主板北的桥芯片是否支持Memory Remapping(Intel目前将内存控制器集成在北桥芯片中)
如果你用的是AMD的系统的话那么就需要先确定你的CPU是否支持Memory Remapping(AMD目前设计的内存控制器集成在CPU中)
从掌握的资料来看Intel支持该技术的桌面芯片组是i955X之后的所有支持8GB内存的型号
AMD支持该技术的桌面CPU为Athlon 64(不含闪龙)以上支持8GB内存的型号
同时我们必须在BIOS内打开Memory Remapping的选项才能正式开始捞回失踪的内存
至此
内存打捞工作告一段落

值得留意的是目前一些主板并不独立提供提供Memory Remapping开关但在其出厂时都已经被设置为打开了
还需要注意的是一些中低端主板产品为了尽可能降低成本而没有设置该功能
第三方芯片组中nVidia/ATI的高端双卡系统具备该功能
ULI和VIA芯片组不详
在支持和打开Memory Remapping技术的32bit操作系统上通常能使用到3.5GB以上的物理内存(仍然不会完全显示出4GB的)

虽然说Memory Remapping就是专门用来解决那些系统地址被设计在4GB内的操作系统中的内存丢失现象
但究其原因还是因为大多32bit操作系统无法完全利用4GB物理内存和其支持的系统内存最高只有4GB有关
同样的设计也出现在XP各个32bit版本/Windows 2000各版本(高级服务器版本除外)/windows 2003标准版/Vista各个32bit版本中
XP 64bit和Vista各个64bit版本/Windows 2003除了标准版外/Windows 2000只有高级服务器版无此问题

转载于:https://blog.51cto.com/www0401/90296

在32bit操作系统下用好4GB物理内存相关推荐

  1. 在 4GB 物理内存的机器上,申请 8G 内存会怎么样?

    作者:小林coding 计算机八股文刷题网站:https://xiaolincoding.com/ 大家好,我是小林. 看到读者在群里讨论这些面试题: 其中,第一个问题「在 4GB 物理内存的机器上, ...

  2. plsq卸载 删除注册表、_win10操作系统下oracle11g客户端/服务端的下载安装配置卸载总结...

    win10操作系统下oracle11g客户端/服务端的下载安装配置卸载总结 一:前提 注意:现在有两种安装的方式 1. oracle11g服务端(64位)+oracle客户端(32位)+plsql(3 ...

  3. Linux操作系统下Moodle平台的搭建

    转自http://fuwu.aieln.com/info/show/711/ 软件下载地址(Moodle2.2.2(Build:20120312)):http://bbs.aieln.com/arti ...

  4. linux grup进入操作系统,Linux操作系统下GRUB引导过程及原理

    Linux操作系统下GRUB引导过程及原理 作者: 硅谷动力 CNETNews.com.cn 2008-09-09 19:53:52 GRUB是一个多重启动管理器.GRUB是GRand Unified ...

  5. DOS 实方式下直接访问4GB 内存

    十堰市湖北汽车工业学院电气工程系(442002) 陈家祺 摘 要: 分析了80486CPU 的寻址机制, 提出了在实方式下直接访问4GB 内存的策略和C 程序设计方法. 关键词: DO S 程序 扩展 ...

  6. c语言程序能够在不同的操作系统下运行,这说明c语言具有很好的,程序设计(C)作业一(有答案)...

    程序设计(C)作业一 1.C语言程序的执行,总是起始于(). A.程序中的第一条可执行语句 B.程序中的第一个函数 C.main函数 D.包含文件中的第一个函数 2.以下叙述不正确的是(). A.一个 ...

  7. 解决不同操作系统下git换行符一致性问题

    解决不同操作系统下git换行符一致性问题 参考文章: (1)解决不同操作系统下git换行符一致性问题 (2)https://www.cnblogs.com/warking/p/5718648.html ...

  8. Linux操作系统下 NAND FLASH驱动程序框架

    当我们需要在操作系统上读写普通文件的时候,总是需要一层层往下,最终到达硬件相关操作,当然底层设备大多数都是块设备 NAND FLASH就作为一个最底层的块设备. 而我们写驱动,就是要构建硬件与操作系统 ...

  9. Linux操作系统下DHCP服务器配置方法介绍

    Linux操作系统下DHCP服务器配置方法介绍 1.安装dhcp软件包 #rpm –ivh dhcp-3.0.1-12_EL.i386.rpm 2.配置文件dhcpd.conf 由于dhcpd.con ...

  10. 在Windows操作系统下,由操作系统分配的内存就叫做堆

    堆(Heap) 上面的工作是编译器做的,即程序员并不参与堆栈的维护.但上面已经说了,堆栈相当于在编译时期分配内存,因此一旦计算好某块内存的偏移,则这块内存就只能那么大,不能变化了(如果变化会导致其他内 ...

最新文章

  1. 专访|黄铁军:人工智能不会以人为中心,但不要为此失落
  2. Beats Studio3录音师手机音源配置,听出好声音,听出震撼效果!勇士限量款评测!
  3. Intent传递对象
  4. 王道计算机考研 数据结构 (查找-下)
  5. IO多路复用概念介绍
  6. python 逻辑运算符 数据类型_python02-运算符和基本数据类型
  7. Java 多个引用类型变量引用同一个对象
  8. 如何用Java代码在SAP Marketing Cloud里创建contact数据
  9. centos下升级jdk版本
  10. git ssh配置文件 服务器_【GIT】日常开发中的这些Git技巧你知道吗?
  11. JSP中文件上传的关键步骤
  12. 我想批量删除专题内最古老的100篇文章
  13. SQLServer - 约束
  14. 深度学习2.0-7.tensorflow的高阶操作之数据统计
  15. 高通处理器命名中文化
  16. 服务器2008系统驱动3008驱动,sas3008驱动
  17. 95后妈妈8成是全职,爸爸去哪了?
  18. Http请求报文解析
  19. JAVA根据时间增加1天
  20. 软件架构模式之管道-过滤器模式--分析

热门文章

  1. HCIA 学习笔记 准备考试
  2. 有效沟通要解决的三个基本方面
  3. Qt设置字体类型及添加字体文件
  4. windows虚拟机给C盘扩容
  5. 中国本土八大会计师事务所简介
  6. 学习网站及工具地址汇总
  7. linux下如何给home目录分配空间,Linux 分配/home的磁盘空间给根目录
  8. SiamRPN++详解:论文翻译
  9. 分享各类优秀与设计师制作公司相关的资源网站
  10. 网络投票专家投票计算_安全专家说在线投票是一个坏主意。 这就是为什么。