已知请求分页系统中某作业存在如下页面走向:3、4、2、3、1、3、5、4、3、2、5、4。 若分配给该作业的物理块数为3,请分别使用OTP算法、FIFO算法和LRU算法计算访问过程中所发生的页面置换次数、缺页次数和缺页率。
时间: 2023-12-28 22:12:34 浏览: 230
首先需要定义一下几个概念:
- 物理块:计算机中的内存被分成若干个大小相等的部分,每个部分称为一个物理块,通常大小为2的整数次幂。
- 页面:将作业分成若干个大小相等的部分,每个部分称为一个页面,通常大小也为2的整数次幂。
- 缺页:当一个页面在物理内存中不存在而需要被访问时,就称为发生了缺页。
- 页面置换:当物理内存中没有空闲的物理块可供分配时,就需要进行页面置换,即将一个已经在内存中的页面替换出去,腾出一个物理块来给新的页面使用。
OTP算法(最优页面置换算法):
根据请求分页系统的页面置换原理,当出现缺页时,需要选择一个页面进行替换。OTP算法的思想是,选择未来最长时间不再被访问的页面进行替换,从而使得缺页率最小。
对于给定的页面走向,我们可以预测出接下来的访问情况。因此,可以使用OTP算法进行模拟,得到访问过程中所发生的页面置换次数、缺页次数和缺页率。
使用OTP算法进行页面置换的结果如下:
物理块数:3
页面走向:3、4、2、3、1、3、5、4、3、2、5、4
| 序号 | 页面 | 页框0 | 页框1 | 页框2 | 缺页次数 | 置换次数 |
| ---- | ---- | ----- | ----- | ----- | -------- | -------- |
| 1 | 3 | 3 | | | 0 | 0 |
| 2 | 4 | 3 | 4 | | 0 | 0 |
| 3 | 2 | 3 | 4 | 2 | 1 | 0 |
| 4 | 3 | 3 | 4 | 2 | 0 | 0 |
| 5 | 1 | 1 | 4 | 2 | 1 | 1 |
| 6 | 3 | 1 | 4 | 3 | 1 | 1 |
| 7 | 5 | 1 | 4 | 3 | 1 | 1 |
| 8 | 4 | 1 | 4 | 3 | 0 | 0 |
| 9 | 3 | 1 | 4 | 3 | 0 | 0 |
| 10 | 2 | 1 | 2 | 3 | 1 | 1 |
| 11 | 5 | 1 | 2 | 5 | 1 | 1 |
| 12 | 4 | 1 | 4 | 5 | 1 | 1 |
缺页次数:6
置换次数:5
缺页率:50%
FIFO算法(先进先出页面置换算法):
FIFO算法的思想是,选择最先进入内存的页面进行替换,从而保证页面在内存中的停留时间最长,尽可能地减少缺页率。这种算法可以使用一个队列来实现。
使用FIFO算法进行页面置换的结果如下:
物理块数:3
页面走向:3、4、2、3、1、3、5、4、3、2、5、4
| 序号 | 页面 | 页框0 | 页框1 | 页框2 | 缺页次数 | 置换次数 |
| ---- | ---- | ----- | ----- | ----- | -------- | -------- |
| 1 | 3 | 3 | | | 0 | 0 |
| 2 | 4 | 3 | 4 | | 0 | 0 |
| 3 | 2 | 3 | 4 | 2 | 1 | 0 |
| 4 | 3 | 3 | 4 | 2 | 0 | 0 |
| 5 | 1 | 1 | 4 | 2 | 1 | 1 |
| 6 | 3 | 1 | 4 | 2 | 0 | 0 |
| 7 | 5 | 1 | 4 | 5 | 1 | 1 |
| 8 | 4 | 4 | 1 | 5 | 1 | 1 |
| 9 | 3 | 4 | 1 | 3 | 1 | 1 |
| 10 | 2 | 2 | 1 | 3 | 1 | 1 |
| 11 | 5 | 2 | 5 | 3 | 1 | 1 |
| 12 | 4 | 4 | 5 | 3 | 0 | 0 |
缺页次数:6
置换次数:5
缺页率:50%
LRU算法(最近最少使用页面置换算法):
LRU算法的思想是,选择最近最少使用的页面进行替换,从而尽可能地减少缺页率。这种算法可以使用一个栈来实现。
使用LRU算法进行页面置换的结果如下:
物理块数:3
页面走向:3、4、2、3、1、3、5、4、3、2、5、4
| 序号 | 页面 | 页框0 | 页框1 | 页框2 | 缺页次数 | 置换次数 |
| ---- | ---- | ----- | ----- | ----- | -------- | -------- |
| 1 | 3 | 3 | | | 0 | 0 |
| 2 | 4 | 3 | 4 | | 0 | 0 |
| 3 | 2 | 3 | 4 | 2 | 1 | 0 |
| 4 | 3 | 4 | 3 | 2 | 1 | 1 |
| 5 | 1 | 1 | 3 | 2 | 1 | 1 |
| 6 | 3 | 3 | 1 | 2 | 1 | 1 |
| 7 | 5 | 3 | 1 | 5 | 1 | 1 |
| 8 | 4 | 4 | 1 | 5 | 1 | 1 |
| 9 | 3 | 3 | 4 | 5 | 1 | 1 |
| 10 | 2 | 2 | 4 | 5 | 1 | 1 |
| 11 | 5 | 2 | 5 | 4 | 1 | 1 |
| 12 | 4 | 2 | 4 | 5 | 0 | 0 |
缺页次数:6
置换次数:5
缺页率:50%
从上述结果可以看出,三种页面置换算法的缺页次数、置换次数和缺页率都相同,这是因为页面走向比较简单,三种算法都能够有效地减少缺页率。但在实际情况下,页面走向通常是不可预测的,不同的页面置换算法可能会产生不同的效果。因此,在实际应用中需要根据具体情况选择合适的页面置换算法。
阅读全文