第二章 进程控制

来源:互联网 发布:淘宝省钱群是真的吗 编辑:程序博客网 时间:2024/06/04 23:27

原语:由若干条指令组成的,能够完成一定功能的程序段;该程序段要么全部执行,要么一句也不执行。

进程控制是对系统中的全部进程实施有效的管理,包括进程创建、终止、进程阻塞与唤醒、进程挂起与激活。


一、进程的创建

⒈  引起进程创建的事件

●  用户登录

●  作业调度

●  提供服务

⒉  进程创建过程

操作系统发现要求创建新进程的事件后,调用进程创建原语Creat()创建新进程。

Creat()的执行过程:

申请空白PCB —> 为新进程分配资源 —> 初始化进程控制块 —> 将新进程插入就绪队列


二、进程的终止

⒈  引起进程终止的事件

●  正常结束

●  异常结束

越界错误、非法指令等

●  外界干预

操作员或操作系统干预

父进程请求

父进程终止

⒉  进程终止过程

如果系统中发生了要求终止进程的某事件,OS便调用进程终止原语终止进程。

终止原语的执行过程:

找出被终止进程的PCB —> 若进程状态为运行态,置CPU调度标志为真 —> 若其有子孙进程,终止其子孙进程并回收其资源 —> 回收终止进程的资源 —> 回收终止进程的PCB


三、进程的阻塞与唤醒

⒈  引起进程阻塞与唤醒的事件

●  请求系统服务

●  启动某种操作

●  新数据尚未到达

●  无新工作可做

⒉  进程阻塞过程

正在执行的进程,如果发生了上述某事件,进程便通过调用阻塞原语Block()将自己阻塞。

Block()的执行过程:

将PCB中的状态改为阻塞态,并加入阻塞队列 —> 转进程调度

⒊  进程唤醒过程

当阻塞进程等待的事件发生,则由有关进程调用唤醒原语Wakeup()唤醒等待该事件的进程。

Wakeup()的执行过程:

把阻塞进程从等待该事件的阻塞队列中移出 —> 置进程状态为就绪态,将PCB插入到就绪队列中

注:阻塞原语与唤醒原语作用相反,成对使用


四、进程的挂起与激活

⒈  引起进程挂起与激活的事件

●  终端用户的请求

●  父进程请求

●  负荷调节的需要

●  操作系统的需要

⒉  进程挂起过程

当出现引起进程挂起的事件时,系统利用挂起原语Suspend()将指定进程或处于阻塞的进程挂起。

Suspend()的执行过程:

检查被挂起进程的状态,若处于活动就绪,则改为静止就绪;若处于活动阻塞,则改为静止阻塞;若挂起的进程正在执行,则重新进行进程调度

⒊  进程激活过程

当发生激活进程的事件时,系统利用激活原语Active()将指定进程激活。

Active()的执行过程:

将进程从外存调入内存 —> 检查该进程的状态,若为静止就绪,则改为活动就绪;若为静止阻塞,则改为活动阻塞