Skip to content

2026年 408 操作系统 第 30 题

操作系统2026年选择题2分

题目

进程 P1 和 P2 共享一个文件 R,该文件的页表项分别是 R1 和 R2,其在 2 个进程中的虚拟地址分别是 W1 和 W2,则下列说法中正确的是( )。

错因

A

走到了另一个极端。共享文件的核心特征是两个页表项指向同一个物理页框——所以页框号字段必然相同。其他位(如保护位 R/W、修改位、存在位等)可能因进程权限不同而不同(例如 P1 可写 P2 只读),但绝不是"完全不同"。"完全不同"意味着连物理页框号都不同,那就不叫共享了。

C

把"共享映射"和"私有映射 / 写时复制(COW)"混淆。题面明确"P1 和 P2 共享一个文件 R"——共享语义下两个进程访问的是同一份物理内存,P1 写 W1 必然立即反映到 P2 看到的 W2 上。把它当成 fork 后的 COW 那种"写时分裂",是把"共享文件映射"和"父子进程私有副本"混了类。

D

误以为"共享"意味着"地址也得相同"。每个进程都有独立的虚拟地址空间,文件被 mmap 进来时落在哪段虚地址由各自的内存分配器决定,没必要相同。mmap() 系统调用返回的地址通常就是进程当前可用的空闲虚地址段,两个进程返回的值很可能不同。共享的对象是物理页框,不是虚拟地址。

总解析

核心机制:进程间共享文件(典型实现是 mmap MAP_SHARED 或 SysV shmget)的本质——

让两个进程的页表项指向同一个物理页框,从而实现"两边看到的字节内容时刻一致"。

对照四个维度

比较项P1 视角P2 视角是否相等
虚拟地址(W1 / W2)各自地址空间内分配各自地址空间内分配不一定相等
页表项的物理页框号指向共享物理页指向同一共享物理页相等
页表项的保护/修改位取决于该进程权限取决于该进程权限可能不同
物理地址 同一物理页 同一物理页相等

逐项核对

  • A 错:物理页框号必然相同,"完全不同"是错的;只有部分标志位可能不同。
  • B 对:共享的本质就是物理地址相同——这是"共享"二字的工作机理。
  • C 错:共享映射下一方写、另一方立即可见,这正是它和"写时复制"的关键区别。
  • D 错:虚地址在各自独立的地址空间,没必要相同。

速记共享文件 ⇔ 物理地址相同——其余四项(虚地址、PTE 内容、修改可见性)都不绑定。

最终答案是 B

最后更新:

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