功能:当缺页中断发生时,须要调入新的页面而内存已满时,选择内存当中那个物理页面被替换
目标:尽量减小页面的换进换出次数(即缺页中断的次数)算法
把将来再也不使用的或短时间内较少使用的页面换出
最优页面置换算法,是不可能实现
的,由于它是须要知道将来的,因此最优页面置换算法,只能看成页面置换算法中的一个理想标准。shell
咱们其余的页面置换算法是经过局部性原理
的指导下经过过去的数据,对将来进行预测
,能够经过和最优页面置换算法进行比较,来测评其余页面置换算法的效果。性能
基本思路:
选择在内存中驻留时间最长的页面并淘汰
缺点:
性能较差,调出的页面有多是常常须要被访问的页面,而且有Belady现象。FIFO算法不多单独使用。学习
FIFO的实例:
注意最开始的a、b、c、d进入内存的顺序!.net
基本思路:
当一个缺页中断发生时,选择最久未使用的那个页面并淘汰。
特色:
它是对最优页面置换算法的一个近似,其依据仍是程序的局部性原理。code
LRU实例:
blog
它是一种LRU的近似,对FIFO的一种改进
实例:
产生缺页中断,咱们要在存在内存里的页中选一个,放入硬盘,因此存在位确定都是1,最开始指向page0,最早进入内存那个,而后像时钟同样依次找到每一个page,
若used bit=1,则将其置为0,used bit=0,则将此页放入硬盘!
图片
在原来的clock方法中,再加入一位dirty bit,标志这个页是否写入过,写入时,此位会置1,没写过的页,硬盘和此页内容一致,因此不须要再回写到磁盘,写过的页,须要回写到磁盘,开销较大。内存
二次机会法,意味着有两次机会,这两次机会是给最近被写入过的页的,只要used bit和dirty bit都为0,才能被替换。
get