操作系统)(进程3)

xiaoxiao2021-02-28  106

上一节,我们进程的基本知识有了大致的了解,接下来,我们将对进程的创建,进程的终结,进程的阻塞和唤醒,挂起和激活进行深入了解。

一个进程可以创建另一个进程,创建的进程称为父进程,被创建的进程称为子进程,子进程也可以创建孙进程,这样就渐渐形成了进程组,子进程被创建了以后,可以继承父进程的所有资源,当子进程撤销的时候,将从父进程那里获取的资源归还给父进程,父进程撤销时,所有的子进程也会被撤销。为了形象的描述进程间的这种关系引入了进程图,就是用于描述进程间关系的有向树,每一个结点代表一个进程。

接下来我们说明一下什么事件会引起创建进程:

1)用户登入 

2)作业调度

3)提供服务

以上三种都是系统内核为用户创建一个新进程

第四种是用户进程自己创建新进程以便新进程同创建者进程并发运行的方式完成特定任务。

4)应用请求

介绍完进程创建的起因,接下来介绍进程创建的过程。

1)申请空白的PCB,这个过程就是为新进程获取唯一的数字标识符,并从PCB集合中获取一个空白PCB

2)为新进程分配所需的资源,包括各种物理资源和逻辑资源。这些资源可以从操作系统或者父进程那里获取。

3)初始化进程控制块1初始化标识信息,将系统分配的标识符和父进程的标识符填入新的pcb 2初始化处理机的状态信息,是程序计数器指向程序的入口地址,使栈指针指向栈顶 3.初始化处理机控制信息,将进程的状态设置为就绪状态或者静止就绪状态。对于优先级,通常是设置为最低优先级,除非用户显示方式提出高优先级的要求。

4)如果进程就绪队列能够接纳新进程,便将进程插入就绪队列。

引起终止进程的事件:

1)正常结束

2)异常结束:越界错误,保护错,非法指令,特权指令错,运行超时,等待超时,算术错,I/O故障

3)外界干扰:操作员或者操作系统干扰,父进程请求,父进程终止

进程的终止过程:

1)根据被终止的标识符,从PCB集合中检索出改进程的PCB,从中读取进程的状态。

2)若被终止的进程正处于执行状态,应立即终止该进程,并置调度标志为真,用于指示该进程被终止以后应重新进行调度。

3)若改进程还有子进程,应该将其子进程也都予以终止,以防他们成为不可控的进程。

4)将被终止进程所拥有的全部资源或者归还给父进程,或者归还给系统。

5)将被终止的进程PCB从所在的列表移除,等待其他程序来搜集信息。

有以下事件会引起进程阻塞或者唤醒:

1)向系统请求共享资源失败

2)等待某种操作的完成

3)新数据尚未到达

4)等待新任务的到达

进程阻塞过程

正在执行的进程,如果发生了上诉某事件,进程便通过调用阻塞原语block将自己阻塞,可见,阻塞是进程自身的一种主动行为。进入block过程后,由于该进程还处于执行的状态,所以应先立即停止执行,把进程控制块中的现行状态由执行改为阻塞,并将PCB插入阻塞队列。如果系统中设置了因不同事件而阻塞的多个多个阻塞队列,则应将本进程插入到具有相同事件的阻塞队列。最后,转调度程序进行重新调度,将处理机分配给另一就绪进程,并进行切换,亦即,保留被阻塞进程的处理机状态,按新进程的PCB中的处理机状态设置CPU的环境。

进程唤醒过程

当被阻塞进程所期待的事件发生时,比如他所启动的I/O操作已完成,或其所期待数据已经到达,则有关进程(比如提供数据的进程)调用唤醒原语wakeup,将等待该事件的进程唤醒。wakeup执行过程是首先把阻塞的进程从等待该事件的阻塞队列中移除,将其PCB中执行状态由阻塞改为就绪,然后再将该PCB插入到就绪队列中去。

进程的挂起

当系统中出现了引起进程挂起的事件时,OS将利用挂起原语suspend将指定进程或处于阻塞状态的进程挂起,suspend的执行过程是:首先检查被挂起进程的状态,若处于活动就绪状态,便将其改为静止状态;对于活动阻塞状态的进程,则将之改为静止阻塞;为了方便用户或者父进程考察该进程的运行情况,而把该进程的PCB复制到某指定的内存区域;最后若被挂起的进程正在执行,则转向调度程序重新调度。

进程的激活过程

当系统中发生激活进程的事件时,OS将利用激活原语active,将指定进程激活,激活原语先将进程从外存调入内存,检查该进程的现行状态,若是静止就绪,便将之改为活动就绪;若为静止阻塞,便将之改为活动阻塞。假如采用的是抢占调度策略,则每当有静止就绪进程被激活而插入就绪队列事务,便检查是否要进行重新调度,及由调度程序将被激活的进程与当前进程的两者的优先级比较,如果激活进程的优先级低,就不必重新调度,否则,立即剥夺当前进程的运行,把处理机分配给被激活的进程。

转载请注明原文地址: https://www.6miu.com/read-22213.html

最新回复(0)