Skip to content

2023年 408 操作系统 第 30 题

操作系统2023年选择题2分

题目

进程 R 和 S 共享数据 data,若 data 在 R 和 S 中所在页的页号分别为 p1 和 p2,两个页所对应的页框号分别为 f1 和 f2,则下列叙述中,正确的是( )。

错因

A

把"共享"想成了"两个进程在一模一样的虚地址位置看到 data"。但每个进程的虚地址空间是独立分配的,OS 把共享数据映射到两边各自虚地址空间的某段空闲区,分到的虚页号通常不同——共享的本质是"指向同一物理页",跟虚页号没必然关系。

B

方向反了:以为虚页号必相同、物理页号反而可以不同。但共享的真正含义恰恰是"物理上只有一份",所以物理页框 f1 = f2 必然相等;虚页号在两个独立的虚地址空间里,反倒是可以不同的那一项。

D

以为 data 在物理内存里有两份各占一个页框。但"共享"的定义就是物理上只一份、多个进程的页表都指向它——若 f1 ≠ f2,两个进程改的就是两块不同内存,根本不是共享。

总解析

进程间共享数据是通过"多个进程的页表条目都指向同一个物理页框"来实现的:

R 进程物理内存S 进程
虚地址空间第 p1 页→ 同一物理页框 f ←第 p2 页
决定方R 的虚地址布局OS 实际分配S 的虚地址布局

两个结论由此得出:

  • f1 = f2 一定相等:共享机制本身就是两边页表项指向同一物理页框,物理上只有一份。如果 f1 ≠ f2,那就是两块独立内存,"共享"无从谈起。
  • p1 和 p2 不一定相等:两个进程各有独立的虚地址空间,OS 给共享段分配的虚地址取决于该进程当时的地址空间布局。一般情况下 p1 ≠ p2;偶尔(比如两边都用固定地址 mmap)也可能恰好相等——所以是"不一定"。

逐项核对:

选项p1 = p2f1 = f2结论
A一定一定✗ p1 不必相等
B一定不一定✗ 反了
C不一定一定
D不一定不一定✗ f1 必等于 f2

最终答案是 C

最后更新:

⚠️ 这道题暂未配可视化,欢迎在 CodeBrick 反馈区告诉我们你想看哪道题