操作系统(2.3)--进程的描述与控制

目录

三、进程控制

1.操作系统内核

2.进程的创建

2.1进程的层次结构 

2.2进程图

2.3引起创建进程的事件

2.4 进程的创建

3.进程的控制 

3.1引起进程终止的事件

3.2进程的终止过程

4.进程的阻塞与唤醒 

4.1引起进程阻塞和唤醒的事件

4.2 进程阻塞过程(阻塞原语block)

4.3 进程唤醒过程(唤醒原语wakeup)

5.进程的挂起与激活

5.1进程的挂起

5.2进程的激活过程

6.附 


三、进程控制

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

进程控制一般是由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引起进程阻塞和唤醒的事件

有下述几类事件会引起进程阻塞或被唤醒:

  1. 向系统请求共享资源失败
  2. 等待某种操作完成
  3. 新数据尚未到达.
  4. 等待新任务的到达

4.2 进程阻塞过程(阻塞原语block)

调用阻塞原语block将自己阻塞:

  • (1)若运行,停止;
  • (2)修改进程控制块中的状态:从执行到阻塞;
  • (3)插入阻塞队列;
  • (4)调度程序进行进程切换,保留被阻塞进程的处理机.状态;

4.3 进程唤醒过程(唤醒原语wakeup)

调用唤醒原语wakeup,将等待该事件的进程唤醒:
(1)从阻塞队列中移出;
(2)修改进程控制块中的状态:从阻塞到就绪;
(3)插入到就绪队列;

5.进程的挂起与激活

5.1进程的挂起

当系统中出现了引起进程挂起的事件时,OS将利用挂起原语suspend将指定进程或处于阻塞状态的进程挂起。

suspend 的执行过程是:

首先检查被挂起进程的状态,若处于活动就绪状态,便将其改为静止就绪:对于活动阻塞状态的进程,则将之改为静止阻塞:为了方便用户或父进程考查该进程的运行情况,而把该进程的PCB复制到某指定的内存区域;

最后,若被挂起的进程正在执行,则转向调度程序重新调度。

5.2进程的激活过程

当系统中发生激活进程的事件时,OS 将利用激活原语active,将指定进程激活。

激活原语先将进程从外存调入内存,检查该进程的现行状态,若是静止就绪,便将之改为活动就绪;若为静止阻塞,便将之改为活动阻塞

假如采用的是抢占调度策略,则每当有静止就绪进程被激活而插入就绪队列时,便应检查是否要进行重新调度,即由调度程序将被激活的进程与当前进程两者的优先级进行比较,如果被激活进程的优先级低,就不必重新调度;否则,立即剥夺当前进程的运行,把处理机分配给刚刚被激活的进程。 

6.附 

创建原语的流程图
撤销原语流程图

猜你喜欢

转载自blog.csdn.net/weixin_53197693/article/details/129581510