Skip to content

2019年 408 操作系统 第 28 题

操作系统2019年选择题2分

题目

在分段存储管理系统中,用共享段表描述所有共享的段。若进程 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

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数