进程控制
标签: 操作系统
学习人数: 5041

进程控制是进程管理中最基本的功能,主要包括创建新进程、终止已完成的进程、将因发生异常情况而无法继续运行的进程置于阻塞状态、负责进程运行中的状态转换等功能。

1.支撑功能

该功能是提供给OS其它众多模块所需要的一些基本功能,以便支撑这些模块工作。其中三种最基本的支持功能是:中断处理、时钟管理和原语操作。

所谓原子操作,是指一个操作中的所有动作要么全做,要么全不做。换言之,它是一个不可分割的基本单位,因此,在执行过程中不允许被中断。原子操作在管态下执行,常驻内存。

2.进程的创建

允许一个进程创建另一个进程,通常把创建进程的进程称为父进程,而把被创建的进程称为子进程。子进程可继续创建更多的孙进程,由此便形成了一个进程的层次结构。当子进程被撤销时,应将其从父进程那里获得的资源归还给父进程。此外,在撤销父进程时,必须同时撤销其所有的子进程。

(1)申请空白 PCB,为新进程申请获得唯一的数字标识符,并从 PCB 集合中索取一个空白PCB。

(2)为新进程分配其运行所需的资源,包括各种物理和逻辑资源,如内存、文件、I/O 设备和CPU时间等。

(3)初始化进程控制块(PCB)。 PCB的初始化主要包括初始化标志信息、初始化处理机状态信息和初始化处理机控制信息,以及设置进程的优先级等。

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

 

3.进程的终止

①正常结束:表示进程的任务已完成,准备退出运行。在任何系统中,都应有一个用于表示进程已经运行完成的指示。

②异常结束:是指进程在运行时发生了某种异常事件,使程序无法继续运行。如存储区越界错、保护错、非法指令、特权指令错、运行超时、算术运算错、I/O故障等。

③外界干预:指进程应外界的请求而终止运行。如操作员或操作系统干预、父进程请求和因父进程终止等。

如果系统中发生了要求终止进程的某事件,OS便调用进程终止原语,按下述过程去终止指定的进程:

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

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

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

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

(5)将被终止进程(PCB)从所在队列(或链表)中移出,等待其它程序来搜集信息。

 

3.进程的阻塞与唤醒

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

(2) 等待某种操作的完成。

(3) 新数据尚未到达。

(4) 等待新任务的到达。

正在执行的进程,如果发生了上述某事件,进程便通过调用阻塞原语 block 将自己阻塞。 阻塞是进程自身的一种主动行为。

①以应先立即停止运行。

②保存该进程的CPU现场以便之后可以重新调用该进程并从中断点开始执行。

③把进程控制块中的现行状态由运行改为阻塞,并将 PCB插入阻塞队列。

④转调度程序进行重新调度,将处理机分配给另一就绪进程,并进行切换。

当被阻塞进程所期待的事件发生时,比如它所启动的 I/O操作已完成,或其所期待的数据已经到达,则由有关进程(比如提供数据的进程)调用唤醒原语 wakeup,将等待该事件的进程唤醒。

①首先把被阻塞的进程从等待该事件的阻塞队列中移出。

②将其PCB中的现行状态由阻塞改为就绪。

③将该PCB插入到就绪队列中。

 

4.进程切换

进程切换是指处理器从一个进程的运行转到另一个进程的运行,这个过程中,进程的运行环境产生了实质性的变化。

进程切换的过程如下:

(1)保存处理机上下文,包括程序计数器和其他寄存器。

(2)更新PCB信息。

(3)把进程的PCB移入相应的队列,如就绪、在某事件阻塞等队列。

(4)选择另一个进程执行,并更新其PCB。

(5)更新内存管理的数据结构。

(6)恢复处理机上下文。

切换与调度的区别,调度是决定将系统资源分配给哪个进程,进程切换是实际分配系统资源。另外需要注意进程切换一定会产生中断,进行处理器模式切换,即从用户态进入内核态,之后又回到用户态;但处理器模式切换不一定产生进程切换,如系统调用同样会从用户态进入内核态,之后回到用户态,但在逻辑上,仍然是同一进程占用处理器执行。



课后作业


登录后发布评论

1 条评论
jhfjy
2021年4月4日 15:38

加油