第4讲:从程序到进程——操作系统如何让程序运行起来?
第四课程序Program和进程Process很多新手会说程序就是进程。其实这是错误的。我们先不要看教材定义先来看一个生活中的例子。先讲一个故事假设你去饭店。厨师有一本《宫保鸡丁菜谱》菜谱里面写着第一步 切鸡肉 ↓ 第二步 放油 ↓ 第三步 放辣椒 ↓ 第四步 翻炒请问菜谱是不是一道菜不是。它只是做菜的方法。然后厨师开始真正做菜。这个时候锅已经热了。鸡肉已经切好了。锅里放了多少油。炒到第几步。这些信息都在不断变化。这时候真正做菜的过程才是进程。所以菜谱 ↓ 程序Program ---------------------- 真正炒菜 ↓ 进程Process再举一个电脑例子你的电脑里有QQ.exe它静静躺在D:\QQ\它有没有运行没有。它只是一个文件。所以程序 存放在磁盘上的静态文件。现在你双击QQ。发生了什么QQ.exe ↓ Windows加载 ↓ 进入内存 ↓ CPU开始执行 ↓ QQ窗口出现这个时候QQ已经变成进程。官方定义翻译成人话教材程序是指令的集合。翻译就是一个普通文件。例如QQ.exe 微信.exe Chrome.exe都是程序。教材进程是程序的一次执行过程。翻译程序只是躺在那里。进程已经开始跑了。最重要的一句话考试必考程序是静态的。进程是动态的。一定要记住。我们来对比。程序Program进程Process静态动态存在磁盘存在内存不占CPU正在使用CPU永久存在会创建、结束可以被复制很多次每次运行都会产生新的进程一个程序可以产生多个进程吗答案当然可以。例如打开QQ。再打开一个QQ。再打开一个QQ。电脑里QQ.exe ↓ 进程1 ↓ 进程2 ↓ 进程3是不是一个程序。三个进程。所以一个程序可以对应多个进程。为什么需要进程现在有一个问题。假设浏览器正在播放视频。突然CPU切去运行QQ。过了一会儿再回来。CPU怎么知道浏览器刚才执行到了哪里例如浏览器程序① 读取视频 ↓ ② 解码 ↓ ③ 播放声音 ↓ ④ 显示画面CPU切走以后。回来怎么知道现在应该执行②还是③必须有人记住。于是操作系统为每一个进程建立身份证。教材叫PCBProcess Control Block进程控制块PCB是什么PCB就是进程档案。我们举个学生档案的例子。学校不会只记张三还会记姓名 学号 班级 成绩 联系方式同样操作系统也要记录QQ ↓ 运行到哪里 ↓ 用了多少内存 ↓ 优先级 ↓ 打开了哪些文件这些全部放进PCB。PCB里面有什么教材一般会分四类。我们先理解不要求背。① 进程标识信息例如PID 1024每个进程都有自己的身份证号。Linuxps看到的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。