【正确答案】本题考查逻辑地址到物理地址的转换、页面置换等。地址转换过程一般是先将逻辑页号取出,然后查找页表,得到页框号,将页框号与页内偏移量相加,即可获得物理地址。若取不到页框号,那么该页不在内存,于是产生缺页中断,开始请求调页。若内存有足够的物理页面,那么可以再分配一个新的页面。若没有页面了,就必须在现有的页面之中找到一个页,将新的页与之置换,这个页可以是系统中的任意一页,也可以是本进程中的一页。若是系统中的一页,则这种置换方式称为全局置换:若是本进程的页面,则称为局部置换。置换时为尽可能地减少缺页中断次数,可以有多种算法来应用,本题使用的是改进的CLOCK算法。这种算法必须使用页表中的引用位和修改位,由这2位组成4种级别,没有引用和没有修改的页面最先淘汰,没有引用但修改了的页面其次,再次淘汰引用了但是没有修改的页面,最后淘汰既引用又修改了的页面,当页面的引用位和修改位相同时,随机淘汰一页。
(1)根据题意,每页1024B,地址又是按字节编址,计算逻辑地址的页号和页内偏移量,合成物理地址如下表所示。
| 逻辑地址 |
逻辑页号 |
页内偏移量 |
页框号 |
物理地址 |
| 0793 |
0 |
793 |
4 |
4889 |
| 1197 |
1 |
173 |
3 |
3245 |
| 2099 |
2 |
51 |
… |
缺页中断 |
| 3320 |
3 |
248 |
1 |
1272 |
| 4188 |
4 |
92 |
… |
缺页中断 |
| 5332 |
5 |
212 |
5 |
5332 |
(2)第2页不在内存,产生缺页中断,根据改进的CLOCK算法,第3页为没有引用和没修改的页面,故淘汰。新页面进入,页表修改如下:
| 逻辑页号 |
存在位 |
引用位 |
修改位 |
页框号 |
|
| 0 |
1 |
1 |
0 |
4 |
|
| 1 |
1 |
1 |
1 |
3 |
|
| 2 |
0→1 |
0→1 |
0 |
…→1 |
调入 |
| 3 |
1→0 |
0 |
0 |
1→… |
淘汰 |
| 4 |
0 |
0 |
0 |
… |
|
| 5 |
1 |
0 |
1 |
5 |
|
因为页面2调入是为了使用,所以页面2的引用位必须改为1。 地址转换变为如下表:
| 逻辑地址 |
逻辑页号 |
页内偏移量 |
页框号 |
物理地址 |
| 0793 |
0 |
793 |
4 |
4889 |
| 1197 |
1 |
173 |
3 |
3245 |
| 2099 |
2 |
51 |
1 |
1075 |
| 3320 |
3 |
248 |
… |
缺页中断 |
| 4188 |
4 |
92 |
… |
缺页中断 |
| 5332 |
5 |
212 |
5 |
5332 |