一、起因
内存相对于寄存器速度慢,所以内存和寄存器之间有 cache
硬盘比内存容量大,但是速度慢
磁带比硬盘容量还大
计算机系统中,尤其是多道程序运行下内存不够用
二、覆盖技术
1、目标
较小的可用内存中运行较大的程序。常用于多道程序系统,与分区存储管理配合使用
2、原理
3、缺点
覆盖模块从外存装入内存,实际上是以时间延长换取空间节省
三、交换技术
1、目标
多道程序在内存中时,让正在运行的程序或需要运行的程序获得更多的内存资源
2、原理
暂时不能运行的程序送到外存
3、存在的问题
4、与覆盖技术的区别
覆盖:发生在一个程序里,程序员需要手动指定逻辑关系;
交换:发生在程序之间,由操作系统内部完成,不需要程序员设置
四、虚存技术
1、目标
覆盖技术做的更好:由操作系统自动完成
交换技术做的更好:只对进程的部分内容在内存和外存之间进行交换
2、程序的局部性原理
3、基本概念
可以在页式或段式内存管理的基础上实现
4、基本特征
5、实现 —— 虚拟页式存储管理
(1)页表
(2)虚拟页式存储管理技术
(3)页表表项
(4)缺页中断
(5)后备存储
五、页面置换算法
1、功能
当缺页中断发生,需要调入新的页面而内存已满时,选择内存中哪个物理页面被置换
2、目标
尽可能地减少页面的换进换出次数(即缺页中断的次数)
3、最优页面置换算法(局部页面置换算法1)
(1)基本思路:距离下一次访问等待时间最长的逻辑页面作为置换的页面
(2)理想情况,可作为其他算法的性能评价的依据
4、先进先出算法 FIFO(局部页面置换算法2)
(1)基本思路
(2)性能较差,并且有 belady 现象
5、最近最久未使用算法 LRU(局部页面置换算法3)
(1)基本思路
选择最久未使用的那个页面,并淘汰之
(2)最优页面置换算法的近似,基于程序的局部性原理
(3)LRU 算法需要记录各个页面使用时间的先后顺序,开销比较大
(4)实现方法
6、时钟页面置换算法(局部页面置换算法4)
基本思路:
(1)LRU的近似,FIFO的改进
(2)装入内存页面的页表项的访问位初始化为0,被访问置为1;各个页面组织成环形链表,指针指向最老页面
7、二次机会法
(1)修改 clock 算法,使它允许脏页总是在一次时钟头扫描中保留下来,同事使用脏位和使用位来指导置换
(2)Enhanced Clock algorithm
used | dirty | used | dirty | |
---|---|---|---|---|
0 | 0 | —> | replace page | |
0 | 1 | —> | 0 | 0 |
1 | 0 | —> | 0 | 0 |
1 | 1 | —> | 0 | 1 |
8、最不常用算法 LFU(局部页面置换算法5)
(1)基本思路
当一个缺页中断发生时,选择访问次数最少的那个页淘汰之
(2)实现方法
对每个页面设置一个访问计数器,每当一个页面被访问时,该页面的访问计数器加一。在发生缺页中断时,淘汰技术值最小的那个页面
(3)LRU和LFU的区别
LRU考察的是多久未访问,时间越短越好;而LFU考察的是访问的次数或频度,访问次数越多越好
9、Belady 现象
(1)现象
在采用 FIFO 算法时,有时会出现分配的物理页面数增加,缺页率反而提高的异常现象
(2)原因
FIFO 算法的置换特征与进程访问内存的动态特征是矛盾的,与置换算法的目标是不一致的(即替换较少使用的页面)
因此,被它置换出去的页面并不一定是进程不会访问的
(3)LRU页面置换算法没有Belady现象
10、LRU、FIFO、Clock 的比较
(1)LRU、FIFO 本质上都是先进先出的思路
(2)LRU 是针对页面的最近访问时间来排序、开销大
(3)FIFO 是针对页面进入内存的时间来排序、开销小
(4)如果一个页面进入内存后没有被访问,那么它的最近访问时间就是它进入内存的时间。即 LRU 退化为 FIFO