计算机的物理地址空间
Last updated
Last updated
机器刚刚启动的时候,物理内存是按照下面这样划分的:
第一代PC
基于16位Intel 8088
处理器,只能寻址1MB的物理内存。所以早期PC的物理地址空间将从0x00000000
开始,到0x000FFFFF
结束,而不是0xFFFFFFFF
(32位)。标记为Low Memory
的640KB
空间是早期PC能够使用的唯一随机访问内存(RAM
)。
从0x000A0000
到0x000FFFFF
的384KB
区域(也就是640KB
到1MB
之间的区域)由硬件预留,用于特殊用途,如视频显示缓冲区(显存)和一些系统固件。这个保留区域中最重要的部分是Basic Input/Output System (BIOS)
(下面会介绍这个概念),它占用了从0x000F0000
到0x000FFFFF
的64KB
区域。
在早期的PC
中,BIOS
保存在真正的只读存储器(ROM
)中,但现在的pc
将BIOS存储在可更新的闪存中。BIOS
主要负责对系统进行基本的初始化操作,如激活显卡、检查内存安装量等。执行这个初始化之后,BIOS从一些适当的位置(比如硬盘)加载操作系统,并将机器的控制权传递给操作系统。(划重点,BIOS的作用)。
随着技术的发展,Intel
最终使用80286
和80386
处理器突破了1MB
的寻址,它们分别支持16MB
和4GB
的物理地址空间,但PC
架构师仍然保留了原始的1MB
物理地址空间布局,以确保与现有软件的向后兼容性。因此,现代pc
在物理内存中有一个从0x000A0000
到0x00100000
的一个洞,将RAM
划分为 “low memory”
或 “conventional memory”
(前640KB
)和 “extended memory”
(其他的部分)。
最近的x86
处理器可以支持超过4GB
的物理RAM
,所以RAM
可以扩展到0xFFFFFFFF
以上。在这种情况下,BIOS
必须安排在系统RAM
的32位可寻址区域的顶部留下第二个洞,为这些32位设备的映射留下空间(实际上是虚拟内存)。