Appearance
题目
确定进程运行所需的最少页框数时,要考虑的指标是( )。
错因
A
把"代码全部调入内存"当成必要前提。但虚拟存储的核心理念正相反——按需调页:进程运行时只把当前要执行的少数页留在内存即可,代码段哪怕有几百 MB,也可以只装几页跑起来。"最少页框数"问的是 OS 必须保证的最低保有量,与代码段总长无关。
B
把"虚拟地址空间"和"必须装多少进物理内存"绑死了。32 位系统进程虚地址空间高达 4GB,但物理内存通常只有几 GB——OS 用页面置换让"4GB 跑在 4GB 物理内存"成为常态,靠的就是大部分虚页根本不在内存。所以虚地址空间大小不决定最少页框数。
C
混淆了"系统的物理内存有多大"和"单个进程至少分多少页框"。物理地址空间只是总容量上限——它决定整台机器能容纳多少进程同时跑,但不决定单个进程的最低门槛。把"我有多少内存"和"这个进程要多少内存"搞混了。
总解析
问题本质:最少页框数 = 保证一条指令能完整执行不缺页所需的最小页框数。
关键约束:CPU 取指→译码→执行 这条流水线一旦开始,不能中断。如果一条指令在执行过程中所触及的所有页(包括指令本身、操作数地址、操作数)任何一个不在内存,就会触发缺页中断;缺页后重新执行这条指令时——若分配的页框数 < 这条指令需要的页数——同一条指令永远跑不完,死循环。
寻址方式如何影响最少页框数:
| 寻址方式 | 一条指令最坏需要的页数 |
|---|---|
| 立即寻址 | 1(仅指令本身) |
| 直接寻址 | 2(指令 + 操作数所在页) |
| 一次间接寻址 | 3(指令 + 操作数地址所在页 + 操作数所在页) |
| 多级间接寻址 | 4 或更多(每级间接都可能再多一页) |
如果指令本身横跨两页(指令边界落在页边界上),还要再加 1。
举例:某机器支持单级间接寻址,指令本身可能跨页。则最少页框数 = 2(指令)+ 1(间址操作数地址)+ 1(最终操作数)= 4——少于 4,含间址的指令永远执行不完。
逐项判定:
| 选项 | 是否决定最少页框数 | 理由 |
|---|---|---|
| A 代码段长 | ✗ | 按需调页,任何长度都不必全部装入 |
| B 虚拟地址空间大小 | ✗ | 虚地址空间天然远大于物理,不影响最低门槛 |
| C 物理地址空间大小 | ✗ | 决定系统总容量,不决定单进程最低门槛 |
| D 指令寻址方式 | ✓ | 决定一条指令最坏跨几个页,最少页框数必须 ≥ 这个数 |
核心结论:最少页框数由指令系统支持的寻址方式决定——给少了,含间接寻址(或跨页指令、跨页操作数)的那条指令永远跑不完。最终答案是 D。