1、地址空间
用一个非负整数的集合:{0, 1, 2, ... }表示地址空间
2、线性地址空间
如果地址空间中的整数是连续的,则称为一个线性地址空间
大多数情况下我们只考虑线性地址空间
3、物理内存空间
将物理内存按照字节(8bit)为单位进行划分
并用从0开始的线性整数表示各个字节单位组成物理内存空间
例如对于1GB的物理内存,可用的物理内存空间为:{0, 1, 2, ... 2^30-1 }
4、地址总线空间
对于n位的地址总线,使用集合:{0, 1, 2, ... 2^n-1 }表示地址总线空间
16位cpu使用20位的地址总线可以访问1M的空间
32为cpu使用32位的地址总线可以访问4G的空
开启PAE后使用36位的地址总线可以访问达64G的空间
在硬件设计阶段,将地址总线空间与物理内存空间进行一对一的映射
从而通过地址总线上不同的时序实现对物理内存的访问
其中0xfffffff0映射到BIOS的ROM
部分地址总线映射到图形卡等
5、I/O地址空间
x86 cpu通过16位I/O总线与I/O设备相联
使用集合:{0, 1, 2, ... 65535 }表示I/O地址空间
6、页空间
对于4KB页
使用4096的倍数组成集合:{0, 4096, 8192, ... }表示页空间
页空间映射到相应的可用物理内存空间,从而实现对物理内存的管理
7、虚拟地址空间
使用集合:{0, 1, 2, ... 2^32-1 }表示4G的虚拟地址空间
每个进程都含有一个独立的虚拟地址空间
开启分页后,通过页表和MMU实现虚拟地址空间到地址总线空间的映射
操作系统通过硬件和软件的结合,建立各个地址空间之间的映射关系
从而实现对物理资源的管理和使用