我们现在知道丢失的区间被叫做MMIO(Memory Mapped IO,映射IO)的物体占据了,在支持Memory Remapping特性的主板上面,我们可以回收这段内存,只是需要使用Server操作系统,假如坚持要使用32位的话:
32bit Windows Server 2003可以完全管理4GB内存
32bit Windows Server 2003可以完全管理4GB内存
Memory Remapping是如下图所示的一个技术:在CPU寻址的物理空间中,MMIO空间仍然存在,不过在实际插入的内存中,这部分MMIO空间对应的却已经不是原来的空间,而是一部分重新映射内存空间,在CPU想使用这部分内存的时候,CPU将寻址高于4GB内存的这部分空间,内存控制器再对其进行转换,再寻址到实际的内存条。
![]() |
左边为Memory Remapping之后的地址空间分配
由于对MMIO空间部分的地址进行了转换操作,因此这个技术就被称为Memory Remapping技术,实际上就是将32位桌面操作系统缺少的那部分容量“挪动”到4GB以上的空间去了,并且移动之后的地址比实际的内存容量还要高,这样就实际上把被吃掉了的空间完全返还了,因此Server操作系统可以认出并利用4GB。
由于重映射后的新的MMIO空间在4GB以上,因此需要内存控制器支持寻址超过4GB,也就是说,你的处理器要支持PAE(Phiscal Address Extension),物理地址扩展,这是一个基本的前提,那么,这个功能有什么作用呢?