os -- 进程的控制
os -- 进程的控制
参考
《计算机操作系统》(第四版) 汤小丹等编著
概念引入
进程控制
进程控制是最基本的功能,负责创建进程、结束进程等功能,一般由 OS 内核中的原语来实现
原语
所谓原语,就是由若干条指令组成的,用于完成一定功能的一个过程,算是不可分割的、最基本的操作
Note
- 接下来原语基本用于所有的操作
操作系统内核
操作系统将一些常用或者运行频率较高的模块(如时钟管理、进程调度等)常驻内存,这些就被称为 OS 内核
两大功能
-
支撑功能
- 中断处理
- 时钟管理
- 原语操作
-
资源管理功能
- 进程管理
- 存储器管理
- 设备管理
进程的创建
进程的层次
进程可以创建另一个进程,形成父进程和子进程的关系
Note
- 进程不能拒绝子进程的继承权
- 父进程撤销时,子进程也得随之 over
- 根据父子进程的关系,可以构成一棵进程树
- Window 中,一个进程创建另一个进程时,获得一个句柄,形成控制与被控制的关系
引起创建进程的事件
- 用户登录
- 作业调度
- 提供服务
- 应用请求
进程的创建
调用进程创建原语 Creat
- 申请空白 PCB(进程控制块),获取唯一的数字标识符
- 分配进程所需的资源
- 初始化 PCB
- 允许的情况下,插入就绪队列
进程的终止
引起进程终止的事件
-
正常结束
-
异常终止
- 越界错:超出进程访问的存储区
- 保护错:进程试图访问不能被访问的资源或文件
- 非法指令:访问一条不存在的指令
- 运行超时
- 等待超时
- 算术运算错
- I/O 故障
-
外界干预
Note:最典型的算是 Ctrl + C 吧
进程的终止过程
调用进终止原语
- 根据进程的标识符, 从 PCB 集合中检索该进程的 PCB,读出进程状态
- 若进程还在执行,则立即终止该进程的执行,并置调度标志为真,用于指示该进程被终止后应重新进行调度
- 若该进程还有子孙进程,则先终止其子孙进程,防止失控进程的产生
- 将终止进程的所有资源归还父进程或系统
- PCB 从所在集合中移除
进程的阻塞与唤醒
引起进程阻塞和唤醒的事件
- 请求共享资源失败
- 等待某种操作的完成
- 新数据尚未到达
- 等待新任务的到达
进程阻塞进程
调用阻塞原语 Block
- 将进程停止运行
- 修改 PCB 现行状态为“阻塞”
- 插入阻塞队列等待唤醒
进程唤醒过程
调用唤醒原语 Wakeup
- 将进程从阻塞队列移出
- 修改 PCB 线性状态为“执行”
- 插入到就绪队列
进程的挂起与激活
进程的挂起
挂起原语 suspend
- 检查被挂起进程的状态
- 若为活动就绪状态,则改为静止就绪
- 若为活动阻塞状态,则改为静止阻塞
- 将该进程的 PCB 复制到指定的内存区域,方便考察其运行情况
- 若进程正在执行,则转向调度程序重新调度
进程的激活过程
激活原语 active
- 状态转换与挂起相反
总结
- 原语和操作系统内核
- 进程的创建和终止
- 进程的阻塞和唤醒
- 进程的挂起和激活