Skip to content

第二章 进程与线程:CPU 的虚拟化起点


1. 从一个问题出发:一个 CPU 怎么"同时"跑一百个程序

上一章说过,操作系统最重要的魔术是虚拟化。这一章讲第一个魔术:CPU 虚拟化

机器上可能只有 4 个 CPU 核心,但你同时开着浏览器、音乐、聊天软件和几十个后台服务。操作系统的做法不是变出更多 CPU,而是让 CPU 快速轮流:每个程序跑几毫秒就被暂停,换下一个上场。切换足够快,人的感官就以为大家在同时运行。

要实现"暂停一个程序、以后还能原样恢复",操作系统必须回答一个问题:一个正在运行的程序,到底由哪些状态组成?暂停时要把什么存起来? 对这个问题的完整回答,就是"进程"这个概念。

2. 程序 vs 进程:静态与动态的区别

程序是躺在磁盘上的一个可执行文件,是一段静态的指令和数据,像一份菜谱。

进程(process)是程序被加载进内存、跑起来之后的那个"活的执行过程",像照着菜谱做菜的整个动态过程——有进度、有中间状态、会占用炉灶和食材。

对比项程序进程
性质静态的文件动态的执行过程
生命周期长期存在于磁盘有创建、运行、消亡的过程
与资源的关系不占用 CPU、内存占用内存、CPU 时间、打开的文件等
数量对应一个程序可对应多个进程,同一程序可同时运行多份

考试高频表述:"进程是程序的一次执行","进程 = 程序 + 数据 + PCB"。要点是动态性:进程有生命周期,程序没有。同一个浏览器程序开三个窗口,可能就是三个进程。

进程的几个教材级特征:动态性(最基本特征)、并发性、独立性(资源分配和调度的基本单位)、异步性(走走停停、推进速度不可预知)。

3. 进程由什么组成:PCB 与地址空间

3.1 PCB:进程的"身份证 + 病历本"

3.2 地址空间布局:进程眼中的内存

4. 进程的状态:三态与五态模型

4.1 为什么至少需要三个状态

4.2 状态迁移图:每条边为什么存在

4.3 五态模型:加上创建与终止

5. 进程的创建与终止

6. 线程为什么被发明

7. 进程 vs 线程:全维度对照表

8. 用户级线程 vs 内核级线程

9. 上下文切换到底切换了什么

10. 本章要点回顾

11. 做题提醒