Appearance
题目
在分段存储管理系统中,用共享段表描述所有共享的段。若进程 P1 和 P2 共享段 S,下列叙述中,错误的是( )。
错因
A
题问"错误",但 A 是对的——共享段就是物理内存里只放一份、给多进程共用,不然就不叫"共享"了。把对的选项当错选,多半是没看见题面"错误"两个字、按"哪个像是对的"惯性勾的。
C
C 也是对的:共享段表中这个段只占一项,不同进程都指向同一段表项,否则维护一致性会出问题(比如要回收就得改多份,是设计噩梦)。误把"P1 P2 各自有自己段表项"当成共享,当成 C 错了——其实让多进程指向同一段表项才是共享段表的核心设计点。
D
D 也是对的:共享段的回收必须等所有引用方都不用了才能释放(典型的引用计数管理)——只要还有一个进程在用,段就不能回收,否则那个进程的访问就指向了无效内存。把 D 当错的,可能是误以为"任一进程释放就回收"(这是私有段的逻辑,不是共享段的)。
总解析
题问"错误",先把共享段的工作机制理一遍:
| 设计点 | 描述 |
|---|---|
| 物理内存份数 | 只一份(这是"共享"的物质基础) |
| 共享段表 | 系统级表,每个共享段一项,所有共享它的进程都指向同一个段表项 |
| 各进程的段号 | 可不同——P1 段表里这段叫 5 号,P2 段表里同一段可以叫 7 号,都指向共享段表的同一项 |
| 回收时机 | 当所有进程都不再使用该段(引用计数归零)才回收 |
逐条核对:
- A:物理内存仅一份 → 正确(共享段的定义本身)
- B:必须具有相同的段号 → 错误 ❌
段号是各进程段表内的索引,跟其他进程的段表无关——P1 的 5 号段和 P2 的 7 号段完全可以指向同一个共享段表项。强制段号相同既不必要也不可行:每个进程的段表是独立维护的,没法约束所有共享方都把这段编成同一号。 - C:共享同一段表项 → 正确(共享段表的核心设计)
- D:都不再使用才回收 → 正确(引用计数管理)
题问"错误",B 是被否定的。
注意把"段号"和"物理段"分开看:物理段唯一,段号是各进程的私有索引——同一物理段在不同进程视角里可以叫不同名字。
最终答案是 B。