Appearance
题目
下列关于虚拟存储器的叙述中,正确的是( )。
错因
A
正好反——虚拟存储的实现必须用非连续分配(分页 / 分段 / 段页式)。连续分配下整个程序要在一段连续物理内存里、且全部装入,根本没有"按需调入"的余地,做不出虚拟存储。把"虚拟"误以为是"看起来连续就连续分配"是搞反了——虚拟地址连续 ≠ 物理分配连续。
C
虚拟存储容量不只受外存限制——还受**寻址范围(地址总线位数)**限制。32 位机虚拟地址最大 = 4GB,外存再大虚拟空间也只能这么大;64 位机才会让外存成主要瓶颈。把"只受外存限"绝对化是漏了寻址位数这条上限。
D
虚拟存储的核心价值就是让虚拟地址空间比物理内存大——内存装不下的部分放外存,按需调入。把"只受内存限"当真就否定了虚拟存储的意义:那不就跟没虚拟一样了吗?
总解析
虚拟存储的核心机制:虚拟地址空间 → 部分驻留内存 + 部分驻留外存。
| 选项 | 描述 | 判定 |
|---|---|---|
| A | 只能基于连续分配 | ✗ 反——连续分配做不出虚拟存储 |
| B | 只能基于非连续分配 | ✓ —— 必须分页 / 分段 / 段页式,按页/段为单位调入调出 |
| C | 容量只受外存限制 | ✗ 还受寻址位数限制(虚拟地址范围上限) |
| D | 容量只受内存限制 | ✗ 反——虚拟存储就是要让它大于内存 |
虚拟存储容量的真实约束:
- 32 位地址 + 1TB 外存 → 仍只能用 4GB
- 64 位地址 + 100GB 外存 → 由外存兜底(外存比寻址范围小)
速记:虚拟存储 = 非连续分配(页/段)+ 按需调入 + 虚拟地址空间 > 内存。两个核心都是"非连续"+"扩展容量",连续分配既做不到第一条,也很难做第二条;只看内存又否定了第二条。
最终答案是 B。