Appearance
题目
在缺页处理过程中,操作系统执行的操作可能是( )。
I、修改页表
II、磁盘 I/O
III、分配页框
错因
A
漏 Ⅲ 分配页框——但调入新页前必须有空闲页框,要么用现成的(直接分配)、要么置换出一个(间接分配)。无论哪种都涉及"分配页框"这件事,漏掉这一步缺页中断处理就不完整。
B
只承认 Ⅱ 磁盘 I/O,漏 Ⅰ Ⅲ。但仅做磁盘 I/O 不修改页表的话,下次访问还是缺页(页表项还显示"不在内存"),缺页处理就白做了。修改页表是必做的最后一步。
C
只承认 Ⅲ 分配页框,漏 Ⅰ Ⅱ。如果页面在外存,必须做磁盘 I/O 调入;调入后必须修改页表项指向新页框。光分配页框不调数据等于把空白页框给了用户,毫无意义。
总解析
缺页中断处理的完整流程:
缺页中断触发(地址合法但页不在内存)
↓
1. 检查并预留页框
有空闲 → 分配空闲页框 ← Ⅲ 分配页框
无空闲 → 置换:选受害者页 → 写回脏页 → 释放该页框
↓
2. 从外存读入所需页到分配的页框 ← Ⅱ 磁盘 I/O
↓
3. 修改页表项:标记"在内存"+ 写入页框号 + 重置位 ← Ⅰ 修改页表
↓
4. 重新执行触发缺页的指令逐条核对:
| 命题 | 是否在缺页处理中执行? | 说明 |
|---|---|---|
| Ⅰ 修改页表 | ✓ | 调入完成后必须把页表项的"在内存"位标 1、并填入新页框号;否则下次还是缺页 |
| Ⅱ 磁盘 I/O | ✓ | 页在外存时必须从磁盘读出来;如果置换的页是脏页还要写回 |
| Ⅲ 分配页框 | ✓ | 调入新页前必须有页框承载,要么从空闲池要、要么置换 |
三件事缺一不可:① 没分配页框 → 没地方放新页;② 没做磁盘 I/O → 页框里没数据;③ 没修改页表 → 下次访问仍判定"不在内存"。
正确的是 Ⅰ Ⅱ Ⅲ。
最终答案是 D。