Appearance
题目
若用户进程访问内存时产生缺页,则下列选项中,操作系统可能执行的操作是( )。
I. 处理越界错
II. 置换页
III. 分配内存
错因
A
承认 Ⅱ 置换,又把 Ⅰ"处理越界错"算进缺页处理——但缺页和越界是两种不同的异常:缺页是"地址合法、但页不在内存",越界是"地址超出了进程地址空间"。OS 在硬件触发对应异常时进入对应处理程序,缺页处理程序不会去做越界处理的事。
C
承认 Ⅰ 越界 + Ⅲ 分配,但漏 Ⅱ 置换。如果有空闲页框,缺页时直接分配即可;但没有空闲页框时,必须从已驻留页中选一页换出——这是缺页中断处理程序的核心动作之一,不能漏。
D
把 Ⅰ Ⅱ Ⅲ 全选,掉进越界陷阱。缺页中断处理程序的工作不包括处理越界错——硬件触发的中断号不同,进的处理程序也不同。
总解析
缺页中断处理程序做的事,按"页框够不够"分两条路径:
1. 检查访问地址是否合法
不合法 → 越界异常(这是另一个异常处理程序处理,不是缺页处理)
合法 → 进入缺页处理流程:
2. 是否有空闲页框?
有 → 分配空闲页框 → 把外存上的页调入
没有 → 选一页换出(页面置换)→ 用空出的页框装新页
3. 更新页表项 → 重新执行触发缺页的指令关键区分:缺页处理程序处理的是"地址合法、页不在内存"的情况;越界检查在缺页发生之前就由硬件完成(地址变换时就会查段长 / 页表段限),越界是另一个异常路径。
逐条核对:
| 命题 | 是否在缺页处理流程内 | 说明 |
|---|---|---|
| Ⅰ 处理越界错 | ✗ | 越界是另一个异常,由独立的"地址越界异常处理程序"处理;缺页处理程序假定"地址是合法的、只是不在内存" |
| Ⅱ 置换页 | ✓ | 没空闲页框时必做:选一页换出腾位 |
| Ⅲ 分配内存 | ✓ | 有空闲页框时直接分配;置换后也要分配那块腾出来的页框 |
类比:缺页中断处理程序就像"页不在的人帮忙找位置"——它假设你来对了地方(地址合法),帮你协调位置(分配 / 置换);但你来错门牌号(越界)是另一个柜台的事。
正确的是 Ⅱ Ⅲ。
最终答案是 B。