整体框架
1、什么是进程控制?
进程控制的主要功能
是对系统中的所有进程实施有效的管理
,
- 它具有创建新进程、撤销已有进程、实现进程状态转换等功能。
简单来说:进程控制就是要实现进程状态转换
2、如何实现进程控制?
2.1、进程控制
① 创建进程:需要初始化 PCB
、分配系统资源
- 创建态 -> 就绪态,需要修改
PCB
内容和相应队列
② 就绪态 -> 运行态 需要恢复
进程运行环境、修改 PCB
内容和相应队列
- 恢复进程运行环境因为进程可能在运行中就因为某个原因让出了
CPU
,这一次又抢到了CPU
时间片,需要从之前中断的地方开始执行
③ 运行态 -> 阻塞态 需要保存
进程运行环境、修改 PCB
内容和相应队列
- 保存进程运行环境因为进程因为某个原因让出了
CPU
,在某段时间后可能还会再次抢到CPU
,需要从之前中断的地方开始执行
④ 阻塞态 -> 就绪态 需要修改 PCB
内容和相应队列。
- 如果等待的是资源,则还需为进程分配系统资源
⑤ 运行态 -> 就绪态(进程切换)需要保存
进程运行环境、修改 PCB
内容和相应队列
⑥ 运行态 -> 终止态 需回收进程拥有的资源,撤销 CPU
3.2、原语
原语是一种特殊的程序
,处于操作系统最顶层,是最接近硬件的部分
用 原语 \color{red}原语 原语实现进程控制。
原语的特点
是执行期间
不允许中断
\color{red}不允许中断
不允许中断,
- 只能一气呵成。
这种不可被中断的操作即 原子操作 \color{red}原子操作 原子操作。
原语采用 “ 关中断 \color{red}关中断 关中断指令” 和 “ 开中断 \color{red}开中断 开中断指令” 实现
显然, 关 / 开中断指令 \color{red}关/开中断指令 关/开中断指令的权限非常大,
- 必然是只允许在 核心态 \color{red}核心态 核心态下执行的 特权指令 \color{red}特权指令 特权指令
原语属于操作系统内核的一部分
3.3.3、进程控制相关的原语
学习技巧:进程控制会导致进程状态的转换。无论哪个原语,要做的无非三类事情:
-
更新
PCB
中的信息(如修改进程状态标志、将运行环境保存到PCB
、从PCB
恢复运行环境)a. 所有的进程控制原语一定都会
修改进程状态标志
b. 剥夺当前运行进程的
CPU
使用权必然需要保存其运行环境c. 某进程开始运行前必然要恢复期运行环境
-
将
PCB
插入合适的队列 -
分配/回收资源
3.3.1、进程的创建原语
无 -> 创建态 -> 就绪态
3.3.2、进程的终止原语
就绪态/阻塞态/运行态 -> 终止态 -> 无
3.3.3、进程的阻塞和唤醒原语
阻塞原语与唤醒原语必须成对使用
阻塞原语:运行态 -> 阻塞态
唤醒原语:阻塞态 -> 运行态
因何事阻塞,就应何事唤醒
即:解铃还须系铃人
.3.3.4、进程的切换原语
运行态 -> 阻塞态/就绪态
就绪态 -> 运行态
3、整体框架
各原语可以实现怎样的状态转换
各原语大概做了哪些事情