第四课:程序(Program)和进程(Process)
很多新手会说:
程序就是进程。
其实这是 错误的 。
我们先不要看教材定义,先来看一个生活中的例子。
先讲一个故事
假设你去饭店。
厨师有一本:
《宫保鸡丁菜谱》
菜谱里面写着:
第一步:
切鸡肉
↓
第二步:
放油
↓
第三步:
放辣椒
↓
第四步:
翻炒
请问:
菜谱是不是一道菜?
不是。
它只是:
做菜的方法。
然后:
厨师开始真正做菜。
这个时候:
锅已经热了。
鸡肉已经切好了。
锅里放了多少油。
炒到第几步。
这些信息都在不断变化。
这时候:
真正做菜的过程 ,才是进程。
所以:
菜谱
↓
程序(Program)
———————-
真正炒菜
↓
进程(Process)
再举一个电脑例子
你的电脑里有:
QQ.exe
它静静躺在:
D:\\QQ\\
它有没有运行?
没有。
它只是一个文件。
所以:
程序 = 存放在磁盘上的静态文件。
现在:
你双击QQ。
发生了什么?
QQ.exe
↓
Windows加载
↓
进入内存
↓
CPU开始执行
↓
QQ窗口出现
这个时候:
QQ已经变成:
进程。
官方定义(翻译成人话)
教材:
程序是指令的集合。
翻译:
就是:
一个普通文件。
例如:
QQ.exe
微信.exe
Chrome.exe
都是程序。
教材:
进程是程序的一次执行过程。
翻译:
程序:
只是躺在那里。
进程:
已经开始跑了。
最重要的一句话(考试必考)
程序是静态的。
进程是动态的。
一定要记住。
我们来对比。
| 静态 | 动态 |
| 存在磁盘 | 存在内存 |
| 不占CPU | 正在使用CPU |
| 永久存在 | 会创建、结束 |
| 可以被复制很多次 | 每次运行都会产生新的进程 |
一个程序可以产生多个进程吗?
答案:
当然可以。
例如:
打开QQ。
再打开一个QQ。
再打开一个QQ。
电脑里:
QQ.exe
↓
进程1
↓
进程2
↓
进程3
是不是:
一个程序。
三个进程。
所以:
一个程序可以对应多个进程。
为什么需要进程?
现在有一个问题。
假设:
浏览器正在播放视频。
突然:
CPU切去运行QQ。
过了一会儿:
再回来。
CPU怎么知道:
浏览器刚才执行到了哪里?
例如:
浏览器程序:
① 读取视频
↓
② 解码
↓
③ 播放声音
↓
④ 显示画面
CPU切走以后。
回来:
怎么知道:
现在应该执行:
②?
还是③?
必须有人记住。
于是:
操作系统为每一个进程建立:
身份证。
教材叫:
PCB(Process Control Block,进程控制块)
PCB是什么?
PCB就是:
进程档案。
我们举个学生档案的例子。
学校不会只记:
张三
还会记:
姓名
学号
班级
成绩
联系方式
同样:
操作系统也要记录:
↓
运行到哪里
↓
用了多少内存
↓
优先级
↓
打开了哪些文件
这些全部放进:
PCB。
PCB里面有什么?
教材一般会分四类。
我们先理解,不要求背。
① 进程标识信息
例如:
PID = 1024
每个进程:
都有自己的身份证号。
Linux:
ps
看到的:
PID
1024
1031
2056
就是:
进程编号。
② CPU现场
这是最重要的。
例如:
CPU刚刚运行到:
第200行代码。
突然:
CPU去运行微信。
回来以后。
必须继续:
第201行。
所以:
PCB里面要保存:
CPU寄存器
程序计数器(PC)
栈指针
现在不用死记,知道作用即可:
保存运行现场。
③ 资源信息
例如:
QQ:
用了:
500MB内存
打开:
聊天.db
头像.png
这些:
PCB都要记录。
④ 调度信息
操作系统要决定:
谁先运行?
所以:
PCB里面还有:
优先级
状态
等待时间
以后讲调度算法会详细说。
PCB为什么重要?
一句话:
PCB是进程存在的唯一标志。
什么意思?
很多同学误以为:
程序在内存里就是进程。
其实不是。
真正让操作系统认识一个进程的是:
PCB
教材经常说:
创建进程,本质就是创建PCB。
撤销进程,本质就是删除PCB。
这两句话非常重要。
一个完整的流程
当你双击QQ时,发生的是:
磁盘
QQ.exe
│
▼
操作系统
① 创建PCB
② 分配内存
③ 加载程序
④ 分配资源
│
▼
CPU开始运行
│
▼
QQ进程
所以:
程序是原材料,进程是生产出来并正在运行的产品,PCB是它的身份证和档案。
今天最重要的一张图(一定记住)
程序(Program)
(磁盘上的静态文件)
│
双击 / 操作系统加载
│
▼
创建 PCB(身份证)
│
分配内存、CPU等资源
│
▼
进程(Process)
(正在运行的程序)
本课重点总结(考试高频)
✅ 程序是静态的,进程是动态的。
✅ 程序存放在磁盘,进程运行在内存。
✅ 一个程序可以创建多个进程。
✅ PCB(进程控制块)是进程存在的唯一标志。
✅ 创建进程 = 创建PCB;撤销进程 = 删除PCB。
下一课预告
下一课我们会学习 进程的三种基本状态(就绪、运行、阻塞) 。
这一节是整个进程管理的基础,也是 调度算法、同步、死锁 等内容的前置知识。你会明白为什么程序有时候"卡住了",其实并不是CPU在偷懒,而是进程进入了不同的状态。
继续下一课
很好,从这一课开始,我们真正进入 操作系统最经典、也是考试出现频率最高的知识点 。
> 这一节学会了,你就真正开始理解操作系统是怎么"管理程序"的。
网硕互联帮助中心








评论前必须登录!
注册