进程控制

1.什么是进程控制?
首先它是一种功能,它能完成创建进程,终止已完成的进程,将因发生异常而无法继续运行的进程置于阻塞状态,负责进程运行中的状态转换等工作。

2.它是怎么实现的呢?
进程控制一般由OS内核中的原语实现。(在后边将详细说明什么是原语)

3.OS内核(即核心部分)
不同类型的规模的OS,它们的内核所包含的功能间存在着一定的差异,但大部分的OS内核包含以下两方面的功能:
A.支撑功能:
(1)中断处理。中断处理是内核最基本的功能,是整个OS赖以活动的基础,OS中有许多重要的活动。如各种类型的的系统调用,键盘命令的输入,进程调度,设备驱动等,都需要中断处理来进行实现。(在实际应用中,为了减少处理机的中断时间,提高程序执行的并发性,内核在对中断进行“有限处理后”,便转入相关的进程,由这些进程继续完成后续的处理工作)
(2)时钟管理。它是内核的一项基本功能,OS的许多活动都需要它来支撑,比如时间轮转调度中时钟管理是必要的。
(3)原语操作。所谓原语,就是由若干条指令组成的,用于完成一定功能的过程。它与一般过程的区别在于他们是原子操作(不可中断,要么不做,要做就全做完)。所以原语操作就是用原语来进行的一些操作。

B.资源管理功能:
(1)进程管理。
(2)存储器管理。
(3)设备管理。

4.进程的创建
在OS中每当出现了创建新进程的请求后,OS便调用进程创建原语Creat按照下面步骤来进行:
(1)申请空白PCB:为新进程申请到唯一的数字标识符,并从PCB集合中索取一个空白的PCB。
(2)为新进程分配其运行所需的资源。(这些资源包括各种逻辑资源,如内存,文件,I/O设备,CPU时间等)
(3)初始化PCB(进程控制块)。PCB的初始化包括:初始化标识信息(将系统分配的标识符和父进程标识符填入新PCB中),初始化处理机状态信息(让程序计数器指向程序的入口让栈指针指向栈顶),初始化处理机控制信息(将进程的状态设置为就绪状态或静止就绪状态)
(4)如果进程就绪队列能接纳新进程,便将进程插入就绪队列中。
5.引起创建进程的事件
为了让程序之间能并发运行,应先为它们分别创建进程。
导致一个进程去创建另一个进程的典型事件有四类:
(1)用户登录。
(2)作业调度。
(3)提供服务。
(4)应用请求。
6.进程的层次结构
在OS中,允许一个进程创建另一个进程,通常把创建进程的进程称为父进程,被创建的进程称为子进程,他们之间有继承关系。(类似于java的类和子类)
所以就有了下面的进程图:
进程控制_第1张图片
7.进程的终止
如果OS中发生了要求终止进程的某事件,OS便调用进程终止原语按下述过程去终止指定进程:
(1)根据被终止的进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程的状态。
(2)若要被终止的进程正处于执行的状态,应立即终止该进程的执行,并置调度标志为真,用于指示该进程被终止后应重新进行调度。
(3)若该进程还有子孙进程,还应该将其所有子孙进程都终止,以防它们成为不可控的进程。
(4)将被终止进程所拥有的全部资源或者归还给其父进程,或者归还给系统。
(5)将被终止进程PCB从所在队列中移除,等待其他的程序来收集。

8.引起进程终止的事件
(1)正常结束。
(2)异常结束。
(3)外界干预。

9.进程的阻塞和唤醒
1)阻塞过程:正在执行的进程,如果发生了引起进程阻塞的事件,进程便会通过调用阻塞原语block将自己阻塞。
2)唤醒过程:当被阻塞进程所期待的事发生时,或其所期待的数据已经到达,则由有关进程调用唤醒原语wakeup,将等待该事件的进程唤醒。wakeup执行的过程是:首先把被阻塞的进程从等待该事件的阻塞对列中移出,将其PCB中现行状态由阻塞改为就绪,然后再将该PCB插入到就绪对列中。
10.引起进程阻塞和唤醒的事件
(1)向系统请求共享资源失败
(2)等待某种操作完成
(3)新数据尚未达到
(4)等待新任务的到达

11.进程的挂起与激活
1)进程的挂起:当OS中出现了引起进程挂起的事件时,OS将利用挂起原语操作suspend将指定的进程或处于阻塞状态的进程挂起。suspend的执行过程是:首先检查被挂起的进程的状态,若处于活动就绪(阻塞)状态,就将其改为静止就绪(阻塞)状态。为了方便用户或父进程考查该进程的运行状况,把该进程的PCB复制到指定的内存区域,最后,若被挂起的的进程正在执行,带转向调度程序重新调度。
2)进程的激活:当OS中发生激活进程的事件时,OS将利用激活原语active,将指定的进程激活。类似于挂起的反过程。

以上内容包含个人的学习总结,如存在不合理的地方,欢迎大家指出,相互学习。

你可能感兴趣的:(操作系统OS)