页面置换算法
操作系统——FIFO和LRU页面置换算法_fifo页面置换算法-CSDN博客
页面置换,就是把新的页面替换旧的页面
常考的一共三个算法
先进先出算法(FIFO)
思想: 把内存中驻留时间最久的页面淘汰,即淘汰最早进入内存的页面
题型: 采用FIFO算法,给你一个序列x,x,x,x,x,x,x,x,x,x,当物理块为 x 时,计算缺页次数和缺页率
解法: 转为如下表格,物理块有几个就几行
访问页面 | 7 | 0 | 1 | 2 | 0 | 3 | 0 | 4 | 2 | 3 | 0 | 3 | 2 | 1 | 2 | 0 | 1 | 7 | 0 | 1 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
物理块1 | ||||||||||||||||||||
物理块2 | ||||||||||||||||||||
物理块3 | ||||||||||||||||||||
缺页否 |
过程(盯着看物理块):
-
前面m=3列,就直接按序列依次写进去
-
后面的,如果不在物理块里面,看出现最长的数字,就把他替换掉(在纸上写的时候把他划掉,避免看错)
例如第4个2,看物理块中7出现了最长,就把7变成2
-
如果该页面比如第5个0本来就在物理块中,那这列就留空,即为不缺页
详情还请看上面提供的视频,比较清楚
访问页面 | 7 | 0 | 1 | 2 | 0 | 3 | 0 | 4 | 2 | 3 | 0 | 3 | 2 | 1 | 2 | 0 | 1 | 7 | 0 | 1 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
物理块1 | 7 | 7 | 7 | 2 | 2 | 2 | 4 | 4 | 4 | 0 | 0 | 0 | 7 | 7 | 7 | |||||
物理块2 | 0 | 0 | 0 | 3 | 3 | 3 | 2 | 2 | 2 | 1 | 1 | 1 | 0 | 0 | ||||||
物理块3 | 1 | 1 | 1 | 0 | 0 | 0 | 3 | 3 | 3 | 2 | 2 | 2 | 1 | |||||||
缺页否 | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
缺页数: 只要物理块有变动的都是缺页,总列数-空白数
缺页率: 缺页数/总列数
最近最久未使用算法(LRU)
思想: 选择在最近一段时间内最久不用的页面予以淘汰
过程(盯着访问页面看,第一行)
- 前面m=3列,就直接按序列依次写进去
- 后面的
- 如果不在物理块里面,看访问页面(第一行)出现最早同时没被划掉的数,把他替换掉并用笔划掉
- 如果在物理块里面,把访问页面最前面相同的数划掉,然后此列留空
遇到2时,将最前面、出现最久的7替换掉,并将他划掉
访问页面 | 0 | 1 | 2 | 0 | 3 | 0 | 4 | 2 | 3 | 0 | 3 | 2 | 1 | 2 | 0 | 1 | 7 | 0 | 1 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
物理块1 | 7 | 7 | 7 | 2 | ||||||||||||||||
物理块2 | 0 | 0 | 0 | |||||||||||||||||
物理块3 | 1 | 1 | ||||||||||||||||||
缺页否 | √ | √ | √ | √ |
遇到0时,在物理块里面,此列留空,但要把前面的0给划掉,因为使用了
访问页面 | 1 | 2 | 0 | 3 | 0 | 4 | 2 | 3 | 0 | 3 | 2 | 1 | 2 | 0 | 1 | 7 | 0 | 1 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
物理块1 | 7 | 7 | 7 | 2 | ||||||||||||||||
物理块2 | 0 | 0 | 0 | |||||||||||||||||
物理块3 | 1 | 1 | ||||||||||||||||||
缺页否 | √ | √ | √ | √ |
遇到3时,将最前面、出现最久的1替换掉,并将他划掉
访问页面 | 2 | 0 | 3 | 0 | 4 | 2 | 3 | 0 | 3 | 2 | 1 | 2 | 0 | 1 | 7 | 0 | 1 | |||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
物理块1 | 7 | 7 | 7 | 2 | 2 | |||||||||||||||
物理块2 | 0 | 0 | 0 | 0 | ||||||||||||||||
物理块3 | 1 | 1 | 3 | |||||||||||||||||
缺页否 | √ | √ | √ | √ | √ |
依次类推
访问页面 | 7 | 0 | 1 | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
物理块1 | 7 | 7 | 7 | 2 | 2 | 4 | 4 | 4 | 0 | 1 | 1 | 1 | ||||||||
物理块2 | 0 | 0 | 0 | 0 | 0 | 0 | 3 | 3 | 3 | 0 | 0 | |||||||||
物理块3 | 1 | 1 | 3 | 3 | 2 | 2 | 2 | 2 | 2 | 7 | ||||||||||
缺页否 | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
最佳置换算法(OPT)
思路: 替换以后永不访问,未来最长时间不被访问的页面,向后的选择
过程(盯着后面看)
- 前面m=3列,就直接按序列依次写进去
- 后面的
- 如果不在物理块里面,看之后物理块哪个数最久没出现
- 如果在物理块里面,此列留空
例如到第四个2了,看物理块哪个数最久没出现,7最久没出现,所以替换7,依次类推
访问页面 | 7 | 0 | 1 | 2 | 0 | 3 | 0 | 4 | 2 | 3 | 0 | 3 | 2 | 1 | 2 | 0 | 1 | 7 | 0 | 1 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
物理块1 | 7 | 7 | 7 | 2 | 2 | 2 | 2 | 2 | 7 | |||||||||||
物理块2 | 0 | 0 | 0 | 0 | 4 | 0 | 0 | 0 | ||||||||||||
物理块3 | 1 | 1 | 3 | 3 | 3 | 1 | 1 | |||||||||||||
缺页否 | √ | √ | √ | √ | √ | √ | √ | √ | √ |