进程的虚拟内存图
- windows的内存大致示意图
- Linux的内存大致示意图
为什么使用虚拟地址空间
- 为什么要使用虚拟地址空间与物理地址空间映射,解决了什么问题
- 方便编译器和OS安排程序的地址分布
- 程序可以使用一系列连续的虚拟地址来访问物理内存中不相相邻的大内存缓冲区
- 方便进程之间的隔离
- 不同进程使用不同的虚拟地址彼此隔离,一个进程中的代码无法更改另一进程使用的物理内存
- 方便OS使用少的可怜的物理内存
- 程序可以使用一系列虚拟地址来访问大于可用物理内存的内存缓冲区
- 当物理内存的供应量变小时,内存管理器会将物理内存页(通常为4K)保存至磁盘文件
- 数据或代码页会根据需要在物理内存与磁盘之间移动
- 方便编译器和OS安排程序的地址分布