进程实现了操作系统中任务的的抽象,而且为了保证抽象性,进程的内存也进行一层抽象,进程可以使用完整且连续的虚拟地址空间,而不需要关注物理内存。虚拟内存令这一切成为了可能。
原始时代更多是直接和物理内存打交道,因为最早更多的是专有系统,还没有操作系统,进程的概念,一块单片机上跑着一个固定的程序,直接和物理内存交互也没什么大问题。但是对于计算机来说,虚拟地址则是必不可少的,通过 MMU(Memory management unit)把虚拟地址(Virtual Address, VA)转换为物理地址(Physical Address, PA),再由此进行实际的数据传输
主要有三个方面的考虑
- 可以更有效率的使用内存:使用 DRAM 当做部分的虚拟地址空间的缓存
- 简化内存管理:每个进程都有统一的线性地址空间
- 隔离地址控件:进程之间不会相互影响;用户程序不能访问内核信息和代码
为程序构建完一个Perfect World,给了他们辽阔的疆土后,另外就是给程序员赋予管理疆土的能力了。
主要有 - 内存动态管理
- 垃圾回收(可选)