视频加载失败

操作系统综合复习网页

8339 字
42 分钟
操作系统综合复习网页

这是一份根据操作系统教材与题库整理生成的交互式复习网页,适合期末前集中回顾核心概念、公式、例题和易错点。

在线复习网页:点击打开 操作系统综合复习.html。

使用的 Skills:daxueren666/exam-review-helper。

内容概览#

  • 覆盖导论、进程、调度与死锁、同步、存储器管理、虚拟存储器、I/O、文件管理、磁盘管理等章节。
  • 每章整理核心知识点,并配套公式、例题和易错点。
  • HTML 页面支持侧边导航、搜索、暗黑模式和卡片式复习。
  • 下方为「末日基地」风格第1章学习笔记,帮助你更直观地理解操作系统核心概念。

第 1 章 末日基地操作系统说明书#

我们把第 1 章当成一个**“末日基地操作系统说明书”**来学。

这一章 PPT 的主线是:操作系统是什么、为什么出现、有什么特征、靠什么运行、管什么、结构怎么设计。PPT 大纲也正是这 6 部分:目标和作用、发展过程、基本特征、运行环境、主要功能、结构设计。


第 1 章一句话总览#

操作系统 = 末日基地总管家

它负责:

1. 管人:进程/线程
2. 管仓库:内存
3. 管工具:设备
4. 管档案:文件
5. 给幸存者提供入口:用户接口 / 系统调用

你先记这一句:

操作系统就是夹在”用户/应用程序”和”硬件”之间的资源管理者、服务提供者和硬件抽象层。


1.1 操作系统的目标和作用#

先抓本质#

PPT 里说操作系统的位置是:紧贴系统硬件之上,所有其他软件之下。也就是说,应用程序不能直接乱碰硬件,要通过操作系统。

末日基地版:

硬件 = 基地里的武器库、仓库、发电机、水泵
应用程序 = 幸存者小队
操作系统 = 基地管理员

幸存者不能直接冲进仓库拿东西,必须向管理员申请。


操作系统的目标#

主要记四个词:

有效性、方便性、可扩充性、开放性

对应人话:

有效性:让资源别闲着,提高利用率和吞吐量
方便性:让用户不用直接面对 0/1 和硬件细节
可扩充性:以后方便加功能、改功能
开放性:能和其他系统/网络协同工作

末日版记忆:

有效性:基地资源别浪费
方便性:幸存者不用懂发电机原理也能开灯
可扩充性:以后能加医疗站、武器站
开放性:能和别的基地联网交易

操作系统的三大作用#

1. 用户和硬件之间的接口
2. 计算机资源的管理者
3. 对硬件资源的抽象,即虚拟机 / 扩充机器

特别重要的是第二个:四大资源管理。

处理机管理
存储器管理
设备管理
文件管理

这四个后面每一章都会展开。

记忆口诀:

CPU、内存、设备、文件
操作系统四大管理

1.2 操作系统的发展过程#

这一节最适合用”末日基地进化史”来记。


阶段 1:人工操作方式#

最早没有操作系统,程序员要自己预约机器、装纸带、启动运行、取结果。PPT 里强调了早期人工操作导致用户独占全机、CPU 等待人工操作、资源浪费。

末日版:

基地刚建立,没有管理员。
每个幸存者要亲自开仓库、搬物资、发电、记录。
一个人用基地时,其他人全等着。

问题:

人机矛盾:人太慢,机器等人
CPU 与 I/O 矛盾:CPU 很快,外设很慢

阶段 2:脱机输入输出#

为了解决 CPU 等人工和慢速 I/O 的问题,出现脱机输入输出。PPT 里说它可以减少 CPU 空闲时间,提高 I/O 速度。

末日版:

以前:主基地 CPU 亲自等人搬物资。
现在:先用外部小队提前把物资搬到中转仓库。
主基地只和高速仓库交接。

关键词:

Off-Line I/O
减少 CPU 空闲
提高 I/O 速度
SPOOLing 假脱机

阶段 3:单道批处理系统#

PPT 里说单道批处理是把一批作业放到外存上,由 Monitor 逐个调入内存运行,特征是:自动性、顺序性、单道性。优点是减少人工操作,缺点是一个作业 I/O 时 CPU 仍然等待。

末日版:

基地管理员开始按名单自动处理任务。
但一次只处理一个任务。
如果当前任务去等水泵,管理员也只能干等。

记:

单道批处理 = 自动排队,但一次只跑一个

阶段 4:多道批处理系统#

这是操作系统真正成型的关键。

PPT 里说,多道批处理是多个作业先在外存后备队列排队,经作业调度选择若干个调入内存,共享 CPU 和系统资源。特征是:调度性、无序性、多道性;优点是资源利用率高、吞吐量大;缺点是平均周转时间长、无交互能力。

末日版:

基地同时安排多个任务:
A 小队等水泵时,
B 小队可以用发电机,
C 小队可以用厨房。
资源不闲着。

这就是你后面学”进程调度”的根源。

记忆:

多道 = 一个等 I/O,另一个用 CPU
核心目的 = 提高资源利用率和吞吐量

阶段 5:分时系统#

PPT 里说分时系统的主要动力是用户需求,包括人机交互、共享主机、便于用户上机;特征是:多路性、独立性、及时性、交互性。

末日版:

很多幸存者共用一台总控电脑。
每个人分到一点点时间片。
宏观看起来大家都在同时操作,
微观看其实是轮流用。

口诀:

分时系统 = 多用户轮流用 CPU
核心:时间片

阶段 6:实时系统#

实时系统强调”及时响应外部事件”,有严格时间限制。PPT 里提到实时系统主要用于过程控制和事务处理,主要特征是实时性和可靠性。

末日版:

基地防空系统、医疗监护系统、核反应堆冷却系统。
警报来了必须马上处理。
不能说"等我排队慢慢来"。

记:

实时系统 = 必须在规定时间内反应

1.3 操作系统的基本特征#

这节特别容易出选择题。

PPT 明确列出操作系统四个基本特征:

并发性
共享性
虚拟性
异步性

并且强调:并发性是最重要特性,其他三种特性以此为前提。


1. 并发性#

并发是:

一段时间内同时存在多道运行的程序

注意并发和并行不同:

并发:看起来同时,单 CPU 上其实轮流执行
并行:真正同一时刻执行,需要多个 CPU

末日版:

并发 = 一个厨师轮流炒三口锅
并行 = 三个厨师同时炒三口锅

2. 共享性#

共享是:

系统资源不再被一个程序独占,而是供多个程序共同使用

并发和共享是互相依赖的。

末日版:

并发 = 多个小队同时存在
共享 = 多个小队共用水、食物、武器、发电机

没有共享,就没法并发;没有并发,也谈不上共享。


3. 虚拟性#

PPT 里说虚拟是把一个物理实体映射为多个逻辑实体。常见方式有:

时分复用:虚拟处理机、虚拟设备
空分复用:虚拟磁盘、虚拟存储器

末日版:

只有一个发电机,但轮流给多个区域供电,
每个区域都感觉"我有自己的发电机"。

这就是虚拟。


4. 异步性#

异步性也叫不确定性,意思是进程执行时间、顺序、推进速度、完成时间不可预知。PPT 还特别强调,不是不确定结果,而是运行时间和运行顺序不确定。

末日版:

多个小队同时行动。
谁先回来,不一定。
谁等水,谁等电,谁被丧尸堵路,也不一定。

记忆口诀:

并发是核心,
共享是条件,
虚拟是假象,
异步是不确定。

1.4 操作系统的运行环境#

这一节是考试高频,尤其是:

内核
原语
核心态/用户态
中断
系统调用

1. 内核#

PPT 说内核是现代 OS 中靠近硬件、受特殊保护、常驻内存的一部分,包含中断处理、时钟管理、原语操作,以及进程、存储器、设备管理等资源管理功能。

末日版:

内核 = 基地最核心的指挥室
一直有人值班
不能随便关
普通幸存者不能乱进

2. 原语#

原语是由若干条指令组成、完成某个功能的过程。它和普通过程的区别是:原子操作,不允许被中断。PPT 也说明原语在核心态下执行,常驻内存。

末日版:

原语 = 开保险库的一套动作
要么全部完成,要么完全不做
中间不能被打断

考试记:

原语 = 原子操作 = 不可分割 = 核心态执行

3. 用户态和核心态#

PPT 说处理机至少有两种模式:

核心态:OS 运行状态,可执行全部指令,包括特权指令
用户态:用户程序运行状态,只能执行非特权指令

用户态程序不能自己改成核心态,用户态到核心态的唯一途径是中断。

末日版:

用户态 = 普通幸存者区域
核心态 = 基地控制室
普通人不能自己冲进控制室。
只能按求助按钮 / 触发警报,
由管理员接管处理。

你之前问过的”关中断指令”就属于特权指令,只能核心态执行。


4. 中断#

PPT 说中断是 CPU 对系统内外某个事件的反应,操作系统是由中断驱动的;中断可以解决主机与外设并行工作、提高可靠性、实现实时控制,也是多道程序的必要条件。

末日版:

中断 = 基地警报
水泵完成了,响一下
敌人来了,响一下
时钟到了,响一下
管理员暂停当前任务,先处理警报

记:

操作系统是中断驱动的

5. 系统调用#

PPT 说系统调用是应用程序请求 OS 内核完成某功能的一种过程调用,是用户与内核的接口。

末日版:

系统调用 = 普通幸存者向管理员提交申请

例如:

open 文件
read 文件
write 文件
fork 创建进程
申请内存
访问设备

考试记忆:

系统调用 = 用户程序获得 OS 服务的接口
执行系统调用服务程序时 CPU 处于核心态

1.5 操作系统的主要功能#

PPT 列了五大功能:

处理机管理
存储器管理
设备管理
文件管理
用户接口

可以用末日基地五部门记:

OS 功能末日基地部门管什么
处理机管理任务调度部谁用 CPU,谁先执行
存储器管理仓库空间部内存怎么分、怎么保护
设备管理工具设备部打印机、磁盘、键盘、I/O
文件管理档案管理部文件、目录、共享、保护
用户接口服务窗口命令、图形界面、系统调用

处理机管理#

核心是:

进程控制
进程同步
进程通信
进程调度

后面第 2、3、4 章会详细讲。


存储器管理#

核心是:

内存分配
内存保护
地址映射
内存扩充

你后面学分页、分段、虚拟存储器,全在这里。


设备管理#

核心是:

缓冲管理
设备分配
设备处理/驱动程序
虚拟设备

后面第 7 章会讲。


文件管理#

核心是:

文件存储空间管理
目录管理
文件读写管理
文件共享与保护

第 8、9 章就是这里展开。


1.6 操作系统的结构设计#

这节主要考对比。

PPT 把结构发展分为:

无结构操作系统
模块化结构
分层式结构
微内核结构
外核结构

无结构操作系统#

大家乱成一团,过程之间互相调用

优点不明显,缺点是:

庞大、杂乱、难调试、难维护

末日版:

基地没有部门,谁都管一点,出了事没人知道问题在哪。

模块化结构#

按功能分模块

优点:

更容易理解、维护、开发

缺点:

模块和接口划分困难

末日版:

分成医疗部、武器部、食品部,但部门边界不一定好划。

分层式结构#

从硬件开始,一层层向上
上层只能使用下层服务

优点:

正确性好
易扩充
易维护

缺点:

层层调用,开销大,效率下降

末日版:

基层士兵 → 小队长 → 部门长 → 总指挥
流程清晰,但传话慢。

微内核结构#

微内核是重点。

PPT 说微内核思想是:内核只保留最基本功能,其他服务放到用户态进程中,用客户/服务器模式通过消息传递通信。微内核本身只是 OS 最基本部分,不是完整 OS。

末日版:

微内核 = 小指挥部
只管最核心的通信、调度、低级内存、中断
医疗、仓库、文件、设备等服务都变成独立部门

优点:

可扩展性好
可靠性高
可移植性好
适合分布式系统

缺点:

消息传递和上下文切换多,效率较低

你之前做过那道”微内核 vs 宏内核”的题,就记:

微内核:安全、可靠、易扩展
缺点:性能较低

第一章最容易考的选择/填空点#

你优先背这些:

1. OS 位于硬件之上,其他软件之下。
2. OS 的目标:
有效性、方便性、可扩充性、开放性。
3. OS 的作用:
用户接口、资源管理者、扩充机器/虚拟机。
4. OS 四大基本特征:
并发、共享、虚拟、异步。
其中并发最重要。
5. 并发 ≠ 并行:
并发是一段时间内同时存在;
并行是同一时刻真正同时执行。
6. 分时系统特征:
多路性、独立性、及时性、交互性。
7. 实时系统重点:
实时性、可靠性。
8. 原语:
原子操作,不可分割,核心态执行。
9. 用户态:
只能执行非特权指令。
10. 核心态:
能执行全部指令,包括特权指令。
11. 用户态到核心态:
唯一途径是中断。
12. 系统调用:
用户程序请求 OS 服务的接口。
13. OS 五大功能:
处理机、存储器、设备、文件、用户接口。
14. 微内核:
机制与策略分离,小内核 + 用户态服务器。

主动回忆小测#

你现在合上笔记,试着回答这 6 个:

1. 操作系统在计算机系统中的位置是什么?
2. 操作系统的四个基本特征是什么?哪个最重要?
3. 分时系统和实时系统最大的区别是什么?
4. 用户态和核心态的区别是什么?
5. 系统调用是干什么的?
6. 微内核的优点和缺点分别是什么?

答不上来的地方,就是你下一轮要复习的地方。


末日基地总图#

操作系统 = 末日基地总管家
目标:
资源别浪费、用户好使用、系统好扩展、能开放协作
发展:
人工操作 → 脱机 I/O → 单道批处理 → 多道批处理 → 分时 → 实时
特征:
并发、共享、虚拟、异步
运行环境:
内核、原语、用户态/核心态、中断、系统调用
主要功能:
管 CPU、管内存、管设备、管文件、给用户入口
结构:
无结构 → 模块化 → 分层 → 微内核 → 外核

第 1 章不是让你死背历史,而是让你明白:操作系统为什么诞生,以及它如何把混乱的硬件资源变成用户能安全、方便、高效使用的”末日基地管理系统”。


好,我们继续用你那套”认知增强法”来学第 2 章:进程的描述与控制。这一章 PPT 的大纲包括:前趋图和程序执行、进程的描述、进程控制、进程通信、线程的概念、线程的实现。

第 2 章一句话总览#

第 1 章讲:操作系统是末日基地总管家。
第 2 章讲:基地里每一个正在执行的任务,怎么被描述、排队、暂停、唤醒、通信、拆成线程。

核心词就是:

程序 → 进程 → PCB → 状态转换 → 进程控制 → 进程通信 → 线程

末日场景版:

程序 = 任务说明书
进程 = 正在执行任务的小队
PCB = 小队档案卡
进程状态 = 小队当前在干嘛
进程控制 = 管理员让小队创建、暂停、继续、撤销
进程通信 = 小队之间传消息/共享物资
线程 = 小队里的具体队员

2.1 前趋图和程序执行#

1. 前趋图是什么?#

前趋图就是:

描述任务先后关系的图

专业说法:

前趋图 = 有向无循环图 DAG
结点 = 一条语句 / 一个程序段 / 一个进程
有向边 Pi → Pj = Pi 必须先完成,Pj 才能开始

末日版:

先侦查 → 再制定路线 → 再搬物资 → 再撤离

不能反过来。你不能还没侦查就搬物资。

记忆口诀:

箭头指向谁,谁就后执行。

2. 顺序执行#

顺序执行就是:

一个任务做完,再做下一个

比如:

输入 I → 计算 C → 输出 P

它有三个特征:

特征人话末日场景
顺序性严格按顺序执行先开门,再进屋,再拿物资
封闭性程序独占资源,不被别人影响一个小队独占仓库
可再现性条件相同,结果相同每次按同样路线拿物资,结果一样

重点:

顺序执行好理解、好检查、好改错,但效率低。

3. 并发执行#

并发执行就是:

多个程序在执行时间上重叠

末日版:

A 小队搜药品时,
B 小队修发电机,
C 小队烧水做饭。

这样基地效率高,但问题也来了。

并发执行有三个特征:

特征人话问题
间断性 / 异步性谁先谁后不确定执行顺序不可预测
失去封闭性资源被共享会互相影响
不可再现性同样条件可能不同结果容易出错

举个特别好懂的例子:

A 小队:库存 N = N + 1
B 小队:打印库存 N,然后把 N 清零

如果 A 先加,B 后打印,结果可能是 n+1。 如果 B 先打印,A 后加,结果可能是 n。 如果 A 插在 B 打印和清零中间,结果又不一样。

所以并发最大的问题是:

效率提高了,但结果可能乱。

因此后面要引入:

进程、同步、互斥、通信

4. Bernstein 条件怎么记?#

它判断两个语句能不能并发执行。

你只记一句:

只要读写、写读、写写之间没有冲突,就可以并发。

专业形式:

R(S1) ∩ W(S2) = 空
W(S1) ∩ R(S2) = 空
W(S1) ∩ W(S2) = 空

其中:

R = 读集
W = 写集

末日版:

两个小队如果不抢同一个物资、不改同一本账本,就能同时行动。

2.2 进程的描述#

1. 什么是进程?#

最重要定义:

进程 = 程序的一次执行过程

更完整:

进程实体 = 程序段 + 数据段 + PCB
进程 = 进程实体的运行过程

末日版:

程序 = "搜药品任务说明书"
数据 = "目标地点、药品清单、路线图"
PCB = "小队档案卡"
进程 = "这支小队真的出发去搜药品"

2. PCB 是什么?#

PCB 是本章超级核心。

PCB = Process Control Block,进程控制块

它记录操作系统管理进程需要的全部信息。

最关键一句:

PCB 是进程存在的唯一标志。

末日版:

PCB = 小队档案卡

档案卡上写着:

小队编号
当前状态
优先级
下一步去哪里
占用了哪些资源
等待什么事件
CPU 上次执行到哪里

没有这张卡,基地管理员就不知道这个小队存在。


3. 程序和进程的区别#

这个特别爱考选择题。

对比程序进程
本质静态指令集合动态执行过程
生命周期可长期存在有创建、运行、暂停、终止
组成只有代码程序段 + 数据段 + PCB
关系一个程序可对应多个进程一个进程是程序的一次执行

末日版:

程序 = 纸上的作战计划
进程 = 真正出发执行计划的小队

口诀:

程序是死的,进程是活的。
程序在硬盘,进程在运行。

4. 进程的特征#

记四个:

动态性、并发性、独立性、异步性

其中:

动态性是进程最基本特征。

末日版:

动态性:小队有出生、行动、等待、死亡
并发性:多个小队同时存在
独立性:每个小队能独立执行任务
异步性:每个小队推进速度不可预测

2.2 进程状态转换#

1. 五种状态#

状态人话末日场景
创建 New正在创建进程正在组建小队
就绪 Ready万事俱备,只差 CPU小队准备好了,只等出发命令
运行 Running正在用 CPU小队正在执行任务
阻塞 Waiting/Blocked等某事件,暂时不能运行等水泵修好、等物资到达
终止 Terminated执行结束小队任务结束,解散归还物资

2. 三态转换最重要#

最常考的是:

就绪 → 运行:进程调度
运行 → 就绪:时间片完 / 被抢占
运行 → 阻塞:请求 I/O / 等事件
阻塞 → 就绪:事件完成 / 被唤醒

注意:

阻塞 → 运行 不可能直接发生

因为阻塞事件完成后,它只是进入就绪队列,还要等 CPU 调度。

末日版:

等水的小队,水来了以后不能立刻出发。
它要先回到待命区,等指挥官安排。

考试口诀:

阻塞不能直达运行,必须先到就绪。

3. 挂起状态#

挂起就是:

把进程暂停起来,通常从内存移到外存。

末日版:

小队暂时撤到地下避难所,不参加当前调度。

常见原因:

用户需要暂停
父进程需要检查子进程
操作系统需要检查资源
内存不够,需要对换
系统负荷太重

挂起后有两个重要状态:

活动就绪 → 静止就绪
活动阻塞 → 静止阻塞

你可以这样记:

活动 = 在内存,可参与调度
静止 = 被挂起,不参与调度

2.3 进程控制#

进程控制就是:

操作系统对进程进行创建、撤销、阻塞、唤醒、挂起、激活。

这些动作一般由:

内核 + 原语

完成。

原语特点:

原子操作,不可中断。

末日版:

管理员给小队改状态时,不能改一半被打断。
否则档案会乱。

1. 创建进程 Create#

创建进程大概流程:

申请空白 PCB
为新进程分配资源
初始化 PCB
插入就绪队列
返回进程标识符

末日版:

新建小队:
拿一张空档案卡
分配装备和成员
填写状态、编号、优先级
放入待命队列

2. 终止进程 Kill / Destroy#

进程终止原因:

正常结束
异常结束
外界干预

终止时要:

找到 PCB
若正在运行则停止
终止子进程
归还资源
从队列中撤销 PCB

末日版:

小队解散时,要收回武器、食物、车辆,还要处理它下面的小分队。

3. 阻塞与唤醒 Block / Wakeup#

重点:

阻塞是主动的。
唤醒是被动的。

也就是说:

进程发现自己要等 I/O 或等资源,于是自己调用 Block。
但它不能自己 Wakeup,必须由其他进程或系统在事件完成后唤醒。

末日版:

小队发现桥断了,主动停下等待。
等工程队修好桥后,工程队通知它可以继续。

口诀:

阻塞自己来,唤醒别人给。

4. 挂起与激活 Suspend / Active#

Suspend = 挂起
Active = 激活

挂起后进程进入静止状态。 激活后从静止状态回到活动状态。

末日版:

Suspend:小队被转移到地下避难所,暂不参加任务。
Active:重新召回地面待命。

口诀:

Suspend 变静止,Active 变活动。

5. UNIX 系统调用:fork / exec / exit / wait#

这部分很容易考代码输出。

fork()#

fork 调用一次,返回两次。

返回值:

父进程中:返回子进程 pid,大于 0
子进程中:返回 0
失败:返回 -1

末日版:

一支小队复制出一支新小队。
两支小队从 fork 后面的地方继续行动。

记忆:

fork 之后,父子都继续往下跑。

exec()#

exec = 换程序

子进程本来是父进程的复制品,exec 可以让它换成新的代码。

末日版:

复制出来的小队原本和父小队任务一样,
exec 后换成"搜药品"或"修发电机"的新任务。

exit()#

exit = 进程退出

但在 UNIX/Linux 中,exit 后可能先变成:

僵尸进程 zombie

末日版:

小队任务结束了,但档案还没被总管回收。

wait()#

wait = 父进程等待子进程结束并回收它的信息

末日版:

父小队等子小队回来交报告,然后把它的档案归档。

2.4 进程通信#

进程通信就是:

进程之间交换信息。

末日版:

小队之间传情报、共享地图、交接物资。

1. 低级通信 vs 高级通信#

类型特点
低级通信信息量少,不透明,比如信号量
高级通信信息量大,效率高,细节对用户透明

2. 共享存储器#

多个进程共同访问一块内存。

末日版:

几个小队共用一块公告板。
大家都能往上写,也能读。

优点:

速度快

问题:

要处理同步和互斥,不然会乱写

3. 消息传递#

核心原语:

send(receiver, message)
receive(sender, message)

末日版:

A 小队给 B 小队发无线电消息。
B 小队接收消息。

有两种:

直接通信:点名发给某个进程
间接通信:发到信箱,别人从信箱取

4. 管道通信 Pipe#

管道是:

连接读进程和写进程的共享文件

特点:

FIFO 先进先出
通常单向传送
写端 fd[1]
读端 fd[0]

末日版:

一条单向传送带。
左边小队放物资,右边小队按顺序拿。

管道必须处理:

确认对方存在
互斥访问
同步:满了不能再写,空了不能再读

5. Socket / RPC#

Socket:

网络中进程双向通信的端点

末日版:

两个基地之间的无线电频道。

RPC:

远程过程调用

末日版:

你在 A 基地喊一句:
"B 基地医疗站,帮我查库存!"
看起来像本地调用,其实跨基地通信。

2.5 线程的概念#

1. 为什么引入线程?#

进程有两个属性:

资源拥有者
独立调度单位

问题是:

创建、撤销、切换进程开销大。

所以引入线程。

一句话:

线程是更轻量的执行单位。

末日版:

进程 = 一个小队
线程 = 小队里的队员

小队拥有车、枪、药品这些资源。 队员负责具体行动。


2. 进程和线程的核心区别#

对比进程线程
资源拥有资源基本不拥有资源
调度传统上是调度单位引入线程后,线程是调度单位
地址空间不同进程一般独立同一进程线程共享地址空间
开销创建/切换开销大创建/切换开销小
独立性强同进程线程间弱
通信较复杂同进程线程通信方便

最重要一句:

引入线程后,进程是资源分配的基本单位,线程是处理机调度的基本单位。

末日口诀:

进程管资源,线程干活。

3. 线程状态#

线程也有三种基本状态:

执行
就绪
阻塞

但注意:

挂起是进程级概念。
一个进程被挂起,它里面所有线程都被挂起。

末日版:

整个小队被撤到地下避难所,
里面所有队员都不能出任务。

4. TCB#

TCB = Thread Control Block

相当于线程档案卡。

里面有:

线程标识符
寄存器状态
堆栈
运行状态
优先级
线程专有存储器
信号屏蔽

末日版:

TCB = 队员档案卡
记录这个队员当前在干嘛、工具在哪、下一步做什么。

2.6 线程的实现#

主要有三类:

内核支持线程 KST
用户级线程 ULT
组合方式

1. 内核支持线程 KST#

线程由操作系统内核直接管理。

优点:

支持多处理器
一个线程阻塞,其他线程还能运行
调度由内核统一管理

缺点:

切换要进内核,开销较大

末日版:

每个队员都登记在基地总指挥系统里。
指挥系统知道每个队员状态。
管理精确,但登记和调度成本高。

2. 用户级线程 ULT#

线程在用户空间实现,内核不知道这些线程。

优点:

同一进程内线程切换快
不需要进入内核
调度算法可以由用户程序自己定

缺点:

一个线程系统调用阻塞,整个进程可能都阻塞
不能充分利用多处理器

末日版:

小队内部自己安排队员行动,
总基地只知道"这个小队",不知道队员细节。
内部调度很快,但如果小队长卡住,整个小队都可能停。

3. 组合方式#

组合方式就是:

用户级线程 + 内核支持线程

常见模型:

多对一
一对一
多对多

记忆:

多对一:多个用户线程对应一个内核线程,容易整体阻塞
一对一:一个用户线程对应一个内核线程,开销大
多对多:折中,更灵活

第二章最容易考的点#

你优先背这些:

1. 进程实体 = 程序段 + 数据段 + PCB。
2. PCB 是进程存在的唯一标志。
3. 程序是静态的,进程是动态的。
4. 进程最基本特征是动态性。
5. 进程三态转换:
就绪 → 运行:调度
运行 → 就绪:时间片完
运行 → 阻塞:等待事件 / I/O 请求
阻塞 → 就绪:事件完成
阻塞 → 运行:不可能
6. 阻塞是主动的,唤醒是被动的。
7. Suspend 是挂起,Active 是激活。
8. fork 调用一次,返回两次。
父进程返回子进程 pid,子进程返回 0。
9. exec 是用新程序覆盖当前进程内容。
10. wait 用来等待并回收子进程。
11. 进程通信方式:
共享存储器、消息传递、管道、客户机-服务器。
12. 管道通信 FIFO,通常单向。
13. 进程是资源分配单位,线程是调度单位。
14. 同一进程内线程共享进程资源。
15. 用户级线程切换快,但一个线程阻塞可能导致整个进程阻塞。
16. 内核级线程更强,但切换开销较大。

一张末日基地总图#

程序 = 任务说明书
进程 = 正在执行任务的小队
= 程序段 + 数据段 + PCB
PCB = 小队档案卡
= 进程存在的唯一标志
状态:
创建 → 就绪 → 运行 → 终止
运行 ↔ 就绪
运行 → 阻塞 → 就绪
活动 ↔ 静止(挂起/激活)
进程控制:
Create 创建
Kill 终止
Block 阻塞
Wakeup 唤醒
Suspend 挂起
Active 激活
进程通信:
共享公告板 = 共享存储器
无线电发消息 = 消息传递
单向传送带 = 管道
跨基地频道 = Socket / RPC
线程:
进程 = 小队
线程 = 队员
进程管资源,线程干活

主动回忆小测#

合上这份讲解,试着回答:

1. PCB 为什么说是进程存在的唯一标志?
2. 程序和进程有什么区别?
3. 运行态到阻塞态是什么原因?
4. 阻塞态能不能直接到运行态?
5. fork 为什么叫"调用一次,返回两次"?
6. 进程和线程最核心区别是什么?
7. 用户级线程和内核级线程各有什么优缺点?

你只要能答出这 7 个,第二章最核心的骨架就已经立起来了。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

操作系统综合复习网页
https://blog.caishu.site/posts/operating-system-review-2026-06-20/
作者
皮耶罗
发布于
2026-06-20
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
皮耶罗
在超市后门,和喜欢的故事一起短暂放空。
公告
这里记录了技术探索、日常反思和开源旅程。
音乐
封面

音乐

暂未播放

0:000:00
暂无歌词
分类
标签
站点统计
文章
59
分类
16
标签
237
总字数
121,121
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
GitHub Actions
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
内容概览
1
第 1 章 末日基地操作系统说明书
第 1 章一句话总览
1.1 操作系统的目标和作用
先抓本质
操作系统的目标
操作系统的三大作用
1.2 操作系统的发展过程
阶段 1:人工操作方式
阶段 2:脱机输入输出
阶段 3:单道批处理系统
阶段 4:多道批处理系统
阶段 5:分时系统
阶段 6:实时系统
1.3 操作系统的基本特征
1. 并发性
2. 共享性
3. 虚拟性
4. 异步性
1.4 操作系统的运行环境
1. 内核
2. 原语
3. 用户态和核心态
4. 中断
5. 系统调用
1.5 操作系统的主要功能
处理机管理
存储器管理
设备管理
文件管理
1.6 操作系统的结构设计
无结构操作系统
模块化结构
分层式结构
微内核结构
第一章最容易考的选择/填空点
主动回忆小测
末日基地总图
2
第 2 章一句话总览
3
2.1 前趋图和程序执行
1. 前趋图是什么?
2. 顺序执行
3. 并发执行
4. Bernstein 条件怎么记?
4
2.2 进程的描述
1. 什么是进程?
2. PCB 是什么?
3. 程序和进程的区别
4. 进程的特征
5
2.2 进程状态转换
1. 五种状态
2. 三态转换最重要
3. 挂起状态
6
2.3 进程控制
1. 创建进程 Create
2. 终止进程 Kill / Destroy
3. 阻塞与唤醒 Block / Wakeup
4. 挂起与激活 Suspend / Active
5. UNIX 系统调用:fork / exec / exit / wait
fork()
exec()
exit()
wait()
7
2.4 进程通信
1. 低级通信 vs 高级通信
2. 共享存储器
3. 消息传递
4. 管道通信 Pipe
5. Socket / RPC
8
2.5 线程的概念
1. 为什么引入线程?
2. 进程和线程的核心区别
3. 线程状态
4. TCB
9
2.6 线程的实现
1. 内核支持线程 KST
2. 用户级线程 ULT
3. 组合方式
10
第二章最容易考的点
11
一张末日基地总图
12
主动回忆小测
文章目录
内容概览
1
第 1 章 末日基地操作系统说明书
第 1 章一句话总览
1.1 操作系统的目标和作用
先抓本质
操作系统的目标
操作系统的三大作用
1.2 操作系统的发展过程
阶段 1:人工操作方式
阶段 2:脱机输入输出
阶段 3:单道批处理系统
阶段 4:多道批处理系统
阶段 5:分时系统
阶段 6:实时系统
1.3 操作系统的基本特征
1. 并发性
2. 共享性
3. 虚拟性
4. 异步性
1.4 操作系统的运行环境
1. 内核
2. 原语
3. 用户态和核心态
4. 中断
5. 系统调用
1.5 操作系统的主要功能
处理机管理
存储器管理
设备管理
文件管理
1.6 操作系统的结构设计
无结构操作系统
模块化结构
分层式结构
微内核结构
第一章最容易考的选择/填空点
主动回忆小测
末日基地总图
2
第 2 章一句话总览
3
2.1 前趋图和程序执行
1. 前趋图是什么?
2. 顺序执行
3. 并发执行
4. Bernstein 条件怎么记?
4
2.2 进程的描述
1. 什么是进程?
2. PCB 是什么?
3. 程序和进程的区别
4. 进程的特征
5
2.2 进程状态转换
1. 五种状态
2. 三态转换最重要
3. 挂起状态
6
2.3 进程控制
1. 创建进程 Create
2. 终止进程 Kill / Destroy
3. 阻塞与唤醒 Block / Wakeup
4. 挂起与激活 Suspend / Active
5. UNIX 系统调用:fork / exec / exit / wait
fork()
exec()
exit()
wait()
7
2.4 进程通信
1. 低级通信 vs 高级通信
2. 共享存储器
3. 消息传递
4. 管道通信 Pipe
5. Socket / RPC
8
2.5 线程的概念
1. 为什么引入线程?
2. 进程和线程的核心区别
3. 线程状态
4. TCB
9
2.6 线程的实现
1. 内核支持线程 KST
2. 用户级线程 ULT
3. 组合方式
10
第二章最容易考的点
11
一张末日基地总图
12
主动回忆小测