有换入就应该有换出
1. get_free_page ?
![](https://i-blog.csdnimg.cn/blog_migrate/6a042973d98ed66a9c37aa1807d46e61.png)
2. FIFO页面置换
![](https://i-blog.csdnimg.cn/blog_migrate/b05238c05e77f960dd5ca2394eaa5fea.png)
D换A不合适,因为接下来A也要进行使用,所以应该换最近用不到的C合适
3. MIN页面置换
![](https://i-blog.csdnimg.cn/blog_migrate/01df82935d7aaa0323781d6aa5d254d2.png)
4. LRU页面置换
![](https://i-blog.csdnimg.cn/blog_migrate/450e83457d5236f800c7dac997976812.png)
5. LRU的准确实现,用时间戳
A是第一个时刻使用,B是第二个时刻使用,C是第三个时刻使用,然后又是A第四个时刻使用,然后是B第五个时刻使用,此时对应的是A:4、B:5、C:3
接下来D来了,看哪一个数值最小就换出,所以D换入为6,C换出
接下来过程类似
![](https://i-blog.csdnimg.cn/blog_migrate/859328141e3dbfc5778e04aec0c87121.png)
6. LRU准确实现,用页码栈
![](https://i-blog.csdnimg.cn/blog_migrate/485d99ebd44781fdef0dd015ceac00ba.png)
7. LRU近似实现-将时间计数变为是和否
每次访问一页时,硬件自动设置该为1
当选择淘汰页的时候,扫描该位,发现是1就清0,并向下继续扫描,当发现是0的时候就淘汰
![](https://i-blog.csdnimg.cn/blog_migrate/644b0d05a6f8bc473be5238473cf0b63.png)
8. Clock算法的分析与改造
也就是缺页很少的情况下,每个页都访问过,所有的R=1,此时再淘汰页的时候需要扫描一圈,把R=1置换为R=0,然后淘汰当前指针指的那一页,这样就退化成了FIFO
所以再引入一个指针,速度快的用于清除R位
![](https://i-blog.csdnimg.cn/blog_migrate/f199fca6014f604b48e7af75e3ed214f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/00c084a6b975b294b17bc8209fd4f5e7.png)
9. 小结
实现换入换出为了实现虚拟内存,
实现虚拟内存为了实现段页结合,
实现段页结合为了实现操作系统管理内存
实现管理内存为了实现程序能够载入执行
程序执行就是实现进程
![](https://i-blog.csdnimg.cn/blog_migrate/ebce2b24cf042d8cbb6b6e658aa41e1f.png)