操作系统–内存管理之页替换策略
内存管理使用分页机制时,将逻辑地址分成若干固定大小的页,并不是所有逻辑页对应的物理页都存在与内存中,有些可能会存放在硬盘中,这样做的好处是超越了实际物理内存大小限制,对于暂时不需要用到的页块不加载进内存也减缓了内存的压力。
页替换策略
希望做到的是尽然较少页快被访问时是出于硬盘当中,需要临时加载进内存,因为访问硬盘性能开销太大
只有当某个存在硬盘的页快需要加载进入内存,且此时内存已满时才考虑相应的页替换策略
最优假设
做优的策略是将最晚才会用到的页块换出,这样能保证换出的页块内的内容最近不会被访问
但是很显然是几乎不可能实现的 因为不知道具体那块才是最晚才会用到的
所以考虑页替换策略时都考虑效果能最接近最优加色
最近最少使用LRU
将最近最少使用的页块替换出内存
基于的是程序局部性原理
1:空间局部性,某个页快被访问 相邻的页快可能马上也被访问
2:时间局部性 某个页快被访问 很快可能会再次被访问
如何实现LRU?
需要在内存中维护一个链表,链表按照页面被访问的时间排序,最近的在表头 最晚的在表尾 这样开销太大
可以用过使用特殊的硬件来实现
1:每个页面设置一个移位寄存器
页面被访问时 高位设为1 隔一段时间将每个寄存器右移一位 需要页替换时将寄存器表示整数最小的换出
2:使用特殊栈保存页面号
最近使用的页面页面号放在栈顶 最久未使用的在底部
近似LRU