主题
第二章 进程与线程:CPU 的虚拟化起点
1. 从一个问题出发:一个 CPU 怎么"同时"跑一百个程序
上一章说过,操作系统最重要的魔术是虚拟化。这一章讲第一个魔术:CPU 虚拟化。
机器上可能只有 4 个 CPU 核心,但你同时开着浏览器、音乐、聊天软件和几十个后台服务。操作系统的做法不是变出更多 CPU,而是让 CPU 快速轮流:每个程序跑几毫秒就被暂停,换下一个上场。切换足够快,人的感官就以为大家在同时运行。
要实现"暂停一个程序、以后还能原样恢复",操作系统必须回答一个问题:一个正在运行的程序,到底由哪些状态组成?暂停时要把什么存起来? 对这个问题的完整回答,就是"进程"这个概念。
2. 程序 vs 进程:静态与动态的区别
程序是躺在磁盘上的一个可执行文件,是一段静态的指令和数据,像一份菜谱。
进程(process)是程序被加载进内存、跑起来之后的那个"活的执行过程",像照着菜谱做菜的整个动态过程——有进度、有中间状态、会占用炉灶和食材。
| 对比项 | 程序 | 进程 |
|---|---|---|
| 性质 | 静态的文件 | 动态的执行过程 |
| 生命周期 | 长期存在于磁盘 | 有创建、运行、消亡的过程 |
| 与资源的关系 | 不占用 CPU、内存 | 占用内存、CPU 时间、打开的文件等 |
| 数量对应 | 一个程序 | 可对应多个进程,同一程序可同时运行多份 |
考试高频表述:"进程是程序的一次执行","进程 = 程序 + 数据 + PCB"。要点是动态性:进程有生命周期,程序没有。同一个浏览器程序开三个窗口,可能就是三个进程。
进程的几个教材级特征:动态性(最基本特征)、并发性、独立性(资源分配和调度的基本单位)、异步性(走走停停、推进速度不可预知)。
