【一道问题引发的一连串问题】
答案:C选项,为什么是5次?采用其他页面置换算法呢?
目录
1. 缺页中断
- 在请求分页系统中,可以通过查询页表中的状态位来确定所要访问的页面是否存在于内存中。每当所要访问的页面不在内存时,会产生一次缺页中断,此时操作系统会根据页表中的外存地址在外存中找到所缺的一页,将其调入内存;
- 缺页中断是由于所要访问的页面不存在于内存时,由硬件所产生的一种特殊的中断;
- 缺页本身是一种中断。
2. 置换算法
2.1 先进先出置换算法(First In First Out,FIFO)
- 优先淘汰最早进入内存的页面,即在内存中驻留时间最久的页面;
【上述问题详解】
一个进程获得三个主存块的使用权,若该进程访问页面的次序是{1 3 2 1 2 1 5 1 2 3},采用FIFO算法,缺页数是6次。
访问页面 | 1 | 3 | 2 | 1 | 2 | 1 | 5 | 1 | 2 | 3 |
---|---|---|---|---|---|---|---|---|---|---|
物理块 | 1 | 3 | 2 | 2 | 2 | 2 | 5 | 1 | 1 | 3 |
物理块 | 1 | 3 | 3 | 3 | 3 | 2 | 5 | 5 | 1 | |
物理块 | 1 | 1 | 1 | 1 | 3 | 2 | 2 | 5 | ||
缺页中断 F = 6 | Y | Y | Y | Y | Y | Y |
缺页中断率为:6 / 10 * 100% = 60 %
【Belady异常】
- FIFO算法会产生当所分配的物理块数增大而页故障数不减反增的异常现象,故称为Belady异常,FIFO算法可能出现Belady异常;
- LRU和OPT算法不会出现Belady异常。
2.2 最近最久未使用置换算法(Least Recently Used,LRU)
- 利用局部性原理,根据一个作业在执行过程中过去的页面访问历史来推测未来的行为。它认为过去一段时间里不曾被访问过的页面,在最近的将来可能也不会再被访问;
- 实质:当需要淘汰一个页面时,总是选择在最近一段时间内最久不用的页面予以淘汰。
【上述问题详解】
一个进程获得三个主存块的使用权,若该进程访问页面的次序是{1 3 2 1 2 1 5 1 2 3},采用LRU算法,缺页数是5次。
访问页面 | 1 | 3 | 2 | 1 | 2 | 1 | 5 | 1 | 2 | 3 |
---|---|---|---|---|---|---|---|---|---|---|
物理块 | 1 | 3 | 2 | 1 | 2 | 1 | 5 | 1 | 2 | 3 |
物理块 | 1 | 3 | 2 | 1 | 2 | 1 | 5 | 1 | 2 | |
物理块 | 1 | 3 | 3 | 3 | 2 | 2 | 5 | 1 | ||
缺页中断 F = 5 | Y | Y | Y | Y | Y |
- 缺页中断率为:5 / 10 * 100% = 50 %
2.3 最佳置换(Optimal,OPT)
- 置换以后不再被访问或在将来最迟才会被访问的页面,缺页中断率最低。
- 但很难估计哪一个页面是以后不再使用或在最长时间以后才会用到的页面,所以该算法是不能实现的。
【上述问题详解】
一个进程获得三个主存块的使用权,若该进程访问页面的次序是{1 3 2 1 2 1 5 1 2 3},采用OPT算法,缺页数是5次。
- 注意:最后不会访问或最后才被访问的页面总是放在最下面的内存块中;
- 当第一次访问页面5时,产生第4次缺页中断,根据OPT算法,淘汰页面3,因为它1、2、3三个页面中,是在将来最迟才会被页面访问的页面。
- 内存块从上到下依次存放最先访问的页面。
访问页面 | 1 | 3 | 2 | 1 | 2 | 1 | 5 | 1 | 2 | 3 |
---|---|---|---|---|---|---|---|---|---|---|
物理块 | 1 | 3 | 2 | 1 | 2 | 1 | 5 | 1 | 2 | 3 |
物理块 | 1 | 3 | 2 | 1 | 2 | 1 | 5 | 1 | 2 | |
物理块 | 1 | 3 | 3 | 3 | 2 | 2 | 5 | 1 | ||
缺页中断 F = 5 | Y | Y | Y | Y | Y |
- 缺页中断率为:5 / 10 * 100% = 50 %