模拟卷 操作系统 页表缺页异常 解答题
第 45 题

(8 分)某一个计算机系统采用虚拟页式存储管理方式,当前在处理机上执行的某一个进程的页表如下所示,所有的数字均为十进制,每一项的起始编号是 0,并且所有的地址均按字节编址,每页的大小为 1024 字节。

(1)将下列逻辑地址转换为物理地址,写出计算过程,对不能计算的说明为什么?

0793, 1197, 2099, 3320, 4188, 5332

(2) 假设程序欲访问第 2 页,页面置换算法为改进的 CLOCK 算法,请问该淘汰哪页?页表如何修改?页表修改后 (1) 问中地址的转换结果是否改变?变成多少?

长)?

(3) 若距离减少到 2km,为了保证网络正常工作,则最小帧长度是多少?

(4) 若发送速率提高,最小帧长不变,为了保证网络正常工作应采取什么解决方案?

页表 缺页异常

[tag_link]

**【解析】** 本题考查逻辑地址到物理地址的转换以及页面置换过程。 地址转换的一般过程是:先取出逻辑页号,然后查找页表,得到对应的页框号;将页框号与页内偏移相加,即可得到物理地址。 若在页表中找不到该页对应的页框号,说明该页不在内存中,此时会产生缺页中断,系统开始请求调页。

如果内存中有足够的空闲物理页框,则可以直接分配一个新的页面;如果没有空闲页框,则必须在现有页面中选择一页进行置换。 被置换的页面可以是系统中的任意一页(称为全局置换),也可以仅限于本进程的页面(称为局部置换)。

为了尽可能减少缺页中断的次数,可以采用多种页面置换算法。本题使用的是改进的 CLOCK 算法。 该算法需要利用页表中的引用位和修改位,由这两位组合成四种优先级:

  1. 未被引用且未修改的页面(优先淘汰)
  2. 未被引用但已修改的页面
  3. 已被引用但未修改的页面
  4. 既被引用又被修改的页面(最后淘汰)

当多个页面的引用位和修改位状态相同时,则随机选择一页进行淘汰。

(1)根据题意,每页 1024 字节,地址又是按字节编址,计算逻辑地址的页号和页内偏移量,合成物理地址如下表所示。

以逻辑地址 0793 为例,逻辑页号为 $0793 \div 1024 = 0$,在页表中存在,页内偏移量为 $0793 % 1024 = 793$,对应的页框号为 4,故物理地址为 $4 \times 1024 + 793 = 4889$。

(2)第 2 页不在内存,产生缺页中断,根据改进 CLOCK 算法,第 3 页为没被引用和没修改的页面,故淘汰。新页面进入,页表修改如下:

因为页面 2 调入是为了使用,所以页面 2 的引用位必须改为 1。

地址转换变为如下表: