6.1 最优页面置换算法
(1)功能目标
功能:当缺页中断发生,需要调入新的页面而内存已满时,选择内存当中哪个物理页面被置换。
目标:尽可能减少页面的换入换出次数(即缺页中断的次数)。把未来不再使用的或短期内较少使用的页面换出,通常只能在局部性原理的指导下依据过去的统计数据来进行预测。
页面锁定(frame locking):用于描述必须常驻内存的操作系统的关键部分或时间关键(time-critical)的应用进程。实现方法是,在页表中添加锁定标志位(lock bit)。
(2)最优页面置换算法
基本思路:当一个缺页中断发生时,对于保存在内存中的每一个逻辑页面,计算在它的下一次访问之前,还需要等待多长时间,从中选择等待时间最长的那个,作为被置换的页面。
不过,这只是一种理想情况,在实际中无法实现,因为操作系统无法知道每一个页面要等待多长时间以后才会被再次访问。
可用作其它算法的性能评价的依据(在一个模拟器上运行某个程序,并记录每一次的页面访问情况,在第二遍运行时即可使用最优算法)。
6.2 先进先出算法
6.3 最近最久未使用算法
6.4 时钟页面置换算法
6.5 二次机会法
如果是一次写操作,dirty bit会设置为1.说明内存访问这部分数据时是有写入操作的,和硬盘上原数据不一样,所以要写入硬盘,如果是0,对这部分内存没有写操作,那么说明内存和硬盘上内容是一样的,直接丢掉即可。
目的就是减少对硬盘的写操作。
如果used和dirty bit都是0,那么替换掉;如果其中一个是1,那么把这一位设置为0,指针往下走;如果都是1,那先把used换为0,说明有2次机会。
6.6 最不常用算法
缺点:初始化时访问次数多,而正常时访问次数少的帧。
6.7 Belady现象,LRU,FIFO,Clock的比较
资源多了,反而缺页异常多了。
6.8 局部页替换算法的问题,工作集模型
6.9 两个全局页面置换算法
(1)工作集页置换算法
根据缺页率的变化来调整常驻集的大小。
与工作集置换算法的区别
对页的调整时机不一样。这个方法只在缺页中断时判断是否更改,而后者是在每次换入换出时都做判断。
都与局部页置换算法不一样。这两种涉及到工作集大小的调整。而局部只是在工作集满了之后才考虑换入换出。
全局页置换算法效果比局部页置换算法要好。
6.10 抖动问题
参考文献
https://www.bilibili.com/video/av6538245?p=19