【个人学习||操作系统】

《操作系统》80 分掌握指南

1. 学习前说明

由于输入中未指定学习阶段、基础、考试类型和特殊要求,本文采用以下默认假设:

  • 学习阶段:普通高校本科《操作系统》课程。
  • 目标用户:学过计算机基础、C/C++ 或 Java 等编程语言,了解数据结构,但对操作系统知识不系统。
  • 考试目标 :课程期末考试或补考,目标分数 80 分以上
  • 内容取舍:不追求覆盖所有教材细节,而是优先掌握最常考、最能提分、最能形成框架的约 80% 核心内容。
  • 教材体系:采用最通用的操作系统课程体系:进程与线程、处理机调度、同步互斥、死锁、内存管理、虚拟内存、文件系统、I/O 与磁盘管理。

本文适合用于:

  1. 考前 1 到 3 周系统复习。
  2. 学完课程后重新建立知识框架。
  3. 补考、期末、考研专业课初步复习。
  4. 从"会背名词"提升到"能做题、能解释机制"。

2. 学科一句话概括

操作系统是一门研究如何管理计算机硬件资源,并为应用程序提供方便、安全、高效运行环境的课程。

更直观地说,操作系统就像一座大型酒店的总管:

  • CPU 像客房,很多程序都想住进去,操作系统负责安排谁先用、用多久。
  • 内存像临时工作台,程序运行时的数据要放在这里,操作系统负责分配、回收和保护。
  • 磁盘像仓库,文件长期保存,操作系统负责组织目录、读写数据和管理空闲空间。
  • I/O 设备像前台、打印机、电梯,速度差异很大,操作系统要协调它们和 CPU 的配合。

这门学科研究什么

操作系统研究 资源管理程序运行环境

  • 如何管理 CPU、内存、磁盘、I/O 设备。
  • 如何让多个程序看起来"同时运行"。
  • 如何让程序之间既能合作,又不互相破坏。
  • 如何通过抽象让用户不用直接面对复杂硬件。

它解决什么核心问题

操作系统解决四类核心问题:

核心问题 对应内容
多个程序如何共享 CPU 进程、线程、调度
多个程序如何安全共享数据 同步、互斥、信号量、管程
内存不够或程序太大怎么办 分页、分段、虚拟内存、页面置换
文件和设备如何统一管理 文件系统、目录、磁盘调度、I/O 控制

为什么考试中重要

操作系统考试通常不是纯记忆,而是"概念 + 机制 + 计算 + 分析"混合:

  • 概念题考定义和区别,例如进程与线程、分页与分段。
  • 机制题考过程,例如中断处理、页面置换、死锁检测。
  • 计算题考调度、页面置换、磁盘调度、银行家算法。
  • 分析题考同步互斥、生产者消费者、读者写者等经典模型。

最容易卡住的地方

初学者最容易卡在四个点:

  1. 把概念背散了:知道"进程""线程""页表",但不知道它们在解决什么问题。
  2. 不会画状态变化:调度、阻塞、唤醒、缺页、中断经常混在一起。
  3. 同步题不会下手:不清楚互斥、同步、信号量初值和 P/V 顺序。
  4. 计算题公式会背但不会用:平均周转时间、有效访问时间、页面置换、磁盘移动距离容易丢分。

3. 学科知识地图

模块 重要程度 解决的问题 前置依赖 常见考试形式
操作系统概述与中断 ★★★ 操作系统是什么,内核如何接管硬件 计算机组成基础 选择、填空、简答
进程、线程与处理机调度 ★★★★★ 多个程序如何共享 CPU 程序执行、队列 计算题、简答题
同步、互斥与经典问题 ★★★★★ 多个进程如何安全协作 进程状态、临界区 PV 操作、分析题
死锁 ★★★★ 多进程互相等待时如何处理 资源分配、同步 银行家算法、简答
内存管理基础 ★★★★★ 程序如何装入内存并隔离运行 地址、存储层次 地址转换、分页计算
虚拟内存与页面置换 ★★★★★ 内存不够时如何运行大程序 分页、局部性原理 页面置换计算
文件系统 ★★★★ 文件如何组织、存储和访问 磁盘、目录结构 索引分配、目录题
I/O 与磁盘管理 ★★★★ 慢速设备如何和 CPU 协作 中断、缓存 磁盘调度计算
保护、安全与系统调用 ★★★ 如何保护资源并提供接口 用户态、内核态 简答、选择

模块依赖关系

text 复制代码
操作系统概述
  -> 进程与线程
      -> 处理机调度
      -> 同步互斥
          -> 死锁
  -> 内存管理基础
      -> 虚拟内存
  -> 文件系统
      -> I/O 与磁盘管理
  -> 保护、安全、系统调用

学习时要抓住一条主线:

程序运行需要 CPU、内存、文件和设备;操作系统的核心任务就是分配、调度、保护和抽象这些资源。


4. 推荐学习顺序

建议按以下顺序学习,而不是完全按教材章节顺序:

  1. 操作系统概述与中断:先知道操作系统为什么存在。
  2. 进程与线程:理解"程序运行起来之后是什么"。
  3. 处理机调度:掌握 CPU 如何分配给进程。
  4. 同步互斥:解决进程并发带来的冲突。
  5. 死锁:理解资源等待的极端情况。
  6. 内存管理基础:理解地址转换、分页、分段。
  7. 虚拟内存:掌握缺页、页面置换和有效访问时间。
  8. 文件系统:理解文件、目录、空间分配。
  9. I/O 与磁盘管理:掌握设备控制和磁盘调度。
  10. 保护、安全与系统调用:补全接口和保护机制。

5. 核心模块详解

模块一:操作系统概述与中断

1. 本模块解决的问题

本模块回答三个基础问题:

  • 操作系统到底是什么?
  • 用户程序为什么不能直接操作硬件?
  • CPU 如何从用户程序切换到操作系统内核?

如果把计算机看成一台机器,操作系统就是"管理机器的人"和"给用户使用机器的接口"。

2. 核心概念
概念 通俗解释 考试重点
操作系统 管理硬件和软件资源的系统软件 定义、功能
内核 操作系统最核心、运行在高权限态的部分 用户态/内核态切换
系统调用 用户程序请求操作系统服务的接口 与普通函数调用区别
中断 CPU 暂停当前程序,转去处理紧急事件 中断处理过程
异常 程序运行中产生的内部事件,如除零、缺页 与外部中断区别
用户态 权限较低,不能直接执行特权指令 安全隔离
内核态 权限较高,可以执行特权指令 操作硬件、管理资源
3. 关键方法与规则

操作系统的四大功能:

  1. 处理机管理:进程、线程、调度。
  2. 存储器管理:内存分配、地址转换、虚拟内存。
  3. 文件管理:文件、目录、磁盘空间。
  4. 设备管理:I/O 控制、中断、缓冲、磁盘调度。

中断处理的一般过程:

text 复制代码
中断发生
-> 保存当前程序现场
-> 转入中断处理程序
-> 执行中断服务
-> 恢复现场
-> 返回原程序继续执行

系统调用的一般过程:

text 复制代码
用户程序发起系统调用
-> 通过陷入指令进入内核态
-> 内核检查参数和权限
-> 执行内核服务
-> 返回用户态
4. 易混点与常见误区
易混点 正确理解
系统调用不是普通函数调用 普通函数仍在用户态执行,系统调用会进入内核态
中断不一定是错误 键盘输入、时钟中断、I/O 完成都属于正常中断
内核态不等于内存中的"内核区域" 内核态是 CPU 权限状态
操作系统不是应用软件 操作系统是管理和支撑应用运行的系统软件
5. 考试常见问法
  • 简述操作系统的主要功能。
  • 什么是系统调用?它与普通函数调用有何区别?
  • 什么是中断?中断处理过程包括哪些步骤?
  • 为什么要区分用户态和内核态?
6. 典型例题

例题:为什么用户程序不能直接执行 I/O 指令,而要通过系统调用请求操作系统完成?

7. 解题思路

回答时抓住"安全"和"统一管理":

  1. I/O 设备属于共享资源,如果用户程序可直接操作,会破坏其他程序的数据。
  2. I/O 指令通常是特权指令,只能在内核态执行。
  3. 系统调用让操作系统检查权限、参数和设备状态。
  4. 这样既保证安全,又方便操作系统统一调度设备。
8. 简短总结

本模块是理解操作系统的入口。考试中最重要的是记住:操作系统通过内核态、系统调用和中断机制接管硬件,并为用户程序提供安全接口。


模块二:进程、线程与处理机调度

1. 本模块解决的问题

一个 CPU 同一时刻只能真正执行一个指令流,但用户希望多个程序"同时运行"。进程、线程和调度就是为了解决:

  • 程序运行起来后如何表示?
  • 多个程序如何轮流使用 CPU?
  • 如何评价调度算法好不好?
2. 核心概念
概念 通俗解释 考试重点
程序 静态代码和数据 与进程区别
进程 正在运行的程序实例 PCB、状态转换
PCB 进程控制块,记录进程身份和现场 进程存在的唯一标志
线程 进程内的执行流 与进程区别
上下文切换 保存旧进程现场,恢复新进程现场 有开销
调度 决定哪个进程获得 CPU 算法计算

进程的典型状态:

text 复制代码
新建 -> 就绪 -> 运行 -> 终止
          ^      |
          |      v
          阻塞 <- 等待事件

三种主要状态:

  • 就绪态:除了 CPU,其他条件都满足。
  • 运行态:正在 CPU 上执行。
  • 阻塞态:等待某个事件,如 I/O 完成、信号量可用。
3. 关键公式、规则和算法

常用性能指标:

text 复制代码
周转时间 = 完成时间 - 到达时间
带权周转时间 = 周转时间 / 服务时间
等待时间 = 周转时间 - 服务时间
平均周转时间 = 各进程周转时间之和 / 进程数
平均等待时间 = 各进程等待时间之和 / 进程数

符号说明:

  • 到达时间:进程进入就绪队列的时间。
  • 服务时间:进程需要 CPU 执行的总时间,也叫运行时间。
  • 完成时间:进程执行结束的时间。
  • 周转时间:从到达到完成的总时间。
  • 等待时间:在就绪队列中等待 CPU 的时间。

常见调度算法:

算法 思想 是否抢占 优点 缺点
FCFS 先来先服务 谁先到谁先执行 非抢占 简单公平 短作业可能等很久
SJF 短作业优先 服务时间短的先执行 通常非抢占 平均等待时间短 长作业可能饥饿
SRTF 最短剩余时间优先 剩余时间短者优先 抢占 更优平均等待 切换频繁
优先级调度 优先级高者先执行 可抢占或非抢占 适合区分重要性 低优先级可能饥饿
时间片轮转 RR 每个进程轮流运行一个时间片 抢占 响应快,适合分时系统 时间片选择影响大
多级反馈队列 新进程优先级高,用完时间片降级 抢占 兼顾短作业和交互 规则复杂
4. 易混点与常见误区
易错点 正确做法
把阻塞态和就绪态混淆 就绪态只缺 CPU,阻塞态是在等事件
忘记抢占式调度会中断当前进程 新进程到达时要重新比较优先级或剩余时间
周转时间写成完成时间 必须减去到达时间
RR 算法中进程到达顺序处理错误 时间片结束后进入队尾,新到达进程按到达时刻入队
5. 考试常见问法
  • 比较进程和线程的区别。
  • 画出进程状态转换图。
  • 给定进程到达时间和服务时间,计算 FCFS、SJF、RR 的平均周转时间。
  • 为什么时间片太大或太小都不好?
6. 典型例题

给定 3 个进程:

进程 到达时间 服务时间
P1 0 5
P2 1 3
P3 2 1

分别用 FCFS 和非抢占 SJF 计算平均周转时间。

7. 解题思路

FCFS:

text 复制代码
执行顺序:P1 -> P2 -> P3
P1 完成时间 = 5,周转时间 = 5 - 0 = 5
P2 完成时间 = 8,周转时间 = 8 - 1 = 7
P3 完成时间 = 9,周转时间 = 9 - 2 = 7
平均周转时间 = (5 + 7 + 7) / 3 = 6.33

非抢占 SJF:

text 复制代码
t=0 时只有 P1 到达,先执行 P1,完成于 t=5
t=5 时 P2、P3 都已到达,选服务时间短的 P3
执行顺序:P1 -> P3 -> P2
P1 周转时间 = 5 - 0 = 5
P3 完成时间 = 6,周转时间 = 6 - 2 = 4
P2 完成时间 = 9,周转时间 = 9 - 1 = 8
平均周转时间 = (5 + 4 + 8) / 3 = 5.67
8. 简短总结

本模块的核心是:进程是资源分配的基本单位,线程是 CPU 调度的基本单位;调度题要画时间轴,先求完成时间,再求周转时间和等待时间。


模块三:同步、互斥与经典问题

1. 本模块解决的问题

并发执行会带来一个问题:多个进程可能同时访问同一份共享数据,导致结果错误。同步与互斥解决的是:

  • 谁可以进入临界区?
  • 谁必须等谁完成后才能继续?
  • 如何用信号量、管程等机制表达进程协作?
2. 核心概念
概念 通俗解释 考试重点
并发 多个程序在时间上交替推进 与并行区别
临界资源 一次只允许一个进程使用的资源 打印机、共享变量
临界区 访问临界资源的代码段 互斥保护
互斥 同一时刻最多一个进程进入临界区 mutex 初值通常为 1
同步 多个进程按某种先后顺序协作 信号量初值常表示资源数量
信号量 一个整数加等待队列 P/V 操作
管程 把共享数据和操作封装起来的高级同步机制 条件变量
3. 关键规则和方法

信号量操作:

text 复制代码
P(S):申请资源
  S = S - 1
  若 S < 0,则进程阻塞

V(S):释放资源
  S = S + 1
  若 S <= 0,则唤醒一个等待进程

符号说明:

  • S:信号量,可以表示资源数量或条件是否满足。
  • P 操作:也叫 wait、down,用于申请或等待。
  • V 操作:也叫 signal、up,用于释放或通知。

临界区问题必须满足三条:

  1. 互斥进入:同一时刻最多一个进程在临界区。
  2. 空闲让进:临界区空闲时,应允许一个请求者进入。
  3. 有限等待:等待进程不能无限期等待。

经典生产者-消费者模型:

text 复制代码
semaphore mutex = 1;   // 互斥访问缓冲区
semaphore empty = n;   // 空缓冲区数量
semaphore full = 0;    // 满缓冲区数量

Producer:
  P(empty)
  P(mutex)
  放入产品
  V(mutex)
  V(full)

Consumer:
  P(full)
  P(mutex)
  取出产品
  V(mutex)
  V(empty)

注意:

  • mutex 解决互斥。
  • emptyfull 解决同步。
  • 一般先 P 同步信号量,再 P 互斥信号量;释放时先 V 互斥,再 V 同步。
4. 易混点与常见误区
易错点 后果 正确做法
把同步信号量和互斥信号量混用 逻辑混乱 互斥看临界区,同步看先后条件
P(mutex) 放在 P(empty) 前 可能死锁 先确认资源条件,再进入临界区
忘记 V 操作 其他进程永久等待 每个成功 P 的资源最终要 V
信号量初值乱设 程序行为错误 初值应对应资源数量或初始条件
5. 考试常见问法
  • 什么是临界区?临界区管理应满足哪些原则?
  • 用 P/V 操作解决生产者消费者问题。
  • 用信号量解决读者写者、哲学家进餐、理发师问题。
  • 判断某段同步代码是否会死锁或违反互斥。
6. 典型例题

有一个容量为 5 的缓冲区,多个生产者放入数据,多个消费者取出数据。请设置信号量并写出伪代码。

7. 解题思路

先判断资源:

  1. 缓冲区一次只能被一个进程修改,所以需要互斥信号量 mutex = 1
  2. 初始有 5 个空位,所以 empty = 5
  3. 初始没有产品,所以 full = 0

伪代码:

text 复制代码
semaphore mutex = 1;
semaphore empty = 5;
semaphore full = 0;

Producer:
  while true:
    produce item
    P(empty)
    P(mutex)
    insert item
    V(mutex)
    V(full)

Consumer:
  while true:
    P(full)
    P(mutex)
    remove item
    V(mutex)
    V(empty)
    consume item
8. 简短总结

同步互斥题的关键不是背代码,而是先问两件事:哪些代码必须互斥?哪些动作有先后条件? 然后分别设置互斥信号量和同步信号量。


模块四:死锁

1. 本模块解决的问题

死锁是并发系统中多个进程互相等待资源,导致谁也无法继续。它解决的问题是:

  • 什么条件下会死锁?
  • 如何预防、避免、检测和解除死锁?
  • 银行家算法如何判断系统是否安全?
2. 核心概念
概念 通俗解释 考试重点
死锁 一组进程互相等待对方持有的资源 四个必要条件
安全状态 存在一个安全序列,使所有进程最终完成 银行家算法
不安全状态 不保证死锁,但可能进入死锁 与死锁区别
资源分配图 用图表示进程和资源之间的请求/分配 检测死锁
银行家算法 分配前先判断是否仍安全 计算题高频
3. 关键条件和方法

死锁产生的四个必要条件:

  1. 互斥条件:资源一次只能被一个进程使用。
  2. 请求并保持条件:进程已占有资源,又请求新资源。
  3. 不可剥夺条件:资源不能被强制抢走。
  4. 循环等待条件:存在进程资源循环等待链。

处理死锁的四种策略:

策略 思想 常考点
预防死锁 破坏四个必要条件之一 问破坏哪个条件
避免死锁 分配前判断是否安全 银行家算法
检测死锁 允许死锁发生,再检测 资源分配图
解除死锁 撤销进程或剥夺资源 代价较大

银行家算法核心数据:

text 复制代码
Available:当前可用资源向量
Max:各进程最大需求矩阵
Allocation:各进程已分配资源矩阵
Need = Max - Allocation:各进程还需要的资源矩阵

安全性检查:

text 复制代码
Work = Available
寻找某个未完成进程 Pi,使 Need[i] <= Work
若找到,则假设 Pi 完成:
  Work = Work + Allocation[i]
  Finish[i] = true
重复上述过程
若所有 Finish 都为 true,则系统安全
4. 易混点与常见误区
易错点 正确理解
不安全状态等于死锁 不安全只是可能死锁,不一定已经死锁
Need 算错 Need = Max - Allocation
银行家算法只看 Available 还要看进程完成后释放 Allocation
破坏循环等待就是按序申请资源 所有进程按统一资源编号顺序申请
5. 考试常见问法
  • 死锁产生的四个必要条件是什么?
  • 死锁预防、避免、检测有什么区别?
  • 给定 Available、Max、Allocation,判断系统是否安全。
  • 某进程提出请求后,能否立即分配?
6. 典型例题

系统有 A、B 两类资源,当前:

text 复制代码
Available = (1, 1)

进程   Allocation   Max
P1     (1, 0)       (2, 1)
P2     (0, 1)       (1, 2)
P3     (1, 1)       (2, 2)

判断系统是否安全。

7. 解题思路

先计算 Need:

text 复制代码
P1 Need = (2,1) - (1,0) = (1,1)
P2 Need = (1,2) - (0,1) = (1,1)
P3 Need = (2,2) - (1,1) = (1,1)

初始 Work = Available = (1,1),三个进程都满足 Need <= Work。任选一个安全序列:

text 复制代码
P1 完成,Work = (1,1) + (1,0) = (2,1)
P2 完成,Work = (2,1) + (0,1) = (2,2)
P3 完成,Work = (2,2) + (1,1) = (3,3)

存在安全序列 P1 -> P2 -> P3,所以系统安全。

8. 简短总结

死锁题要抓住两层:概念题背四条件,计算题用银行家算法。银行家算法不要凭感觉判断,一定写出 NeedWork 和安全序列。


模块五:内存管理基础

1. 本模块解决的问题

程序要运行,必须把指令和数据放入内存。但内存有限,多个进程还要互相隔离。内存管理解决的是:

  • 程序地址如何转换成真实内存地址?
  • 内存如何分配给多个进程?
  • 如何防止一个进程访问另一个进程的内存?
2. 核心概念
概念 通俗解释 考试重点
逻辑地址 程序看到的地址 也叫虚拟地址
物理地址 内存硬件中的真实地址 地址转换结果
地址重定位 逻辑地址转换为物理地址 静态/动态重定位
连续分配 一个进程占一整块连续内存 内外碎片
分页 把逻辑空间分成页,物理内存分成页框 页表、地址转换
分段 按程序逻辑模块划分段 段表、保护和共享
TLB 快表,缓存页表项 有效访问时间
3. 关键公式、规则和方法

分页地址结构:

text 复制代码
逻辑地址 = 页号 p + 页内偏移 d
物理地址 = 页框号 f + 页内偏移 d

如果页面大小为 2^k 字节:

  • k 位是页内偏移。
  • 高位是页号。

页表作用:

text 复制代码
页号 p -> 页框号 f

分段地址结构:

text 复制代码
逻辑地址 = 段号 s + 段内偏移 d
若 d < 段长,则物理地址 = 段基址 + d
否则越界

连续分配中的碎片:

类型 含义 常见位置
内部碎片 分配出去但没用完的空间 固定分区、分页
外部碎片 空闲但不连续,无法满足大请求 动态分区、分段
4. 易混点与常见误区
易错点 正确理解
页和页框混淆 页属于逻辑地址空间,页框属于物理内存
分页会产生外部碎片 分页主要产生内部碎片,不产生外部碎片
分段地址不检查越界 分段必须检查段内偏移是否小于段长
TLB 命中还去访问页表 TLB 命中时可直接得到页框号
5. 考试常见问法
  • 比较分页和分段。
  • 给定页面大小和逻辑地址,求页号、页内偏移和物理地址。
  • 给定段表,判断地址是否合法并求物理地址。
  • 解释内部碎片和外部碎片。
6. 典型例题

某分页系统页面大小为 1KB,逻辑地址为 2500,页表如下:

页号 页框号
0 5
1 8
2 3

求逻辑地址 2500 对应的物理地址。

7. 解题思路

页面大小 1KB = 1024B。

text 复制代码
页号 p = 2500 / 1024 = 2
页内偏移 d = 2500 % 1024 = 452
页号 2 对应页框号 3
物理地址 = 3 * 1024 + 452 = 3524
8. 简短总结

内存管理题的核心是地址转换。分页看页号和页内偏移,分段看段号、段内偏移和越界检查。考试中先写地址结构,再代入计算,最稳。


模块六:虚拟内存与页面置换

1. 本模块解决的问题

虚拟内存让程序以为自己拥有很大的连续内存,实际上只把当前需要的部分装入物理内存。它解决的是:

  • 程序比内存大时如何运行?
  • 缺页时操作系统如何处理?
  • 内存满了要换出哪一页?
2. 核心概念
概念 通俗解释 考试重点
虚拟内存 用磁盘扩展内存的逻辑机制 局部性原理
请求分页 页面用到时再调入内存 缺页处理
缺页中断 访问页不在内存时触发 中断流程
页面置换 内存满时换出某页 FIFO、LRU、OPT
抖动 频繁缺页,系统大部分时间在换页 工作集
工作集 进程近期访问页面集合 防止抖动
3. 关键公式、规则和算法

缺页处理过程:

text 复制代码
访问页面
-> 查页表,发现页不在内存
-> 产生缺页中断
-> 操作系统找到该页在外存的位置
-> 若有空闲页框,直接调入
-> 若无空闲页框,选择页面换出
-> 更新页表
-> 重新执行被中断的指令

页面置换算法:

算法 思想 特点
OPT 最佳置换 换出未来最长时间不用的页 理论最优,实际不可实现
FIFO 先进先出 换出最早进入内存的页 简单,可能 Belady 异常
LRU 最近最久未使用 换出最近最长时间没用过的页 接近 OPT,常考
Clock 时钟算法 给页面访问位,循环寻找可换页 LRU 的近似实现

有效访问时间 EAT:

text 复制代码
EAT = (1 - p) * 内存访问时间 + p * 缺页处理时间

符号说明:

  • p:缺页率。
  • 内存访问时间:未缺页时访问内存所需时间。
  • 缺页处理时间:处理中断、磁盘读写、更新页表等总时间。
  • 适用条件:只区分"缺页"和"不缺页"两种情况的简化计算。
4. 易混点与常见误区
易错点 正确理解
OPT 可实际使用 OPT 需要知道未来访问序列,只用于理论比较
FIFO 页框越多缺页一定越少 FIFO 可能出现 Belady 异常
LRU 看进入内存时间 LRU 看最近一次被访问的时间
缺页中断后从下一条指令执行 应重新执行导致缺页的指令
5. 考试常见问法
  • 什么是虚拟内存?它依据什么原理?
  • 给定页面访问序列和页框数,计算 FIFO、LRU、OPT 缺页次数。
  • 什么是抖动?如何减少抖动?
  • 计算有效访问时间。
6. 典型例题

页面访问序列为:

text 复制代码
1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5

页框数为 3,使用 FIFO 算法,求缺页次数。

7. 解题思路

逐步维护队列,内存未命中即缺页:

访问 内存状态 是否缺页
1 1
2 1,2
3 1,2,3
4 2,3,4 是,换出 1
1 3,4,1 是,换出 2
2 4,1,2 是,换出 3
5 1,2,5 是,换出 4
1 1,2,5
2 1,2,5
3 2,5,3 是,换出 1
4 5,3,4 是,换出 2
5 5,3,4

缺页次数为 9

8. 简短总结

虚拟内存题一定要手动画表。FIFO 看谁最早进入,LRU 看谁最久没被访问,OPT 看未来谁最晚再用或不再用。


模块七:文件系统

1. 本模块解决的问题

内存中的数据断电会丢失,文件系统负责把数据长期保存在磁盘中,并让用户用文件和目录的方式组织数据。它解决的是:

  • 文件如何命名、组织、访问?
  • 文件内容如何放到磁盘块上?
  • 如何管理空闲磁盘空间?
  • 如何提高文件访问效率?
2. 核心概念
概念 通俗解释 考试重点
文件 具有名字的一组相关信息 文件属性、操作
目录 管理文件名和文件控制信息的结构 路径查找
FCB 文件控制块,记录文件属性和磁盘位置 与目录项关系
inode 类 Unix 系统中的索引节点 文件元数据
顺序访问 从头到尾依次读写 文本、日志
随机访问 可跳到任意位置读写 数据库、二进制文件
空闲空间管理 记录哪些磁盘块未使用 位示图、空闲链表
3. 关键方法和结构

文件物理分配方式:

分配方式 思想 优点 缺点
连续分配 文件占连续磁盘块 顺序和随机访问快 外部碎片,扩展困难
链接分配 每块指向下一块 无外部碎片,易扩展 随机访问慢,指针占空间
索引分配 用索引块记录所有数据块地址 支持随机访问,易扩展 索引块有开销

目录结构:

目录结构 特点
单级目录 所有文件在一个目录,简单但易重名
两级目录 每个用户一个目录,减少重名
树形目录 最常见,支持层次化路径
无环图目录 支持共享,但要避免环

空闲空间管理:

方法 思想 适合考点
位示图 每个磁盘块用 1 位表示空闲/占用 计算块号
空闲链表 把空闲块串成链表 分配简单
成组链接 把多个空闲块信息分组管理 Unix 相关
4. 易混点与常见误区
易错点 正确理解
目录中一定存文件内容 目录主要存文件名和控制信息,不直接存大段内容
链接分配随机访问快 链接分配必须沿链查找,随机访问慢
连续分配没有碎片 连续分配容易产生外部碎片
索引分配没有开销 索引块本身占用磁盘空间
5. 考试常见问法
  • 比较连续、链接、索引三种文件分配方式。
  • 树形目录的优点是什么?
  • 给定位示图,求某磁盘块对应的字节号和位号。
  • inode 与文件名有什么关系?
6. 典型例题

某磁盘块大小为 1KB,一个索引块中每个块号占 4B。若采用一级索引,一个索引块最多能管理多大的文件?

7. 解题思路

一个索引块大小为 1KB = 1024B,每个块号占 4B:

text 复制代码
索引项数量 = 1024 / 4 = 256
每个索引项指向一个数据块
最大文件大小 = 256 * 1KB = 256KB

所以一级索引最多管理 256KB 文件。

8. 简短总结

文件系统的核心是"逻辑文件如何映射到物理磁盘块"。三种分配方式是考试重点:连续快但难扩展,链接易扩展但随机慢,索引综合性好但有额外开销。


模块八:I/O 与磁盘管理

1. 本模块解决的问题

I/O 设备速度慢、种类多,CPU 速度快且宝贵。I/O 管理解决的是:

  • CPU 如何高效控制设备?
  • 中断、DMA、缓冲有什么作用?
  • 磁盘请求如何排序才能减少寻道时间?
2. 核心概念
概念 通俗解释 考试重点
程序控制 I/O CPU 一直轮询设备状态 浪费 CPU
中断驱动 I/O 设备完成后中断通知 CPU 常用机制
DMA 设备和内存直接传输,CPU 少参与 大块数据传输
缓冲 用内存区域平衡速度差异 单缓冲、双缓冲
设备驱动程序 操作系统中控制具体设备的软件 屏蔽硬件差异
磁盘调度 安排磁盘请求访问顺序 计算移动磁道数
3. 关键方法和算法

I/O 控制方式比较:

方式 CPU 参与程度 适用场景
程序查询方式 最高,反复轮询 简单低速设备
中断方式 中等,完成后通知 字符设备、一般 I/O
DMA 方式 较低,块传输 磁盘、网卡等高速设备
通道方式 更低,专用 I/O 处理器 大型机系统

磁盘访问时间:

text 复制代码
磁盘访问时间 = 寻道时间 + 旋转延迟 + 传输时间

考试中最常计算的是 磁头移动磁道数,通常近似代表寻道代价。

磁盘调度算法:

算法 思想 特点
FCFS 按请求到达顺序服务 公平但效率可能低
SSTF 最短寻道时间优先,选离当前磁头最近的请求 平均寻道短,可能饥饿
SCAN 电梯算法 磁头按一个方向移动,沿途服务,到端点后反向 避免严重饥饿
C-SCAN 只按一个方向服务,到端点后快速回到另一端 等待时间更均匀
4. 易混点与常见误区
易错点 正确理解
DMA 完全不需要 CPU CPU 仍需初始化 DMA 和处理中断
SSTF 一定最好 SSTF 可能让远处请求长期等待
SCAN 必须走到物理端点 看题目要求,有的题规定到端点,有的只到最远请求
磁盘调度算请求个数 通常算磁头移动总距离
5. 考试常见问法
  • 比较程序查询、中断、DMA。
  • 为什么要设置缓冲区?
  • 给定磁道请求序列,用 FCFS、SSTF、SCAN 计算磁头移动距离。
  • 什么是设备独立性?
6. 典型例题

磁头当前在 53 号磁道,请求序列为:

text 复制代码
98, 183, 37, 122, 14, 124, 65, 67

使用 FCFS 算法,求总移动磁道数。

7. 解题思路

按原顺序访问:

text 复制代码
53 -> 98:45
98 -> 183:85
183 -> 37:146
37 -> 122:85
122 -> 14:108
14 -> 124:110
124 -> 65:59
65 -> 67:2
总移动 = 45 + 85 + 146 + 85 + 108 + 110 + 59 + 2 = 640

所以总移动磁道数为 640

8. 简短总结

I/O 模块重点掌握三件事:中断让 CPU 不必傻等,DMA 适合大块数据传输,磁盘调度题要按算法画出磁头移动路线。


模块九:保护、安全与系统调用

1. 本模块解决的问题

多用户、多进程系统必须保证资源不被非法访问。本模块解决:

  • 如何限制程序权限?
  • 操作系统如何提供安全接口?
  • 文件和内存如何保护?
2. 核心概念
概念 通俗解释 考试重点
访问控制 决定谁可以访问什么资源 权限矩阵
权限位 文件读、写、执行权限 Unix 权限
特权指令 只能内核态执行的指令 I/O、关中断
系统调用接口 用户程序进入内核的入口 安全检查
保护域 主体可访问资源及权限的集合 保护机制
3. 关键规则

常见保护机制:

  1. CPU 保护:用户态和内核态,特权指令只能内核执行。
  2. 内存保护:基址/界限寄存器、页表权限位。
  3. 文件保护:读、写、执行权限;访问控制表。
  4. 设备保护:用户程序不能直接操作设备寄存器。

Unix 文件权限示例:

text 复制代码
rwxr-x---
前三位:文件所有者权限
中三位:同组用户权限
后三位:其他用户权限
r = read,w = write,x = execute
4. 易混点与常见误区
易错点 正确理解
有保护就绝对安全 保护是机制,安全还依赖策略和实现
用户态不能做任何 I/O 用户态可通过系统调用请求内核完成 I/O
文件权限只保护内容 权限还影响执行、删除、目录进入等行为
5. 考试常见问法
  • 为什么要设置特权指令?
  • 系统调用如何保证安全?
  • 简述内存保护的方法。
  • 文件访问控制有哪些方式?
6. 典型例题

说明为什么修改页表应作为特权操作。

7. 解题思路

页表决定逻辑地址到物理地址的映射。如果用户程序能随意修改页表,就可能访问内核或其他进程的内存,破坏系统安全。因此修改页表必须由内核在内核态完成,并进行权限检查。

8. 简短总结

保护与安全模块分值通常不如同步、内存、调度高,但适合拿概念分。核心记住:凡是会影响全局资源和系统安全的操作,都应由内核控制。


6. 高频考点与考试重点

最值得优先掌握的 20% 内容

如果复习时间有限,优先掌握以下内容:

  1. 进程三态模型与状态转换
  2. 进程与线程区别
  3. FCFS、SJF、RR、优先级调度计算
  4. 信号量 P/V 操作与生产者消费者模型
  5. 死锁四个必要条件与银行家算法
  6. 分页地址转换与页表计算
  7. 虚拟内存、缺页中断、FIFO/LRU/OPT 页面置换
  8. 文件分配方式:连续、链接、索引
  9. 磁盘调度:FCFS、SSTF、SCAN
  10. 系统调用、中断、用户态/内核态

高频考点清单

高频考点 题型 掌握标准
操作系统功能 简答、选择 能说出四大管理功能
用户态与内核态 简答 能解释为什么需要权限区分
进程状态转换 画图、选择 能判断运行、就绪、阻塞转换
调度算法 计算 能画时间轴并算平均周转时间
信号量 代码填空、PV 题 能设置初值和 P/V 顺序
死锁 简答、计算 会四条件和银行家算法
分页 计算 会页号、偏移、物理地址
虚拟内存 计算、简答 会页面置换和缺页率
文件系统 简答、计算 会三种分配方式优缺点
磁盘调度 计算 会算移动总磁道数

必背概念、公式、定理或方法

类型 内容
概念 进程、线程、PCB、临界区、死锁、虚拟内存、缺页中断、文件控制块
公式 周转时间、带权周转时间、等待时间、有效访问时间
方法 P/V 操作、银行家算法、分页地址转换、页面置换、磁盘调度
定理/条件 死锁四个必要条件、临界区三原则、局部性原理

7. 典型题型与解题模板

题型一:调度算法计算题

常见问法:给出进程到达时间和服务时间,计算平均周转时间、平均等待时间。

解题模板:

text 复制代码
1. 按算法规则确定执行顺序。
2. 画时间轴,标出每个进程开始和完成时间。
3. 计算每个进程:
   周转时间 = 完成时间 - 到达时间
   等待时间 = 周转时间 - 服务时间
   带权周转时间 = 周转时间 / 服务时间
4. 求平均值。
5. 若是抢占式算法,遇到新进程到达时重新比较。

题型二:信号量 PV 设计题

常见问法:用 P/V 操作解决同步互斥问题。

解题模板:

text 复制代码
1. 找共享资源:是否需要互斥?
2. 找先后关系:谁必须等待谁?
3. 为互斥设置 mutex,初值通常为 1。
4. 为资源数量设置信号量,初值为资源数量。
5. 为条件同步设置信号量,初值看初始条件是否满足。
6. 写代码:
   P(条件信号量)
   P(mutex)
   访问临界区
   V(mutex)
   V(通知信号量)
7. 检查是否存在死锁、漏 V、顺序错误。

题型三:银行家算法题

常见问法:判断当前状态是否安全,某请求能否分配。

解题模板:

text 复制代码
1. 写出 Available、Max、Allocation。
2. 计算 Need = Max - Allocation。
3. 若有请求 Request:
   检查 Request <= Need
   检查 Request <= Available
   试分配后再做安全性检查。
4. 安全性检查:
   Work = Available
   找 Need[i] <= Work 的进程
   假设完成并释放资源:Work += Allocation[i]
   记录安全序列
5. 能找到完整安全序列,则安全;否则不安全。

题型四:分页地址转换题

常见问法:给定逻辑地址、页面大小、页表,求物理地址。

解题模板:

text 复制代码
1. 确定页面大小 page_size。
2. 页号 p = 逻辑地址 / page_size。
3. 页内偏移 d = 逻辑地址 % page_size。
4. 查页表得到页框号 f。
5. 物理地址 = f * page_size + d。
6. 若页号不存在或无效,则产生缺页或越界。

题型五:页面置换题

常见问法:给定访问序列和页框数,计算缺页次数。

解题模板:

text 复制代码
1. 画表,列出每次访问的页号。
2. 若页已在内存,不缺页。
3. 若页不在内存:
   有空页框则直接装入。
   无空页框则按算法换出。
4. FIFO 看最早进入内存的页。
5. LRU 看最近最久未访问的页。
6. OPT 看未来最长时间不用的页。
7. 统计缺页次数和缺页率。

题型六:磁盘调度题

常见问法:给定当前磁头位置和请求序列,求总移动磁道数。

解题模板:

text 复制代码
1. 标出当前磁头位置。
2. 按算法确定服务顺序:
   FCFS:原顺序
   SSTF:每次选最近请求
   SCAN:沿一个方向服务,到端点或最远请求后反向
3. 计算相邻访问位置的距离。
4. 总移动距离 = 所有距离之和。
5. 注意题目是否要求磁头走到磁盘端点。

8. 易错点与避坑指南

易错点 为什么错 避坑方法
把程序和进程等同 程序是静态文件,进程是动态执行 答题时写"进程 = 程序的一次执行"
把就绪和阻塞混淆 就绪缺 CPU,阻塞缺事件 判断是否"只差 CPU"
调度题不画时间轴 容易漏抢占、错完成时间 每题必须画时间线
P/V 顺序错误 可能死锁或破坏互斥 先同步条件,再进临界区
信号量初值随便设 初值代表资源数量或初始条件 写出每个信号量含义
不安全状态说成死锁 不安全只是可能死锁 死锁是已经互相等待
页号偏移算错 页面大小换算错误 先把 KB 转成字节
LRU 按进入时间淘汰 LRU 按最近访问时间 每次访问都更新时间
磁盘 SCAN 端点处理错 不同题设不同 看题目写"到端点"还是"到最远请求"
文件分配方式优缺点混乱 三种方式适用场景不同 连续快、链接易扩、索引综合

9. 80 分复习策略

9.1 80 分所需能力结构

要在普通课程考试中达到 80 分,通常不需要掌握所有高级细节,但必须做到:

能力 要求
概念准确 能解释核心名词,不混淆相近概念
机制清楚 能说出中断、缺页、调度、系统调用的大致过程
计算稳定 调度、页面置换、银行家、磁盘调度少丢分
模板熟练 PV 操作和简答题有固定答题结构
易错可控 不因单位、顺序、初值和状态判断丢基础分

9.2 高频题型优先级

优先级 内容 原因
第一优先级 调度、PV、分页、页面置换、银行家算法 分值高、题型稳定
第二优先级 进程线程、死锁条件、文件分配、磁盘调度 高频且容易拿分
第三优先级 中断、系统调用、I/O 控制、保护安全 多为概念分

9.3 每类题型得分策略

题型 得分关键
选择题 抓定义关键词,例如"就绪只缺 CPU"
填空题 熟背公式、四条件、三原则、算法名称
简答题 按"定义 + 原因 + 过程/优缺点 + 例子"作答
计算题 写表格和中间过程,部分分很重要
PV 题 先写信号量含义和初值,再写代码
综合题 先拆成资源、状态、算法三部分

9.4 考前 3 天复习重点

第 1 天:重建框架

  • 背操作系统四大功能。
  • 画进程状态转换图。
  • 整理进程/线程、分页/分段、同步/互斥、死锁/不安全状态对比。
  • 做 2 道调度计算题。

第 2 天:攻克计算与 PV

  • 做 FCFS、SJF、RR 各 1 题。
  • 做 FIFO、LRU、OPT 页面置换各 1 题。
  • 做银行家算法 2 题。
  • 默写生产者消费者 PV 模板。

第 3 天:查漏补缺

  • 背死锁四条件、临界区三原则、局部性原理。
  • 复习文件分配和磁盘调度。
  • 把错题重新做一遍,不看答案写过程。
  • 准备简答题模板。

9.5 考场答题策略

  1. 先拿稳定分:先做概念题、简单计算题,避免卡在 PV 综合题。
  2. 计算题写过程:即使最终答案错,也能拿步骤分。
  3. PV 题先写信号量说明:老师更容易看出你的逻辑。
  4. 简答题分点作答:每点一句话,避免长段空泛描述。
  5. 遇到不确定算法题,画表:表格比脑算可靠。
  6. 检查单位和初值:KB 与 B、信号量初值、页框数最容易错。

10. 分阶段学习计划

阶段一:快速入门阶段

项目 内容
学习目标 建立操作系统整体框架,知道各模块解决什么问题
学习内容 操作系统功能、进程概念、内存与文件基本概念
推荐时间 1 到 2 天,每天 2 到 3 小时
产出结果 画出一张"CPU-内存-文件-I/O"知识地图
自测标准 能用自己的话解释操作系统为什么需要进程、页表、文件系统

具体任务:

  1. 阅读本文第 2 到 4 部分。
  2. 手动画一次知识地图。
  3. 对每个模块写一句话概括。

阶段二:核心掌握阶段

项目 内容
学习目标 掌握高频概念、机制和公式
学习内容 进程调度、同步互斥、死锁、内存管理、虚拟内存
推荐时间 5 到 7 天,每天 2 到 4 小时
产出结果 完成核心概念表和公式表
自测标准 不看资料能解释 10 个核心概念,并完成基础计算题

具体任务:

  1. 每天学习 1 到 2 个核心模块。
  2. 每学完一个模块,完成对应典型例题。
  3. 用错题本记录"错因",例如单位错、算法规则错、概念混淆。

阶段三:刷题巩固阶段

项目 内容
学习目标 提高考试得分稳定性
学习内容 调度、PV、银行家、页面置换、磁盘调度专项题
推荐时间 4 到 6 天,每天 3 小时左右
产出结果 每类题型形成固定解题模板
自测标准 同类题正确率达到 80% 以上

具体刷题安排:

题型 推荐数量 检查重点
调度算法 6 到 8 题 时间轴、抢占点、平均值
PV 操作 5 到 6 题 信号量初值、P/V 顺序
银行家算法 4 到 5 题 Need、Work、安全序列
页面置换 6 到 8 题 缺页次数、替换对象
磁盘调度 4 到 5 题 服务顺序、移动距离

阶段四:考前冲刺阶段

项目 内容
学习目标 查漏补缺,稳定拿 80 分
学习内容 高频表格、错题、简答模板
推荐时间 考前 2 到 3 天
产出结果 一页纸速查表 + 错题清单
自测标准 30 分钟内完成一套核心自测题,正确率 80% 以上

冲刺重点:

  1. 默写死锁四条件、临界区三原则、操作系统四大功能。
  2. 重做所有错题,不看答案写步骤。
  3. 复习所有"易混点对比表"。
  4. 做一套计时练习,训练答题速度。

11. 一页纸速查表

11.1 高频概念表

概念 一句话解释
操作系统 管理硬件资源并为程序提供服务的系统软件
进程 程序的一次执行过程,是资源分配的基本单位
线程 进程内的执行流,是 CPU 调度的基本单位
PCB 保存进程状态、寄存器、资源等信息的数据结构
临界区 访问临界资源的代码段
信号量 用整数和等待队列实现同步互斥的机制
死锁 多个进程因互相等待资源而无法继续
分页 把逻辑空间和物理内存划分成固定大小块
页表 记录页号到页框号映射的数据结构
虚拟内存 只把需要的页面调入内存,让程序拥有更大逻辑空间
缺页中断 访问页面不在内存时产生的异常
文件系统 管理文件、目录和磁盘空间的操作系统模块
DMA 设备与内存直接传输数据,减少 CPU 参与

11.2 高频公式/规则/方法表

内容 公式或规则
周转时间 完成时间 - 到达时间
带权周转时间 周转时间 / 服务时间
等待时间 周转时间 - 服务时间
页号 逻辑地址 / 页面大小
页内偏移 逻辑地址 % 页面大小
物理地址 页框号 * 页面大小 + 页内偏移
Need Max - Allocation
有效访问时间 (1 - p) * 内存访问时间 + p * 缺页处理时间
磁盘移动距离 相邻访问磁道差的绝对值之和

11.3 易混知识点对比表

对比项 A B 核心区别
程序 vs 进程 静态代码 动态执行 是否正在运行
进程 vs 线程 资源分配单位 CPU 调度单位 线程共享进程资源
并发 vs 并行 交替推进 同时执行 是否真正同一时刻
同步 vs 互斥 解决先后关系 解决独占访问 一个看顺序,一个看冲突
就绪 vs 阻塞 只缺 CPU 等事件 是否能被调度
分页 vs 分段 固定大小 按逻辑模块 分页利于管理,分段利于共享保护
内部碎片 vs 外部碎片 分配块内部浪费 空闲块不连续 浪费位置不同
FIFO vs LRU 最早进入 最久未访问 判断依据不同
死锁 vs 不安全 已无法推进 可能无法推进 是否已经形成等待

11.4 典型题型与解法表

题型 必做步骤
调度计算 排序 -> 画时间轴 -> 求完成时间 -> 求周转/等待
PV 操作 找资源 -> 找先后关系 -> 设信号量 -> 写 P/V -> 检查死锁
银行家算法 算 Need -> Work 检查 -> 找安全序列
分页地址 算页号和偏移 -> 查页表 -> 算物理地址
页面置换 画页面表 -> 按算法替换 -> 统计缺页
磁盘调度 定服务顺序 -> 算相邻距离 -> 求总和
简答题 定义 -> 原因 -> 过程/优缺点 -> 例子

12. 自测题

12.1 概念题

  1. 简述操作系统的四大基本功能。
  2. 进程和线程有什么区别?
  3. 什么是临界区?临界区管理应满足哪些原则?
  4. 死锁产生的四个必要条件是什么?
  5. 什么是虚拟内存?它主要依据什么原理?

12.2 计算题

  1. 有三个进程:
进程 到达时间 服务时间
P1 0 4
P2 1 3
P3 2 2

使用 FCFS 算法,求平均周转时间。

  1. 某分页系统页面大小为 2KB,逻辑地址为 5000,页表如下:
页号 页框号
0 2
1 5
2 7

求逻辑地址 5000 对应的物理地址。

  1. 页面访问序列为:
text 复制代码
1, 2, 1, 3, 1, 2, 4

页框数为 3,使用 FIFO 算法,求缺页次数。

  1. 磁头当前在 50 号磁道,请求序列为:
text 复制代码
60, 20, 70, 10

使用 FCFS 算法,求总移动磁道数。

12.3 分析题

  1. 为什么生产者消费者问题中需要 mutexemptyfull 三个信号量?
  2. 为什么用户程序不能直接修改页表?
  3. 简述缺页中断的处理过程。

13. 自测题答案与解析

13.1 概念题答案

1. 操作系统的四大基本功能

操作系统主要功能包括:

  1. 处理机管理:负责进程、线程和 CPU 调度。
  2. 存储器管理:负责内存分配、地址转换、虚拟内存。
  3. 文件管理:负责文件、目录和磁盘空间管理。
  4. 设备管理:负责 I/O 设备控制、中断、缓冲和驱动程序。

2. 进程和线程的区别

进程是程序的一次执行过程,是资源分配的基本单位;线程是进程内的执行流,是 CPU 调度的基本单位。同一进程内的线程共享地址空间、打开文件等资源,但每个线程有自己的程序计数器、寄存器和栈。

3. 临界区与管理原则

临界区是访问临界资源的代码段。管理临界区应满足:

  1. 互斥进入:同一时刻最多一个进程进入。
  2. 空闲让进:临界区空闲时应允许请求者进入。
  3. 有限等待:等待进程不能无限期等待。

4. 死锁四个必要条件

死锁产生必须同时满足:

  1. 互斥条件。
  2. 请求并保持条件。
  3. 不可剥夺条件。
  4. 循环等待条件。

5. 虚拟内存与依据原理

虚拟内存是一种存储管理技术,它让程序看到比实际物理内存更大的逻辑地址空间,只在需要时把页面调入内存。它主要依据 局部性原理:程序在一段时间内通常集中访问少量代码和数据。

13.2 计算题答案

6. FCFS 平均周转时间

执行顺序:

text 复制代码
P1 -> P2 -> P3

完成时间:

text 复制代码
P1 完成于 4
P2 完成于 7
P3 完成于 9

周转时间:

text 复制代码
P1 = 4 - 0 = 4
P2 = 7 - 1 = 6
P3 = 9 - 2 = 7
平均周转时间 = (4 + 6 + 7) / 3 = 17 / 3 = 5.67

答案:5.67

7. 分页地址转换

页面大小为 2KB = 2048B。

text 复制代码
页号 p = 5000 / 2048 = 2
页内偏移 d = 5000 % 2048 = 904
页号 2 对应页框号 7
物理地址 = 7 * 2048 + 904 = 15240

答案:15240

8. FIFO 页面置换

页面访问过程:

访问 内存状态 是否缺页
1 1
2 1,2
1 1,2
3 1,2,3
1 1,2,3
2 1,2,3
4 2,3,4 是,换出 1

缺页次数为 4

9. FCFS 磁盘调度

text 复制代码
50 -> 60:10
60 -> 20:40
20 -> 70:50
70 -> 10:60
总移动 = 10 + 40 + 50 + 60 = 160

答案:160

13.3 分析题答案

10. 为什么需要 mutex、empty、full 三个信号量?

  • mutex 用于互斥访问缓冲区,防止多个生产者或消费者同时修改缓冲区。
  • empty 表示空缓冲区数量,生产者在没有空位时必须等待。
  • full 表示已有产品数量,消费者在没有产品时必须等待。

三者分别解决不同问题:mutex 解决互斥,emptyfull 解决同步。

11. 为什么用户程序不能直接修改页表?

页表决定逻辑地址到物理地址的映射。如果用户程序能直接修改页表,就可能访问内核空间或其他进程的内存,破坏隔离和安全。因此页表修改必须由操作系统内核在内核态完成。

12. 缺页中断处理过程

缺页中断处理过程如下:

text 复制代码
访问页面
-> 查页表发现页面不在内存
-> 产生缺页中断,进入内核
-> 操作系统找到页面在外存的位置
-> 若有空闲页框,则调入页面
-> 若没有空闲页框,则按置换算法换出一页
-> 更新页表和相关标志位
-> 返回用户程序,重新执行导致缺页的指令

14. 最后总结

操作系统不是一堆孤立名词,而是一套围绕"资源管理"的完整体系:

  • CPU 管理:用进程、线程和调度解决多个程序共享 CPU 的问题。
  • 并发管理:用同步、互斥和死锁处理解决多个进程协作的问题。
  • 内存管理:用分页、分段和虚拟内存解决程序装入、隔离和扩展的问题。
  • 文件与 I/O 管理:用文件系统、设备驱动、缓冲和磁盘调度解决长期存储和外设访问的问题。
  • 保护机制:用用户态/内核态、系统调用、权限控制保证系统安全。

想考到 80 分以上,最有效的路线不是把教材从头背到尾,而是:

  1. 先建立资源管理主线。
  2. 再掌握高频机制和概念区别。
  3. 最后反复训练稳定题型:调度、PV、银行家、分页、页面置换、磁盘调度。

如果只能记一句话:

操作系统的核心任务,是在安全和高效的前提下,把有限的硬件资源分配给多个正在运行的程序。

相关推荐
renhongxia12 小时前
ORACLE-SWE:量化Oracle 信息信号对SWE代理的贡献
人工智能·深度学习·学习·语言模型·分类
AI_零食2 小时前
声音分贝模拟与波动动画展示:鸿蒙Flutter框架 实现的声音可视化应用
学习·flutter·华为·开源·harmonyos
Keep Running *2 小时前
Spring Cloud Alibaba_学习笔记
笔记·学习
liliwoliliwo3 小时前
deim跑代码记录学习思路
学习
XH华3 小时前
数据结构第九章:树的学习(下)
数据结构·学习
aWty_5 小时前
实分析入门(1)--皮亚诺和自然数
学习
weixin_513449966 小时前
walk_these_ways项目学习记录第八篇(通过行为多样性 (MoB) 实现地形泛化)--策略网络
开发语言·人工智能·python·学习
LX567776 小时前
传统编辑如何考取AI内容编辑师认证?学习路径详解
人工智能·学习