虚拟内存
原理:虚拟内存可以增大系统的内存空间。进程在运行时,它只载入进程经常执行的部分代码到物理内存,那些不常用的部分代码存储到外部存储设备上,当需要执行不常用的部分代码时再将其载入到物理内存中。
这样做的好处是:
- 程序可用的内存空间变大;
- 方便进程间通过共享内存进行通信;
- 系统函数库可以被多个进程共享;
实现:虚拟内存的实现主要需要按需调页、写时复制技术,为了实现这两个技术必须要开发页置换算法和帧分配算法。
按需调页:初始时进程所在页不完全载入到物理内存中,只有执行需要时才载入。
写时复制:对于采用系统调用 fork 创建的进程开始时可能不需要按需调页,父进程与子进程共享一个页面,如果其中任何一个进程执行写操作时,才创建此共享页的副本。
页置换算法:当出现页错误时,如果没有空闲页那么需要使用页置换来获得空闲帧。
帧分配:如何在各个进程中分配空闲帧,总体来说分为全局置换和局部置换。