操作系统第 1 章:操作系统概述
408 操作系统「操作系统概述」复习:核心知识点、真题题型、通用解法与易错点。
Last updated on
本章依据本站 408 真题「操作系统第 1 章 操作系统概述」 和 408 模拟选择题「第 1 章 计算机系统概述」 整理。站内这一章的真题覆盖很完整:发展历程、运行环境、操作系统结构、引导;其中真正的绝对重点是 用户态/内核态 + 特权指令 + 中断异常 + 系统调用。站内也明确建议按“真题确定命题方式,模拟题补充盲点”的顺序复习。(Any Docs)
内容按照 408 实际题型 组织,而不是机械按教材知识点展开。
一、先建立这一章的完整知识地图
这一章看起来知识点零散,实际上只有五条主线:
-
操作系统是什么、为什么需要它
- 操作系统功能
- 并发、共享、虚拟、异步
- 用户接口、系统调用
-
操作系统怎么发展来的
- 手工操作
- 单道批处理
- 多道批处理
- 分时系统
- 实时系统
- 多任务系统
-
CPU怎样把操作系统和普通程序隔离开
- 用户态 / 内核态
- 特权指令
- 非特权指令
-
CPU怎样从用户程序进入操作系统
- 中断
- 异常
- Trap
- 系统调用
- 现场保护
-
操作系统自己怎么组织和启动
- 宏内核
- 微内核
- 模块化、分层结构
- BIOS/UEFI → 引导程序 → 内核 → RAM
从网站真题数量也能看出来,第3、4条远远比其他部分重要。2010、2011、2012、2013、2014、2015、2017、2019、2021、2022、2023、2024连续多年都从运行环境这里命题。(Any Docs)
二、题型一:并发和并行的判断
这是最基础,但非常容易被语言绕进去的题型。
1. 必须先分清两个概念
并发
多个事件在同一时间段内交替发生。
单核 CPU:
P1 执行一会儿 → P2 → P1 → P3……
宏观上同时运行,微观上同一时刻只有一个程序占 CPU。
并行
多个事件在同一个时刻真正同时发生。
必须存在彼此独立、能同时工作的硬件执行部件。
典型真题:2009年
题目问:
在单处理机系统中,下列哪些能够并行? I. 进程与进程 II. 处理机与设备 III. 处理机与通道 IV. 设备与设备
答案:II、III、IV,即 D。 (Any Docs)
怎么判断?
这里的“单处理机”意味着只有一个 CPU。
因此两个进程:
P1 和 P2 都需要 CPU。
同一瞬间 CPU 只能给一个:
所以
进程 ↔ 进程:只能并发,不能并行。
但是 CPU 和磁盘呢?
CPU 可以算:
CPU:执行 P2
同时磁盘控制器可以:
磁盘:为 P1 做 I/O
因此:
- CPU 与设备:可以并行
- CPU 与通道:可以并行
- 不同设备之间:可以并行
这类题的万能判断法
看到“A和B能不能并行”,直接问:
A、B 是否必须争抢同一个硬件执行部件?
如果都必须占同一个单核 CPU:
不能并行。
如果一个用 CPU,一个用 I/O 控制器:
可以并行。
三、题型二:多道程序设计
第 1 章最核心的历史知识不是年份,而是:
为什么需要多道程序?
1. 单道程序的问题
假设程序执行过程:
CPU 计算 → 磁盘 I/O → CPU计算
当程序等待磁盘时:
CPU只能闲着。
所以 CPU 利用率很低。
2. 多道程序的思想
内存同时放:
P1、P2、P3……
P1等待磁盘:
P1 → 阻塞
操作系统马上让:
P2 → CPU
于是:
CPU与I/O设备同时工作。
这才是多道程序最本质的目的:
用一个程序的 I/O 等待时间,执行另一个程序。
四、典型真题:2017年
题目:
与单道程序系统相比,多道程序系统有哪些优点? I. CPU利用率高 II. 系统开销小 III. 系统吞吐量大 IV. I/O设备利用率高
答案:
I、III、IV,即 D。(Any Docs)
原因:
CPU利用率提高
一个进程等待:
换另一个进程。
I/O设备利用率提高
不同任务可以同时使用 CPU 和不同 I/O 设备。
吞吐量提高
单位时间完成的作业更多。
但:
系统开销并不会变小。
因为多道程序引入了:
- 调度
- 进程切换
- 内存管理
- 同步互斥
- 资源管理
所以复杂度反而增加。
五、超级高频陷阱:程序越多,CPU利用率越高?
2022年真题
题目让选多道程序系统中错误的说法,其中包括:
“进程数越多,CPU利用率越高。”
答案就是这项错误。(Any Docs)
初学者很容易想:
多道程序可以提高利用率 → 那多道程序度越大越好?
不对。
前半段通常成立:
1个 → 2个 → 3个程序
CPU等待I/O的概率下降。
理想化模型中,如果每个进程等待 I/O 的概率为 ,有 个相互独立的进程,则所有进程都等待 I/O 的概率约为:
CPU利用率可粗略表示为:
于是最开始提高 ,CPU利用率会提高。
但真实系统继续增加进程会产生:
- 上下文切换开销
- 内存不足
- 缺页增加
- Cache/TLB污染
- 资源竞争
- 甚至抖动
因此:
适度提高多道程序度可以提高 CPU 利用率,但绝不是越多越好。
模拟题也专门拿这个绝对化说法继续考。(Any Docs)
六、题型三:批处理、分时、实时系统区别
这是典型概念辨析题。
2016年真题
题目:
关于批处理系统: I. 允许多个用户直接与计算机交互 II. 分为单道批处理和多道批处理 III. 中断技术使多道批处理系统中CPU和I/O可以并行
答案:
II、III,即 A。(Any Docs)
三种系统一定要这样区分
| 系统 | 最核心目标 | 用户交互 | 关键特点 |
|---|---|---|---|
| 批处理 | 吞吐量 | 弱 | 成批提交 |
| 分时 | 响应快 | 强 | 时间片、交互 |
| 实时 | 截止时间 | 有或无 | 按时完成 |
批处理
用户把任务交进去:
提交 → 等结果
作业运行过程中一般不能随时交互。
分时系统
CPU快速轮流服务:
用户A → 用户B → 用户C → 用户A……
强调:
人机交互 + 响应时间。
实时系统
重点根本不是“快”。
而是:
必须在规定时间内产生正确响应。
模拟题很好地考了这个坑
站内竟成模拟题问:
分时系统中的任务是不是必须在约定时间内完成?
答案:不是。
必须满足严格截止时间的是:
实时系统。
分时系统主要要求:
响应及时。(Any Docs)
七、题型四:多任务系统是否必须多CPU?
2018年真题
题目:
多任务操作系统: I. 具有并发和并行特点 II. 要保护共享资源 III. 必须运行于多CPU平台
答案:
I、II,即 C。(Any Docs)
最重要的是 III:
多任务 ≠ 多CPU。
一个 CPU 也可以:
P1 2ms → P2 2ms → P3 2ms……
从而实现并发。
多核只是让部分任务进一步:
真正并行。
八、操作系统的四个基本特征
虽然相应的真题页没有单独大量命题,但模拟题和后续章节会不断隐含使用。
必须掌握:
并发、共享、虚拟、异步。
1. 并发
多个程序同时存在于系统,并在时间上交错运行。
2. 共享
系统资源供多个并发进程使用。
分:
- 互斥共享
- 同时共享
3. 虚拟
把一个物理资源表现成多个逻辑资源。
CPU虚拟化
时间复用:
每个进程都仿佛拥有一个CPU。
内存虚拟化
空间复用、虚拟内存:
每个进程都仿佛拥有独立地址空间。
设备虚拟化
典型:
SPOOLing。
模拟题就问过时间片、内存分区和 SPOOLing 是否属于资源虚拟化。(Any Docs)
4. 异步
进程按不可预知速度向前推进。
因为:
- 调度时机不固定
- I/O耗时不同
- 中断发生时刻不同
因此多道程序具有:
异步性。
九、本章真正的第一大重点:用户态和内核态
下面开始进入408极高频区。
CPU通常至少提供两种特权级:
用户态 内核态
也叫:
目态 / 管态 用户模式 / 系统模式
用户态
普通程序运行。
只能执行:
非特权指令。
内核态
操作系统核心代码运行。
可以执行:
非特权指令 + 特权指令。
注意这个超级高频陷阱:
❌ 内核态只能执行特权指令。
错误。
正确是:
内核态什么都可以执行。
十、2022年真题:一句话拿下CPU模式
题目问:
下列关于CPU模式的说法哪个正确?
正确项:
CPU处于用户态时只能执行非特权指令。(Any Docs)
因此直接背:
| CPU状态 | 非特权指令 | 特权指令 |
|---|---|---|
| 用户态 | ✓ | × |
| 内核态 | ✓ | ✓ |
这张表非常重要。
十一、题型五:什么是特权指令?
判断特权指令不要死背,用一个原则:
如果普通程序随便执行它,会不会破坏整个系统?
如果会:
大概率就是特权指令。
高频特权指令
1. I/O指令
因为可以直接控制设备。
2. 关中断
如果普通程序执行:
CLI 关闭中断
操作系统可能永远拿不回CPU。
3. 设置时钟/定时器
否则用户程序可以让自己的时间片:
永远不到期。
4. 修改页表
否则用户程序可以:
把自己的地址映射到操作系统或别人的内存。
5. 修改中断向量表
否则恶意程序能修改:
中断处理入口。
十二、2014年真题:Trap是不是特权指令?
题目:
哪条指令不能在用户态执行?
选项包括:
- trap
- 跳转
- 压栈
- 关中断
答案:
关中断。 (Any Docs)
这个题非常重要,因为学生最容易误选:
Trap。
实际上:
Trap恰恰必须允许用户态执行。
为什么?
因为用户程序需要通过它:
主动请求操作系统服务。
如果 Trap 只能内核态执行:
用户程序根本没办法合法进入内核。
因此:
Trap 本身是非特权指令。
但:
Trap执行后,CPU转入内核态。
这两句话同时成立。
十三、2021年真题:I/O指令
题目:
下列哪条指令只能在内核态执行?
- trap
- I/O
- 数据传送
- 设置断点
答案:
I/O指令。 (Any Docs)
和2014真题合起来,即可能得到408的固定考法:
Trap——用户态可以执行。 I/O、关中断——用户态绝对不能正常执行。
十四、模拟题把这个题型拓展到了极致
站内题目问:
可以在用户态执行的有哪些? I. 除法 II. 初始化中断向量表 III. Trap IV. 内存取数 V. 修改PC VI. 关闭中断
答案:
I、III、IV、V,共4种。(Any Docs)
这道题很适合训练判断原则。
除法
普通计算:
可以。
修改PC
普通跳转、函数调用本质都在改变PC:
可以。
否则程序连 if、for、call 都跑不了。
普通访存
合法用户空间:
可以。
初始化中断向量表
影响整个系统:
特权。
关闭中断
影响OS接管CPU:
特权。
十五、第二大重点:什么事件会导致用户态 → 内核态?
记住三个入口:
中断 + 异常 + 系统调用。
可以把它画成:
┌──────── 外部中断
│
用户态 ────────────┼──────── 异常
│
└──────── 系统调用 / Trap
↓
内核态十六、中断、异常、系统调用到底有什么区别?
这是408最爱综合考的地方。
1. 中断 Interrupt
来自当前CPU执行指令之外。
典型:
- 键盘
- 鼠标
- 磁盘完成
- 网卡
- 定时器
所以是:
外部、异步。
2. 异常 Exception
由当前正在执行的指令引起。
例如:
- 除零
- 缺页
- 地址越界
- 非法指令
- 保护异常
因此:
内部、同步。
3. 系统调用
用户程序:
主动请求OS服务。
例如:
- read()
- write()
- fork()
- open()
- exit()
底层一般通过:
trap / syscall / svc 等指令
产生一个受控异常:
用户态 → 内核态。
十七、2013年经典真题
题目:
哪些操作会导致用户进程从用户态切换到内核态? I. 整数除以0 II. sin() III. read系统调用
答案:
I、III。(Any Docs)
逐项判断。
I 除零
CPU检测到异常:
用户态 → 内核态。
II sin()
通常是普通数学库函数。
可以直接在用户空间算:
不必进入内核。
III read()
要读取文件/设备:
系统调用 → 内核态。
十八、非常重要:库函数 ≠ 系统调用
这一点以后学文件、I/O还会一直考。
比如:
sin(x)通常纯用户态计算。
但是:
read(fd, buf, n)需要内核访问文件系统或设备:
系统调用。
不过现实操作系统里:
某些库函数内部可能调用系统调用。
所以不能记成:
所有库函数都不进内核。
408 真正需要掌握的是:
“库函数”和“系统调用”不是同一个概念。
十九、2015年真题:一条普通指令也可能进内核
题目给出:
- DIV
- INT
- NOT
- MOV访问内存
问:
哪个执行时“不可能”使CPU从用户态进入内核态?
答案:
NOT。 (Any Docs)
这道题非常有价值。
DIV
普通除法本身可以用户态执行。
但是:
除数 = 0
会产生:
除零异常。
所以:
可能进内核。
INT
直接产生软中断:
可以进入内核。
MOV访问内存
MOV本身是普通指令。
但访问地址可能:
- 缺页
- 越界
- 权限错误
因此:
可能产生异常 → 内核态。
NOT
只在CPU寄存器中做按位取反:
基本没有产生OS异常的正常途径。
因此题目问“不可能”:
NOT。
二十、这里有一个超级重要的考试方法
一定区分:
“这是不是特权指令?”
和:
“执行这条指令是否可能导致进入内核态?”
完全不是一回事。
例如:
DIV
非特权指令。
但是:
除零 → 异常 → 内核。
MOV
非特权指令。
但是:
缺页 → 异常 → 内核。
Trap
非特权指令。
但是:
本来就是为了进入内核。
这是第一章最容易混淆的一层。
二十一、2012年真题:什么“不可能在用户态发生”?
题目:
下列哪些事件不可能在用户态发生?
- 系统调用
- 外部中断
- 进程切换
- 缺页
答案:
进程切换。 (Any Docs)
这题真正考一句话:
“发生在用户态” ≠ “在用户态处理”。
例如:
用户程序正在执行:
MOV...
突然磁盘中断。
此时:
中断是在CPU原本处于用户态时发生的。
随后CPU:
→ 内核态处理。
因此外部中断:
可以在用户态运行过程中发生。
同理缺页:
用户态访问一个未驻留页 → 缺页发生 → CPU进入内核态。
但进程切换:
必须由调度/上下文切换代码执行。
而这些都是:
内核代码。
所以进程切换本身:
不可能在用户态执行。
二十二、2024年真题又考了同一个语言陷阱
题目问:
关于中断、异常、系统调用,哪项错误?
其中错误项是:
“中断或异常发生时,CPU处于内核态。”
为什么错?
因为可能:
用户态运行时发生中断/异常。
正确说法应该是:
CPU开始执行中断或异常处理程序时,CPU处于内核态。 (Any Docs)
以后看到:
发生时 响应时 处理时
一定一个字一个字看。
二十三、第三大重点:系统调用
这是本章出现真题最密集的知识点之一。
定义:
系统调用是操作系统内核向应用程序提供服务的程序接口。
二十四、2010年真题
题目:
操作系统提供给应用程序的接口是什么?
选项:
- 系统调用
- 中断
- 库函数
- 原语
答案:
系统调用。 (Any Docs)
四个概念必须区分
系统调用
应用程序 → 操作系统
中断
CPU取得控制权的一种机制
库函数
用户程序库提供的函数
原语
操作系统内部:
不可分割的一段基本操作。
不是提供给普通应用程序的接口。
二十五、系统调用完整过程
这个流程必须直接背成一条链。
假设用户执行:
read(fd, buffer, n)可以抽象成:
用户态
↓
准备系统调用号、参数
↓
执行 Trap / syscall
↓
硬件保存关键现场
↓
CPU切换为内核态
↓
进入系统调用入口
↓
操作系统保存其余现场
↓
查找具体服务程序
↓
执行 read 服务
↓
恢复现场
↓
返回用户态二十六、2017年真题:系统调用顺序
题目给:
I. 返回用户态 II. 执行trap III. 传递系统调用参数 IV. 执行服务程序
正确:
III → II → IV → I。(Any Docs)
记成:
参数 → Trap → 内核服务 → 返回
二十七、2022年真题:哪些是硬件做,哪些是OS做?
这是第一章最值得重点掌握的题之一。
题目:
系统调用过程中: I. 保存断点和PSW II. 保存通用寄存器 III. 执行系统调用服务例程 IV. CPU切换到内核态 哪些由操作系统完成?
答案:
II、III。(Any Docs)
所以一定记下面这张表。
| 操作 | 通常负责者 |
|---|---|
| 保存断点 PC | 硬件 |
| 保存 PSW | 硬件 |
| 修改 CPU 模式 | 硬件 |
| 找到入口并跳转 | 硬件机制 |
| 保存更多通用寄存器 | OS |
| 执行服务程序 | OS |
| 调度等高层操作 | OS |
可以简单理解:
硬件先把CPU安全送进内核,OS再正式接管。
二十八、2015年真题:中断现场谁保存?
题目:
外部中断发生时,应该由操作系统保存的是哪个?
- PC
- 通用寄存器
- TLB
- Cache
答案:
通用寄存器。 (Any Docs)
原因与前面完全一致:
硬件至少保证保存:
PC + PSW
OS进入处理程序以后再保存:
通用寄存器等软件现场。
二十九、2012年真题:中断和普通函数调用有什么区别?
题目:
中断处理和子程序调用都要保护现场,哪项是中断一定要保存而普通子程序调用不一定需要保存的?
答案:
PSW(程序状态字)。 (Any Docs)
为什么?
普通函数:
main
↓
foo()
↓
main主要保存:
返回地址。
但是中断会改变:
- CPU工作模式
- 中断允许状态
- 条件码等处理器状态
这些通常存在:
PSW
所以中断必须恢复原状态。
三十、系统调用与进程切换千万别画等号
系统调用:
用户态 → 内核态
但不意味着:
一定换进程。
例如:
getpid()进入内核取一个数据:
原进程继续运行。
所以:
模式切换 ≠ 进程切换。
同样:
中断 ≠ 进程切换。
站内模拟题也明确考过:
CPU响应中断,并不一定发生进程切换。(Any Docs)
三十一、用一张图彻底理顺
当前进程 P1
│
│ 用户态
↓
执行普通用户程序
│
┌─────────────┼─────────────┐
│ │ │
系统调用 异常 外部中断
Trap 缺页/除0 时钟/设备
│ │ │
└─────────────┼─────────────┘
↓
内核态
│
执行对应处理程序
│
是否需要调度?
/ \
否 是
│ │
返回P1 切换P2所以以后别再把:
进入内核态
和:
切换进程
混成一件事。
三十二、2021年真题:哪些操作属于系统调用?
题目:
哪个操作通过系统调用完成?
- 页置换
- 进程调度
- 创建新进程
- 生成随机数
答案:
创建新进程。 (Any Docs)
这类题可以用一个很好用的判断方法:
用户主动请求内核服务
通常是系统调用。
例如:
- 创建进程
- 终止进程
- 打开文件
- 读写文件
- 分配某些资源
- 网络通信
内核自己为了管理系统而做
通常不是“应用程序调用的系统调用”。
例如:
- 页置换
- 进程调度
- 中断处理
- 页面换入
- TLB管理
这些是:
内核内部机制。
三十三、2019年真题:系统调用四句话
题目判断:
I. 服务程序运行于内核态 II. 系统调用可避免应用直接控制设备 III. 所有操作系统提供统一系统调用接口 IV. 系统调用是内核向应用提供服务的接口
答案:
I、II、IV。(Any Docs)
错误的是:
不同OS系统调用并不统一。
比如:
Linux ≠ Windows。
甚至同一个Linux:
x86和ARM底层进入内核的机器指令也可能不同。
模拟题正好继续考了这个问题:同一硬件平台上的不同OS通常利用硬件提供的同类陷入指令;而Linux移植到不同指令集后,底层系统调用指令可能不同。(Any Docs)
三十四、题型六:中断的全过程
中断实际上连接了:
组成原理 + 操作系统。
408特别喜欢跨科。
一个典型外部中断:
设备完成I/O
↓
设备控制器发出中断请求
↓
CPU完成当前指令
↓
检查中断
↓
保护关键现场
↓
根据中断号查中断向量表
↓
转入中断服务程序
↓
OS处理中断
↓
恢复现场
↓
返回三十五、中断向量表为什么用数组?
2023年真题
题目:
中断向量表最适合使用哪种数据结构?
答案:
数组。 (Any Docs)
原因:
有:
中断类型号
希望直接找到:
第 个中断入口。
数组:
直接索引。
链表:
没必要。
这是典型:
数据结构 + 操作系统交叉题。
三十六、中断返回到哪条指令?
外部中断一般发生在:
一条机器指令执行完成后。
因此中断返回后:
通常执行原本下一条指令。
站内模拟题专门考过这一点。(Any Docs)
但异常就未必。
例如缺页:
MOV ...
↓
发现页不在内存
↓
缺页异常
↓
调页
↓
重新执行MOV所以很多“故障型异常”处理完成后:
需要重新执行产生异常的那条指令。
这个差别非常重要。
三十七、2024年真题:键盘数据最后放哪?
题目:
键盘中断服务例程执行完成时,输入的数据放在哪里?
答案:
内核缓冲区。 (Any Docs)
流程:
键盘
↓
键盘控制器数据寄存器
↓
产生中断
↓
键盘中断服务程序
↓
内核缓冲区
↓
用户调用 read
↓
用户缓冲区所以不要直接想:
键盘 → 用户数组。
中间必须由OS控制。
三十八、题型七:操作系统内核到底包含什么?
考试一般把内核理解为:
操作系统中运行于最高特权级、管理核心资源的一部分。
常见核心功能:
- 中断处理
- 时钟管理
- 进程调度
- 内存管理中的核心机制
- 同步原语
- 系统调用入口
三十九、宏内核和微内核
这是2023、2024以后非常值得重视的点。
宏内核
大量OS服务运行于:
内核态。
包括:
- 文件系统
- 设备驱动
- 网络协议栈
- 内存管理
- 调度
典型思想:
用户程序
────────────────
巨大内核
调度
内存
文件系统
驱动
网络
────────────────
硬件优点
最重要:
性能高。
因为内核模块之间可以直接调用。
缺点
- 内核庞大
- 模块耦合高
- 一个驱动出错可能影响整个系统
- 安全隔离较弱
四十、微内核
微内核只留:
最基础的机制。
例如:
- IPC
- 基本调度
- 中断
- 低级地址空间管理
文件系统、设备驱动等:
放到用户态服务器。
应用
文件服务器
驱动服务器
网络服务器
────────────────
微内核
IPC / 调度 / 中断
────────────────
硬件四十一、2023年真题:微内核优缺点
题目:
相比宏内核,微内核具有什么特征? I 性能更好 II 可靠性更高 III 安全性更高 IV 可扩展性更强
答案:
II、III、IV。(Any Docs)
因此直接背:
微内核:可靠、安全、可扩展,但性能通常较差。
为什么性能差?
假设应用请求文件:
宏内核:
应用
↓ 系统调用
内核文件系统微内核可能:
应用
↓
微内核
↓ IPC
文件服务器
↓ IPC
微内核
↓
应用出现:
- IPC
- 上下文切换
- 用户态/内核态切换
所以额外开销大。
四十二、模拟题:Unix是不是微内核?
站内题目问:
“Unix属于微内核操作系统”是否正确?
答案:
错。(Any Docs)
传统 Unix:
宏内核。
Linux一般也认为:
宏内核 / 模块化宏内核。
不要因为Linux支持模块:
就认为它是微内核。
四十三、其他内核结构了解这些即可
分层结构
第N层
...
第2层
第1层
硬件优点:
- 清晰
- 易验证
缺点:
- 层次不好划
- 跨层调用困难
- 可能增加开销
模块化结构
一个核心内核:
- 可动态加载模块。
兼顾:
性能 + 可扩展性。
现代Linux大量采用这种思想。
外核 Exokernel
模拟题出现过,因此知道概念即可。
核心思想:
内核尽量只负责物理资源的安全分配和保护,把高级抽象交给用户态库操作系统。
408优先级:
微内核 > 宏内核 > 模块化/分层 > 外核。
四十四、题型八:操作系统启动过程
这里考得不多,但通常是送分题。
2013年真题
题目:
计算机开机后,操作系统最终被加载到哪里?
- BIOS
- ROM
- EPROM
- RAM
答案:
RAM。 (Any Docs)
原因:
CPU正常执行OS内核时:
内核必须进入主存。
四十五、经典BIOS启动流程
传统考研模型可以记:
按下电源
↓
CPU执行BIOS
↓
POST硬件自检
↓
寻找启动设备
↓
读取MBR/引导扇区
↓
运行Boot Loader
↓
加载操作系统内核
↓
内核进入RAM
↓
启动系统模拟题问过:
BIOS引导第一步是什么?
答案:
硬件自检 POST。 (Any Docs)
四十六、引导扇区代码是谁写进去的?
模拟题问:
引导扇区中的代码来自哪里?
答案:
安装操作系统或安装引导程序时写入。 (Any Docs)
不是:
BIOS每次开机写进去。
BIOS自己通常存在:
主板ROM / Flash。
它做的是:
去找到磁盘上的引导程序。
四十七、现代机器的补充认识
现实中现在大量使用:
UEFI + GPT
而不是传统:
BIOS + MBR。
但408题目如果明确给:
BIOS、MBR、引导扇区
就按经典模型回答。
不要拿现代UEFI细节反驳题目模型。
四十八、真题逐题地图:复习时至少要知道每题在考什么
站内这一章的真题大致可以压成下面这张表。(Any Docs)
| 年份 | 题目核心 | 核心结论 |
|---|---|---|
| 2009 | 单处理机哪些能并行 | 进程间只能并发;CPU/I/O可并行 |
| 2010 | OS给应用的接口 | 系统调用 |
| 2011 | 哪个在用户态执行 | 命令解释程序 |
| 2012 | 不可能在用户态发生 | 进程切换 |
| 2012 | 中断与子程序保存现场 | 中断必须保存PSW |
| 2013 | 除零、sin、read谁进内核 | 除零、read |
| 2013 | OS最终加载到哪里 | RAM |
| 2014 | 哪条是特权指令 | 关中断 |
| 2015 | 中断由OS保存什么 | 通用寄存器 |
| 2015 | 哪条不可能进内核 | NOT |
| 2016 | 批处理系统 | 无直接交互;可多道 |
| 2017 | 多道程序优点 | CPU/I/O利用率、吞吐量提高 |
| 2017 | 系统调用步骤 | 参数→Trap→服务→返回 |
| 2018 | 多任务OS | 不要求多CPU |
| 2019 | 系统调用性质 | 内核接口、内核态服务 |
| 2021 | 特权指令 | I/O |
| 2021 | 系统调用操作 | 创建进程 |
| 2022 | 多道程序 | 进程不是越多越好 |
| 2022 | CPU模式 | 用户态只能非特权 |
| 2022 | 系统调用硬件/OS分工 | OS保存通用寄存器、执行服务 |
| 2023 | 内核→用户态 | 系统调用返回 |
| 2023 | 微内核 | 安全、可靠、扩展性 |
| 2023 | 中断向量表 | 数组 |
| 2024 | 中断/异常发生时状态 | 发生时未必已经在内核态 |
| 2024 | 键盘中断后的数据 | 内核缓冲区 |
这张表本身就非常值得最后冲刺时反复看。
四十九、模拟题中值得额外掌握的几类拓展
模拟题共把第 1 章扩展到了更宽的范围,其中最有价值的是下面几种。
拓展1:哪些操作必须保护?
站内王道模拟题给:
哪个操作必须保护? 包括从内核态回用户态、读内核空间、打开定时器等。
答案:
操作定时器。 (Any Docs)
根本判断原则还是:
用户随便做会不会获得影响整个系统的能力?
拓展2:页面异常也会导致模式切换
模拟题:
页号越界、缺页等情况下CPU是否进入内核?
答案:
会。(Any Docs)
这虽然属于内存管理知识,但第 1 章必须建立联系:
用户访存
↓
MMU检查
↓
异常
↓
CPU进入内核
↓
OS处理拓展3:系统调用发生阻塞后可以调度
模拟题问:
用户进程陷入内核执行系统调用期间,能否调度其他进程?
答案:
可以。(Any Docs)
例如:
read(disk)需要磁盘:
P1进入内核
↓
发起磁盘I/O
↓
P1阻塞
↓
调度器
↓
P2运行所以系统调用不是:
“进入内核马上原路返回”。
五十、第一章最容易混淆的10组概念
这部分建议重点看。
① 并发 vs 并行
并发:
时间段重叠。
并行:
同一时刻。
② 多任务 vs 多处理器
多任务:
单CPU也可以。
③ 用户态 vs 用户程序
有些“系统程序”:
shell、命令解释程序
照样可以运行于:
用户态。
“系统程序”不等于“内核程序”。
2011真题就考了命令解释程序。(Any Docs)
④ 特权指令 vs 导致陷入的指令
Trap:
非特权。
但会:
导致用户态→内核态。
⑤ 中断发生 vs 中断处理
中断:
可以在用户态运行期间发生。
中断处理程序:
在内核态执行。
⑥ 模式切换 vs 进程切换
模式切换:
P1用户态 → P1内核态仍然可能是:
P1。
进程切换:
P1 → P2是另一件事。
⑦ 系统调用 vs 库函数
库函数:
用户层接口。
系统调用:
内核接口。
库函数内部:
可能调用系统调用,也可能完全不调用。
⑧ 中断 vs 异常
中断:
外部 + 异步。
异常:
当前指令导致 + 同步。
⑨ 宏内核 vs 微内核
宏内核:
服务多、性能好、隔离差。
微内核:
服务少、IPC多、可靠安全、扩展性好。
⑩ BIOS vs OS
BIOS:
固件。
OS:
从磁盘等存储设备加载到RAM。
五十一、碰到“用户态能不能执行”题目的秒杀算法
以后题目给一堆指令,不要背列表。
问三个问题。
第一步:是否直接控制全局硬件?
例如:
- I/O
- 定时器
- 中断
是:
特权。
第二步:是否修改系统保护机制?
例如:
- 页表
- 中断向量表
- 内存保护寄存器
是:
特权。
第三步:是不是普通程序必须具备的基本能力?
例如:
- 算术
- 访存
- 跳转
- 压栈
- Trap
通常:
用户态可以。
特别注意 Trap:
它是用户态进入内核的合法门。
五十二、碰到“会不会进入内核态”题目的秒杀算法
不要问:
“这条指令是不是特权指令?”
而要逐项判断:
A. 是否主动系统调用?
是:
进入。
B. 是否可能产生异常?
例如:
- 除零
- 缺页
- 越界
是:
进入。
C. 执行期间是否可能收到外部中断?
理论上普通用户程序执行期间:
也可能。
因此题目如果写“执行该指令可能导致”:
要小心“可能”这个词。
五十三、碰到系统调用流程题
直接写:
准备参数
↓
执行Trap
↓
硬件保存PC/PSW
↓
切内核态
↓
OS保存通用寄存器
↓
执行内核服务
↓
恢复现场
↓
返回用户态特别记:
硬件负责“进去”,OS负责“干活”。
这是2022真题的核心。(Any Docs)
五十四、碰到中断题,先分四层
这是一个非常好用的方法。
第1层:发生
谁产生?
外设 / 时钟 / 当前指令异常
第2层:硬件响应
CPU:
保存PC/PSW → 切内核态 → 找入口
第3层:OS处理中断
保存更多现场 → 执行ISR
第4层:后续
可能:
返回原程序
也可能:
进行进程调度。
所以:
中断 ≠ 必定调度。
五十五、这一章最容易被“绝对化词语”坑
408这章特别喜欢:
- 一定
- 所有
- 只能
- 越多越好
- 必须
- 立即
例如:
“进程越多CPU利用率越高”
错。
“中断一定导致进程切换”
错。
“微内核性能一定更高”
错。
“系统调用接口各OS统一”
错。
“内核态只能执行特权指令”
错。
因此遇到绝对化表述:
优先检查反例。
五十六、本章优先级
结合站内2009—2024真题,建议这样分。(Any Docs)
S级:必须完全掌握
1. 用户态 / 内核态
必须秒答。
2. 特权指令
I/O、关中断、时钟、页表等。
3. 系统调用
定义、过程、硬件/OS分工。
4. 中断和异常
来源、模式切换、现场保护。
A级:高频
5. 多道程序
优势、代价、CPU利用率。
6. 并发/并行
单CPU尤其重要。
7. 微内核/宏内核
近年来明显值得重视。
B级:必须会,但通常较简单
8. 批处理、分时、实时
9. OS功能与四特征
10. 操作系统引导
五十七、两道接近未来 408 风格的预测变式
预测题1
某用户进程正在执行:
LOAD R1, [addr]若地址对应页面当前不在内存,则下列过程正确的是:
I. LOAD是特权指令 II. CPU产生缺页异常 III. CPU转入内核态 IV. 缺页处理完成后可能重新执行LOAD
应该判断:
I错误,II、III、IV正确。
关键
LOAD:
普通指令。
但:
普通指令也可能产生异常进入内核。
这正是2015真题的自然升级版。(Any Docs)
五十八、预测题2:综合系统调用 + 中断 + 调度
假设 P1 在用户态执行:
read(fd, buf, 4096);随后磁盘尚未完成。
正确过程应为:
P1用户态
↓
Trap
↓
P1内核态
↓
OS发起磁盘I/O
↓
P1阻塞
↓
调度P2
↓
P2运行
↓
磁盘完成
↓
外部中断
↓
内核处理中断
↓
P1变为就绪注意:
磁盘完成并不意味着P1立即运行。
只是:
P1获得重新竞争CPU的资格。
这道题把第 1 章和下一章的进程状态自然结合起来,非常符合408综合化趋势。
五十九、最后压缩成一套考场口诀
如果第 1 章只能带几句话进考场,就带下面这些:
单核进程只并发,CPU设备可并行。
多道提高利用率和吞吐量,但不是程序越多越好。
用户态只能非特权,内核态两种都能执行。
I/O、关中断、改页表、改时钟属于特权操作。
Trap必须允许用户态执行。
中断来自外部,异常来自当前指令,系统调用是主动Trap。
进入内核态不等于发生进程切换。
中断发生时未必已在内核态,中断处理程序一定在内核态。
系统调用:参数 → Trap → 内核服务 → 返回。
PC/PSW主要由硬件保存,通用寄存器和服务例程主要由OS处理。
微内核可靠、安全、易扩展,但IPC和切换多,性能通常较差。
BIOS先引导,OS最终进入RAM。
如果把这套逻辑真正理解了,操作系统第 1 章绝大多数408选择题基本都不需要纯背答案,而可以现场推出来。站内历年真题也非常明显地围绕这些规则反复做变式。(Any Docs)