现代操作系统多采用虚拟内存,它为每个进程提供了一个非常大的、一致的和私有的地址空间。虚拟内存提供了三个关键能力:
- 在磁盘和主存之间来回传送数据
- 为每个进程提供了一致的地址空间,简化了内存管理
- 保护了每个进程的地址空间不被其它进程破坏
操作系统将虚拟空间划分为两部分,一部分为内核空间,一部分为用户空间。 对于32位操作系统,它的寻址空间(虚拟地址空间)为4G,其中3~4G属于内核空间。
CPU通过虚拟地址来访问主存,这个虚拟地址在被送到主存之前会先转换成一个物理地址,将虚拟地址转换成物理地址被称作地址翻译。地址翻译需要CPU硬件和操作系统之间的配合。CPU上叫做内存管理单元MMU,利用存放在主存中的查询表来动态翻译虚拟地址,该表的内容由操作系统管理。
进程地址空间