Linux操作系统-第三章-内存

姜智浩 Lv5

题目

某计算机采用二级页表的分页存储管理方式,按字节编址,页大小为 210 字节,页表项大
小为2 字节,逻辑地址结构为:页目录号 | 页号 | 页内偏移量
逻辑地址空间大小为 216 页,则表示整个逻辑地址空间的页目录表中包含表项的个数至少是


。(2010)
A. 64 B. 128 C. 256 D. 512

解析

📊 题目条件:

  • 采用 二级页表 管理方式
  • 字节编址
  • 页大小 = $2^{10}$ 字节 → 即 1 KB
  • 页表项大小 = 2 字节
  • 逻辑地址空间大小 = $2^{16}$ 页

✅ 注意:题目说“逻辑地址空间大小为 $2^{16}$ 页”,即总共有 $2^{16}$ 个页,而不是 $2^{16}$ 字节!


🔍 目标:

求:页目录表(第一级页表)中至少包含多少个表项?


✅ 解题思路:

在二级页表中:

  • 逻辑地址分为三部分:页目录号 | 页号 | 页内偏移量
  • 页目录表(Page Directory)的每个表项指向一个页表(Page Table)
  • 每个页表包含若干页表项,每个页表项对应一个物理页帧

由于逻辑地址空间有 $2^{16}$ 个页,而每个页表能管理多少页?

→ 由页表大小决定


步骤 1:计算一个页表能容纳多少个页表项

  • 页大小 = $2^{10}$ 字节
  • 页表项大小 = 2 字节
    → 一个页表最多可容纳:
    $$
    \frac{2^{10}}{2} = 2^9 = 512 \text{ 个页表项}
    $$

也就是说,每个页表可以映射 512 个页


步骤 2:计算需要多少个页表

总页数 = $2^{16}$
每个页表管理 512 页 = $2^9$ 页
→ 所需页表个数 =
$$
\frac{2^{16}}{2^9} = 2^{7} = 128
$$


步骤 3:页目录表中表项个数 = 页表个数

因为页目录表的每个表项指向一个页表,所以:

页目录表至少需要 128 个表项


✅ 最终答案:B. 128


🎯 验证逻辑:

层级 含义 数量
页目录表项数 指向页表的数量 128 = $2^7$
每个页表项数 映射页的数量 512 = $2^9$
总页数 $2^7 \times 2^9 = 2^{16}$ ✅

✅ 正确答案:B. 128

题目

某系统采用改进型CLOCK置换算法,页表项中字段A为访问位,M为修改位。A=0表示页
最近没有被访问,A=1表示页最近被访问过。M=0表示页没有被修改过,M=1表示页被修
改过。按(A,M)所有可能的取值,将页分为四类:(0,0)、(1,0)、(0,1)和(1,1),则该
算法淘汰页的次序为


。(2016)
A.(0,0),(0,1),(1,0),(1,1)
B.(0,0),(1,0),(0,1),(1,1)
C.(0,0),(0,1),(1,1),(1,0)
D.(0,0),(1,1),(0,1),(1,0)

解析

答案:A. (0, 0), (0, 1), (1, 0), (1, 1)

本题考查 改进型 CLOCK 置换算法(Enhanced Clock Algorithm) 的淘汰次序。


🔍 改进型 CLOCK 算法原理:

在基本 CLOCK 算法基础上,增加对 访问位 A修改位 M 的判断,将页面分为四类:

类别 (A, M) 含义
1 (0, 0) 最近未访问、未修改 → 最优淘汰对象
2 (0, 1) 最近未访问、但被修改过 → 需写回磁盘,代价较高
3 (1, 0) 最近被访问过、未修改 → 可能还会被访问,保留
4 (1, 1) 最近被访问过、且被修改 → 最重要,应保留

📌 淘汰优先级(从高到低):

按 (A, M) 组合的“价值”排序,越不重要越先淘汰

标准顺序是:

  1. (0, 0) —— 既没访问也没修改 → 最安全,直接淘汰
  2. (0, 1) —— 未访问但修改过 → 需写回,代价大,但比“被访问过的”优先淘汰
  3. (1, 0) —— 被访问过但未修改 → 说明可能还会用,尽量保留
  4. (1, 1) —— 被访问过且修改过 → 最重要,最后淘汰

→ 所以淘汰次序为:(0,0) → (0,1) → (1,0) → (1,1)


✅ 对照选项:

A. (0,0), (0,1), (1,0), (1,1) ✅ 正确
B. (0,0), (1,0), (0,1), (1,1) ❌ 错误((1,0) 不该在 (0,1) 前)
C. (0,0), (0,1), (1,1), (1,0) ❌ 错误((1,1) 不该在 (1,0) 前)
D. (0,0), (1,1), (0,1), (1,0) ❌ 错误((1,1) 是最重要的)


🎯 考点总结:

  • 改进型 CLOCK 算法通过 (A,M) 四元组分类页面;
  • 淘汰时优先选择 A=0 的页(未被访问),再考虑 M 值;
  • 目标:减少 I/O 开销(避免淘汰需写回的页)和 保留活跃页

✅ 正确答案:A. (0, 0), (0, 1), (1, 0), (1, 1)

题目

系统为某进程分配了4个页框,该进程已访问的页号序列为2,0,2,9,3,4,2,8,
2,4,8,4,5。若进程要访问的下一页的页号为7,依据LRU算法,应淘汰页的页号是


。(2015)
A.2 B.3 C.4 D.8

解析

我们来分析这道经典的 LRU(Least Recently Used)页面置换算法 题目。


📊 题目条件:

  • 进程被分配 4 个页框(物理内存帧)
  • 已访问的页号序列:2, 0, 2, 9, 3, 4, 2, 8, 2, 4, 8, 4, 5
  • 下一个要访问的页是:7 → 此时内存已满,需淘汰一页(LRU 策略)
    → 问:应淘汰哪个页?

✅ 解题思路:

我们需要根据 LRU 算法,找出当前内存中最近最少使用的页。

LRU 的核心思想:淘汰最近最久未被访问的页

我们从头开始模拟访问过程,记录每个时刻内存中的页,并标记其“最后访问时间”或“访问顺序”。


🧩 模拟过程(维护一个“访问历史”列表,越靠左越久未用)

初始:内存空


访问 2

  • 内存:[2] (未满)

访问 0

  • 内存:[2, 0]

访问 2

  • 命中 → 更新顺序:将 2 移到最右 → [0, 2]

访问 9

  • 缺页 → 加入 9 → [0, 2, 9]

访问 3

  • 缺页 → 加入 3 → [0, 2, 9, 3] ← 已满!

访问 4

  • 缺页 → 需淘汰 LRU(最左:0)→ 淘汰 0 → 加入 4 → [2, 9, 3, 4]

访问 2

  • 命中 → 将 2 移到最右 → [9, 3, 4, 2]

访问 8

  • 缺页 → 淘汰 LRU(最左:9)→ 加入 8 → [3, 4, 2, 8]

访问 2

  • 命中 → 将 2 移到最右 → [3, 4, 8, 2]

访问 4

  • 命中 → 将 4 移到最右 → [3, 8, 2, 4]

访问 8

  • 命中 → 将 8 移到最右 → [3, 2, 4, 8]

访问 4

  • 命中 → 将 4 移到最右 → [3, 2, 8, 4]

访问 5

  • 缺页 → 淘汰 LRU(最左:3)→ 加入 5 → [2, 8, 4, 5]

✅ 当前内存状态(在访问 5 后):

内存中的页:2, 8, 4, 5

访问顺序(从左到右:最近最少使用 → 最近使用):

  • 最左:2(上次访问较早)
  • 然后:8
  • 然后:4
  • 最右:5(最新访问)

注意:虽然 2 在序列中出现多次,但最后一次访问是在访问 8 之前,之后没有再访问,所以它现在是“最近最少使用”的。


🔍 下一步:访问 7

  • 7 不在内存 → 缺页 → 需淘汰一页
  • 根据 LRU,淘汰 最左边的页 → 即 2

✅ 正确答案:A. 2


🎯 关键点总结:

  • LRU 维护的是“访问时间顺序”,不是“访问频率”;
  • “最近最少使用” = “在当前时刻,距离上次访问时间最长的页”;
  • 本题中,虽然 2 出现频繁,但最后一次访问是在访问 8 之前,之后没有更新,因此被淘汰。

✅ 正确答案:A. 2

题目

.在分段存储管理系统中,用共享段表描述所有被共享的段。若进程P1和P2 共享段S,下列
叙述中,错误的是


。(2019)
A.在物理内存中仅保存一份段S 的内容
B.段S 在P1和P2中应该具有相同的段号
C.P1 和P2 共享段S 在共享段表中的段表项
D.P1和P2都不再使用段S 时才回收段S 所占的内存空间

解析

答案:B. 段 S 在 P1 和 P2 中应该具有相同的段号


✅ 解析:

本题考查 分段存储系统中共享段的实现机制,与 2019 年第 7 题完全相同(重复题)。

我们逐项分析:


A. 在物理内存中仅保存一份段 S 的内容

✅ 正确。

  • 共享段的核心目的就是节省内存 —— 多个进程访问同一段时,物理内存只保留一份副本
  • 通过各自的段表项指向同一个物理地址实现共享。

B. 段 S 在 P1 和 P2 中应该具有相同的段号

错误(本题答案)

  • 段号是进程私有的!每个进程有自己的段表,段号是该进程内部的索引;
  • P1 可以把共享段 S 放在段号 3,P2 可以放在段号 5 —— 只要它们的段表项都指向共享段表中的同一个段描述符即可;
  • 段号无需相同,只要逻辑上能映射到同一物理段就行。

📌 类比:两个程序都调用 printf,但一个程序中 printf 在段号 2,另一个在段号 4 —— 只要都指向同一个共享代码段,就可正常运行。


C. P1 和 P2 共享段 S 在共享段表中的段表项

✅ 正确。

  • 系统维护一个共享段表,记录所有被共享的段;
  • 当 P1 和 P2 都共享段 S 时,它们的段表项会指向共享段表中的同一个条目(包含物理起始地址、长度、权限等);
    → 实现“多对一”映射。

D. P1 和 P2 都不再使用段 S 时才回收段 S 所占的内存空间

✅ 正确。

  • 这是共享资源的典型管理策略:引用计数(Reference Count)
  • 共享段表中通常有一个“引用计数”字段,每增加一个进程共享,计数 +1;减少一个,计数 -1;
  • 计数为 0 时,才释放物理内存。

🎯 考点总结:

选项 是否正确 原因
A 共享段节省内存
B 段号是进程私有,无需一致
C 共享段表统一管理
D 引用计数机制

✅ 正确答案:B. 段 S 在 P1 和 P2 中应该具有相同的段号

题目

.某进程访问的页b 不在内存中,导致产生缺页异常,改缺页异常处理过程中不一定包含的操
作是( ) (2022)
A.淘汰内存中的页 B.建立页号与页框号的对应关系
C.将页b 从外存读入内存 D.修改页表中页b 对应的存在位

解析

答案:A. 淘汰内存中的页

本题考查 缺页异常处理过程 中哪些操作是“不一定包含”的。


📌 缺页异常处理流程(标准步骤):

当进程访问的页 b 不在内存中时,触发缺页中断,操作系统执行以下操作:

  1. 检查是否有空闲页框

    • 若有 → 直接分配,无需淘汰;
    • 若无 → 执行页面置换算法,淘汰一个页(如 LRU、Clock 等);
  2. 将页 b 从外存读入内存(磁盘 I/O)

  3. 建立页号与页框号的对应关系(更新页表)

  4. 修改页表中页 b 对应的存在位为 1

  5. 恢复进程执行(重新执行引发缺页的指令)


逐项分析:

A. 淘汰内存中的页

不一定包含 —— 只有当内存已满时才需要淘汰;

  • 如果系统有空闲页框,直接分配即可,无需淘汰;
    → 是“可能”发生,非“一定”发生。

B. 建立页号与页框号的对应关系

一定包含 —— 这是地址映射的核心,必须更新页表。

C. 将页 b 从外存读入内存

一定包含 —— 因为页 b 不在内存,必须从磁盘加载。

D. 修改页表中页 b 对应的存在位

一定包含 —— 存在位从 0 改为 1,表示该页已在内存。


🎯 考点总结:

操作 是否一定包含 说明
A. 淘汰内存中的页 ❌ 否 仅当无空闲页框时发生
B. 建立页号与页框号对应 ✅ 是 必须更新页表
C. 从外存读入页 b ✅ 是 缺页的本质是页不在内存
D. 修改存在位 ✅ 是 标记页已驻留

✅ 正确答案:A. 淘汰内存中的页


📌 记忆口诀:

“缺页处理四步走:读入、建表、改位、可选淘汰
—— 淘汰是“可选”,其余是“必做”。


✅ 最终答案:A

题目

下列因素,影响请求分页系统有效(平均)访存时间的是
I、 缺页率
II、 磁盘读写时间
III、内存访问时间
IV 、执行缺页处理程序的 CPU 时间
A、II,III B、I,IV C、I,III,IV D、I,II,III,IV

解析

答案:D. I, II, III, IV

本题考查 请求分页系统中,影响“有效(平均)访存时间”(Effective Memory Access Time, EMAT)的因素

在请求分页系统中,一次内存访问可能触发缺页中断,导致:

  • 访问内存 → 若命中 → 时间 = 内存访问时间
  • 若缺页 → 需执行缺页处理程序 → 包括:
    • CPU 处理缺页异常(CPU 时间)
    • 磁盘读取页面(磁盘读写时间)
    • 将页面装入内存后重新执行指令

因此,平均访存时间是命中与缺页情况的加权平均


📊 有效访存时间公式:

设:

  • $ p $ = 缺页率(Page Fault Rate)
  • $ m $ = 内存访问时间(Memory Access Time)
  • $ d $ = 缺页处理时间(包括 CPU 处理 + 磁盘 I/O)

则:

$$
\text{EMAT} = (1 - p) \cdot m + p \cdot d
$$

而 $ d $ 本身包含:

  • 执行缺页处理程序的 CPU 时间
  • 磁盘读写时间

→ 所以,所有四个因素都直接影响 EMAT


逐项分析:

I. 缺页率

影响 —— 是公式中的核心变量 $ p $,缺页率越高,EMAT 越长。

II. 磁盘读写时间

影响 —— 是缺页处理时间 $ d $ 的主要部分,磁盘慢则 $ d $ 大,EMAT 增大。

III. 内存访问时间

影响 —— 是命中时的时间 $ m $,即使缺页率低,若内存访问慢,EMAT 也会高。

IV. 执行缺页处理程序的 CPU 时间

影响 —— 是缺页处理时间 $ d $ 的一部分,CPU 处理开销大,$ d $ 增大 → EMAT 增大。


🎯 结论:

所有四项均影响请求分页系统的有效访存时间。


✅ 正确答案:D. I, II, III, IV


💡 补充说明:

这是操作系统性能评估的核心内容。实际系统中,为降低 EMAT,常采用:

  • 提高命中率(增加物理内存、优化置换算法)
  • 使用高速缓存(TLB)减少缺页次数
  • 使用 SSD 替代 HDD 降低磁盘读写时间
  • 优化缺页处理程序减少 CPU 开销

✅ 最终答案:D

题目

给出某进程访问页面的序列:
…, 1, 3, 4, 5, 6, 0, 3, 2, 3, 2, ↑t, 0, 4, 0, 3, 2, 9, 2, 1, …
工作集窗口大小 = 6
问:在 t 时刻 的工作集是什么?

解析

我们来分析这道关于 工作集(Working Set) 的题目。


📊 题目条件:

  • 给出某进程访问页面的序列:
    …, 1, 3, 4, 5, 6, 0, 3, 2, 3, 2, ↑t, 0, 4, 0, 3, 2, 9, 2, 1, …
  • 工作集窗口大小 = 6
  • 问:在 t 时刻 的工作集是什么?

✅ 工作集定义:

工作集(Working Set) 是指:在最近 k 次内存访问中,所访问到的不同页面的集合

  • k 是“窗口大小”(本题为 6)
  • 从当前时刻 t 往前数 k 个访问记录(包含 t 时刻的访问),取其中出现的所有不同页号组成集合。

⚠️ 注意:工作集是“最近访问过的页面”,不是“当前内存中的页面”;它反映的是程序的局部性行为。


🔍 解题步骤:

Step 1:确定 t 时刻之前的 6 个访问记录

观察序列:

1
..., 1, 3, 4, 5, 6, 0, 3, 2, 3, 2, ↑t, 0, 4, 0, 3, 2, 9, 2, 1, ...

t 时刻的箭头指向的是 第 11 个访问位置(从左往右数),即:

访问序列(标序号):

序号 页面
1 1
2 3
3 4
4 5
5 6
6 0
7 3
8 2
9 3
10 2
11 ← t

→ 所以,在 t 时刻,往前数 6 个访问 是指:

序号 6 到 11(包含 t 时刻的访问):

1
2
3
4
5
6
序号 6: 0
序号 7: 3
序号 8: 2
序号 9: 3
序号 10: 2
序号 11: (t 时刻访问的页)??

但注意:t 时刻的访问尚未发生 —— 箭头在“2”之后,“0”之前,说明:

t 时刻是刚刚完成第 10 次访问(页面 2)之后,即将进行第 11 次访问(页面 0)。

所以,t 时刻的工作集应基于“最近 6 次已完成的访问”,即:

从第 5 次到第 10 次访问(共 6 次):

1
2
3
4
5
6
第 5 次:6
第 6 次:0
第 7 次:3
第 8 次:2
第 9 次:3
第 10 次:2

→ 这 6 次访问的页面为:6, 0, 3, 2, 3, 2

→ 去重后得到工作集:{6, 0, 3, 2}


✅ 对照选项:

A. {6, 0, 3, 2} ✅ 正确
B. {2, 3, 0, 4} ❌ 包含 4(不在最近6次中)
C. {0, 4, 3, 2, 9} ❌ 包含 4、9(超出范围)
D. {4, 5, 6, 0, 3, 2} ❌ 包含 4、5(超出范围)


🎯 关键点:

  • 工作集是“最近 k 次访问中出现的页面”,不是“当前内存中的页面”;
  • “t 时刻”通常指“刚完成某次访问后”,因此取“前 k 次访问”;
  • 本题中,t 时刻位于“2”之后、“0”之前,故取第 5~10 次访问。

✅ 正确答案:A. {6, 0, 3, 2}

  • Title: Linux操作系统-第三章-内存
  • Author: 姜智浩
  • Created at : 2025-12-29 11:45:14
  • Updated at : 2026-01-15 08:50:14
  • Link: https://super-213.github.io/zhihaojiang.github.io/2025/12/29/20251229Linux操作系统-第三章-内存/
  • License: This work is licensed under CC BY-NC-SA 4.0.