内容摘自《系统虚拟化:原理与实现》
地址空间可以分为两种类型: 物理地址空间和线性地址空间
物理地址空间
硬件平台大致分为三个部分:cpu,内存和其他硬件设备。对于cpu来说,内存和硬件设备都是可以利用的资源。这些资源组合在一起,分布在cpu的物理地址空间内。物理地址空间的大小,由cpu实现的物理地址位数所决定,物理地址位数和cpu处理数据的能力没有关系,例如16位的8086cpu具有20位的地址空间。例子:假设一个平台,cpu的物理地址空间为4GB,有512MB内存,其他硬件的IO寄存器被映射到512MB的IO地址空间内,则该平台的物理地址空间可能如下图所示
线性地址空间
物理地址空间只有一个,但是每个程序都认为自己独享整个平台的硬件资源,为了让多个程序有效的相互隔离和利用物理地址空间的资源,线性地址空间的概念被引入。和物理地址空间一样,线性地址空间的大小取决于cpu实现的线性地址位数,例如实现了32位线性地址的cpu具有4GB的线性地址空间。需要注意的是,线性地址空间的大小和物理地址空间的大小没有必然关系,例如intel 的 PAE平台就具有4GB的线性地址空间,64GB的物理地址空间。