学习总结啦
三、进程控制
进程控制是进程管理中最基本的功能,主要包括创建新进程、终止已完成的进程、将因发生异常情况而无法继续运行的进程置于阻塞状态、负责进程运行中的状态转换等功能。
进程控制一般是由OS的内核中的原语来实现的。
原语是由若干条指令组成的,用于完成一定功能的一一个过程。.它与一般过程的区别在于:它们是“原子操作”,原子操作,是指一个操作中的所有动作要么全做,要么全不做。换言之,它是一个不可分割的基本单位,因此,在执行过程中不允许被中断。
1.操作系统内核
处理机执行状态:
①系统态(管态) ;
②用户态(目态)
0S内核包含的功能:
1.支撑功能
(1)中断处理;(2)时钟管理;
(3)原语操作
2.资源管理功能
(1)进程管理;(2)存储器管理;
(3)设备管理
2.进程的创建
2.1进程的层次结构
父进程、子进程、孙进程的概念
在0S中,允许一个进程创建另一个进程,通常把创建进程的进程称为父进程,被创建的进程称为子进程。子进程可继续创建更多的孙进程。
子进程可以继承父进程所拥有的资源。
2.2进程图
进程图是用于描述一个进程的家族关系的有向树,如图所示。图中的结点(圆圈)代表进程。在进程D创建了进程I之后,称D是I的父进程,I是D的子进程。创建父进程的进程称为祖先进程,树的根节点是祖先。
2.3引起创建进程的事件
导致一个进程去创建另一个进程的典型事件,有以下四类:
(1)用户登录。在分时系统中,用户在终端键入登录命令后,如果是合法用户,系统将为该终端建立一个进程,并把它插入就绪队列中。
(2)作业调度。在批处理系统中,当作业调度程序按一定.的算法调度到某作业时,便将该作业装入内存,为它分配必要的资源,并立即为它创建进程,再插入就绪队列中。
(3)提供服务。当运行中的用户程序提出某种请求后,系.统将专门创建-一个进程来提供用户所需要的服务。
(4) 应用请求。基于应用进程的需求,由它自己创建一个新进程,以便使新进程以并发运行方式完成特定任务。
2.4 进程的创建
一旦操作系统发现了要求创建新进程的事件后,便调用进程创建原语Creat()按下述步骤创建-一个新进程。
(1)申请空白PCB。为新进程申请获得惟--的数字标识符,并从PCB集合中索取一个空白PCB。
(2)为新进程分配资源。如内存、文件、I/0设备和CPU时间等。
(3)初始化进程控制块。PCB的初始化包括:①初始化标识信息;②初始化处理机状态信息;③初始化处理机控制信息。
(4)将新进程插入就绪队列,如果进程就绪队列能够接纳新进程,便将新进程插入就绪队列。
3.进程的控制
3.1引起进程终止的事件
1)正常结束
在任何计算机系统中,都应有一个用于表示进程已经运行完成的指示。
2)异常结束
在进程运行期间,由于出现某些错误和故障而迫使进程终止。这类异常事件很多,常见的有下述几种:
(1)越界错误; (2)保护错; (3)非法指令; (4)特权指令错;(5) 运行超时; (6) 等待超时; (7) 算术运算错; (8) I/0故障
3)外界干预
这些干预有:
①操作员或操作系统干预;
②父进程请求;
③父进程终止。
3.2进程的终止过程
- (1)根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程的状态。
- (2)若被终止进程正处于执行状态,应立即终止该进程的执行,并置调度标志为真,用于指示该进程被终止后应重新进行调度。
- (3)若该进程还有子孙进程,还应将其所有子孙进程予以终止,以防它们成为不可控的进程。
- (4)将被终止进程所拥有的全部资源,或者归还给其父进程,或者归还给系统。
- (5)将被终止进程(PCB)从所在队列(或链表)中移出,等待其他程序来搜集信息
4.进程的阻塞与唤醒
4.1引起进程阻塞和唤醒的事件
有下述几类事件会引起进程阻塞或被唤醒:
- 向系统请求共享资源失败
- 等待某种操作完成
- 新数据尚未到达.
- 等待新任务的到达
4.2 进程阻塞过程(阻塞原语block)
调用阻塞原语block将自己阻塞:
- (1)若运行,停止;
- (2)修改进程控制块中的状态:从执行到阻塞;
- (3)插入阻塞队列;
- (4)调度程序进行进程切换,保留被阻塞进程的处理机.状态;
4.3 进程唤醒过程(唤醒原语wakeup)
调用唤醒原语wakeup,将等待该事件的进程唤醒:
(1)从阻塞队列中移出;
(2)修改进程控制块中的状态:从阻塞到就绪;
(3)插入到就绪队列;
5.进程的挂起与激活
5.1进程的挂起
当系统中出现了引起进程挂起的事件时,OS将利用挂起原语suspend将指定进程或处于阻塞状态的进程挂起。
suspend 的执行过程是:
首先检查被挂起进程的状态,若处于活动就绪状态,便将其改为静止就绪:对于活动阻塞状态的进程,则将之改为静止阻塞;为了方便用户或父进程考查该进程的运行情况,而把该进程的PCB复制到某指定的内存区域;
最后,若被挂起的进程正在执行,则转向调度程序重新调度。
5.2进程的激活过程
激活原语先将进程从外存调入内存,检查该进程的现行状态,若是静止就绪,便将之改为活动就绪;若为静止阻塞,便将之改为活动阻塞。