在虚拟存储系统中,若进程在内存中占4央(开始时为空),采用最佳页面淘汰算法,当执行访问页号序列为1、2、3、4、5、3、4、1、6. 7、8、7、8、9、7、8、9、5、4、5、4、2.时,将产生()次缺页中断。
时间: 2023-12-09 09:04:19 浏览: 20
我们可以用一个页表来记录进程中每一页的状态,其中0表示该页不在内存中,1表示该页在内存中。
根据最佳页面淘汰算法,当需要淘汰一页时,应该选择未来最长时间内不再被访问的页。因此我们需要预测未来的访问模式。
根据给定的访问序列,我们可以列出以下的访问模式:
| 当前访问页 | 未来访问页 |
| :--------: | :--------: |
| 1 | 2 |
| 2 | 3 |
| 3 | 4 |
| 4 | 5 |
| 5 | 3 |
| 3 | 4 |
| 4 | 1 |
| 1 | 6 |
| 6 | 7 |
| 7 | 8 |
| 8 | 7 |
| 7 | 8 |
| 8 | 9 |
| 9 | 7 |
| 7 | 8 |
| 8 | 9 |
| 9 | 5 |
| 5 | 4 |
| 4 | 5 |
| 5 | 4 |
| 4 | 2 |
我们假设内存大小为4页,开始时所有页都不在内存中。那么对于每一次访问,我们都需要检查该页是否在内存中,如果不在,就需要进行一次缺页中断,并选择一个页来淘汰。
下面是每一次访问的情况:
1. 访问页1,发现不在内存中,产生1次缺页中断。将页1加入内存中。
```
1 0 0 0
```
2. 访问页2,发现不在内存中,产生1次缺页中断。将页2加入内存中。
```
1 2 0 0
```
3. 访问页3,发现不在内存中,产生1次缺页中断。将页3加入内存中。
```
1 2 3 0
```
4. 访问页4,发现不在内存中,产生1次缺页中断。将页4加入内存中。
```
1 2 3 4
```
5. 访问页5,发现不在内存中,产生1次缺页中断。根据未来的访问模式,需要淘汰页1或页2,它们都不再被访问,因此选择页号较大的页2淘汰。将页5加入内存中。
```
0 2 3 4
```
6. 访问页3,发现已经在内存中,不产生缺页中断。
```
0 2 3 4
```
7. 访问页4,发现已经在内存中,不产生缺页中断。
```
0 2 3 4
```
8. 访问页1,发现不在内存中,产生1次缺页中断。根据未来的访问模式,需要淘汰页2或页3,它们都不再被访问,因此选择页号较大的页3淘汰。将页1加入内存中。
```
0 2 1 4
```
9. 访问页6,发现不在内存中,产生1次缺页中断。根据未来的访问模式,需要淘汰页2、页4或页5,它们都不再被访问,因此选择页号较大的页5淘汰。将页6加入内存中。
```
0 2 1 6
```
10. 访问页7,发现不在内存中,产生1次缺页中断。根据未来的访问模式,需要淘汰页2、页4或页5,它们都不再被访问,因此选择页号较大的页4淘汰。将页7加入内存中。
```
0 7 1 6
```
11. 访问页8,发现不在内存中,产生1次缺页中断。根据未来的访问模式,需要淘汰页7或页1,它们都不再被访问,因此选择页号较大的页7淘汰。将页8加入内存中。
```
0 8 1 6
```
12. 访问页7,发现已经在内存中,不产生缺页中断。
```
0 8 1 6
```
13. 访问页8,发现已经在内存中,不产生缺页中断。
```
0 8 1 6
```
14. 访问页9,发现不在内存中,产生1次缺页中断。根据未来的访问模式,需要淘汰页1、页6或页8,它们都不再被访问,因此选择页号较大的页8淘汰。将页9加入内存中。
```
0 9 1 6
```
15. 访问页7,发现已经在内存中,不产生缺页中断。
```
0 9 1 6
```
16. 访问页8,发现已经在内存中,不产生缺页中断。
```
0 9 1 6
```
17. 访问页9,发现已经在内存中,不产生缺页中断。
```
0 9 1 6
```
18. 访问页5,发现不在内存中,产生1次缺页中断。根据未来的访问模式,需要淘汰页1、页6或页8,它们都不再被访问,因此选择页号较大的页6淘汰。将页5加入内存中。
```
0 9 1 5
```
19. 访问页4,发现已经在内存中,不产生缺页中断。
```
0 9 1 5
```
20. 访问页5,发现已经在内存中,不产生缺页中断。
```
0 9 1 5
```
21. 访问页4,发现已经在内存中,不产生缺页中断。
```
0 9 1 5
```
22. 访问页2,发现不在内存中,产生1次缺页中断。根据未来的访问模式,需要淘汰页9、页1或页5,它们都不再被访问,因此选择页号较大的页9淘汰。将页2加入内存中。
```
2 0 1 5
```
因此,总共产生了7次缺页中断。