一、覆盖
把程序分割成许多片段,称为覆盖。
二、虚拟内存
虚拟内存的基本思想是:
- 每个程序拥有自己的地址空间,这个空间被分割成多个块,每一块乘坐一页。
- 每一页有连续的地址范围。
- 这些页被映射到物理内存,但并不是所有的页都必须在内存中才能运行程序。
- 当程序运行到一部分在物理内存中的地址空间时,由硬件立即执行必要的映射;
- 当程序运行到的一部分不再物理内存中的地址空间时,由操作系统负责将缺失的部分装入物理内存并重新执行失败的命令。
三、转换检测缓冲区TLB
1.多级页表
2.倒排页表
四、页面置换算法
- 最佳置换算法:选择淘汰的页面僵尸永不使用的,或者是最长时间内不再被访问的页面。是理论上的算法
- 最近未使用页面置换算法:NRU算法随机地从类编号最小的非空类中挑选一个页面淘汰。
- 先进先出页面置换算法:FIFO。性能较差
- 时钟页面置换算法:clock
- 最近最少使用页面置换算法:LFU置换未使用时间最长的页面。
五、局部性原理
局部性原理是指CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中。
六、页面大小
最有页面大小P=根号下2se
假设进程的平均大小是s个字节,页面大小是p个字节,每个页表项需要e个字节。
七、抖动thrashing
每隔几条指令就会导致页面错误的程序称为抖动,也成为颠簸。
一个好的置换算法,应具有较低的页面更换频率。
八、负载控制
事实上,一旦所有进程的组合工作集超出了内存容量,就可能发生颠簸。
即使使用分页,交换也是需要的。