unix进程状态转换

3.7 UNIX SVR4 进程管理

UNIX 系统V 使用了一种简单但是功能强大的进程机制,且对用户可见。UNIX 采用图3.15b 中的模型,其中大部分操作系统在用户进程环境中执行。UNIX 使用两类进程,即系统进程和用户进程。系统进程在内核态下运行,执行操作系统代码以实现管理功能和内部处理,如内存空间的分配和进程交换;用户进程在用户态下运行以执行用户程序和实用程序,在内核态下运行以执行属于内核的指令。当产生异常(错误)或发生中断或用户进程发出系统调用时,用户进程可进入内核态。

3.7.1 进程状态

UNIX 操作系统中共有9 种进程状态,如表3.9 所示。图3.17(基于[BACH86]中的图)是相应的状态转换图,它与图3.9b 类似,有两个UNIX 睡眠状态对应于图3.9b 中的两个阻塞状态,其区别可简单概括如下:

UNIX 采用两个运行态表示进程在用户态下执行还是在内核态下执行。

UNIX 区分内存中就绪态和被抢占态这两个状态。从本质上看,它们是同一个状态,如图中它们之间的虚线所示,之所以区分这两个状态是为了强调进入被抢占状态的方式。当一个进程正在内核态下运行时(系统调用、时钟中断或I/O 中断的结果),内核已经完成了其任务并准备把控制权返回给用户程序时,就可能会出现抢占的时机。这时,内核可能决定抢占当前进程,支持另一个已经就绪并具有较高优先级的进程。在这种情况下,当前进程转换到被抢占态,但是为了分派处理,处于被抢占态的进程和处于内存中就绪态的进程构成了一条队列。

unix进程状态转换_第1张图片 
图3.17 UNIX 进程状态转换图

只有当进程准备从内核态移到用户态时才可能发生抢占,进程在内核态下运行时是不会被抢占的,这使得UNIX 不适用于实时处理。有关实时处理需求的讨论请参见第10 章。

UNIX 中有两个独特的进程。进程0 是一个特殊的进程,是在系统启动时创建的。实际上,这是预定义的一个数据结构,在启动时刻被加载,是交换进程。此外,进程0 产生进程1,称做初始进程,进程1 是系统中的所有其他进程的祖先。当新的交互用户登录到系统时,由进程1为该用户创建一个用户进程。随后,用户进程可以创建子进程,从而构成一棵分支树,因此,任何应用程序都是由一组相关进程组成的。

表3.9 UNIX 进程状态

unix进程状态转换_第2张图片 

你可能感兴趣的:(Linux系统管理)