第二章 进程管理 2.1 进程基本概念

来源:互联网 发布:云霄网络 编辑:程序博客网 时间:2024/05/20 07:16

传统的操作系统中,程序并不能独立运行,作为资源分配和独立运行的基本单位都是进程。操作系统所具有的四大特征也都是基于进程而形成的,并可从进程的观点来研究操作系统。

 

2.1 进程的基本概念

在未配置OS的系统中,程序的执行方式是顺序执行,即必须在一个程序执行完后,才允许另一个程序执行;在多道程序环境下,则允许多个程序并发执行。

 

2.1.1 程序的顺序执行及其特征

1. 程序的顺序执行

通常可以把一个应用程序分成若干个程序段,在各程序段之间,必须按照某种先后次序顺序执行,仅当前一操作(程序段)执行完后,才能执行后继操作。

2. 程序顺序执行时的特征

(1) 顺序性 (2) 封闭性 (3) 可再现性

 

2.1.2 前趋图

前趋图(Precedence Graph)是一个有向无循环图,记为DAG(Directed Acyclic Graph),用于描述进程之间执行的前后关系。图中的每个结点可用于描述一个程序段或进程,乃至一条语句;结点间的有向边则用于表示两个结点之间存在的偏序(Partial Order,亦称偏序关系)或前趋关系(Precedence Relation)“→”在前趋图中,把没有前趋的结点称为初始结点(Initial Node),把没有后继的结点称为终止结点(Final Node)。此外,每个结点还具有一个重量(Weight),用于表示该结点所含有的程序量或结点的执行时间。应当注意,前趋图中必须不存在循环.

 

2.1.3 程序的并发执行及其特征

1.程序的并发执行

在图2-1中的输入程序、计算程序和打印程序三者之间,存在着Ii→Ci→Pi这样的前趋关系,以至对一个作业的输入、计算和打印三个操作,必须顺序执行,但并不存在Pi→Ii+1的关系,因而在对一批程序进行处理时,可使它们并发执行。例如,输入程序在输入第一个程序后,在计算程序对该程序进行计算的同时,可由输入程序再输入第二个程序,从而使第一个程序的计算操作可与第二个程序的输入操作并发执行。一般来说,输入程序在输入第i+1个程序时,计算程序可能正在对第i个程序进行计算,而打印程序正在打印第i-1 个程序的计算结果。

 

2.程序并发执行时的特征

程序的并发执行,虽然提高了系统吞吐量,但也产生了下述一些与程序顺序执行时不同的特征。

1)间断性

相互制约将导致并发程序具有“执行—暂停—执行”这种间断性的活动规律。

2)失去封闭性

程序在并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序来改变,致使程序的运行失去了封闭性。这样,某程序在执行时,必然会受到其它程序的影响。例如,当处理机这一资源已被某个程序占有时,另一程序必须等待。

3)不可再现性

程序在并发执行时,由于失去了封闭性,也将导致其再失去可再现性。例如,有两个循环程序A 和B,它们共享一个变量N。程序A 每执行一次时,都要做N:=N+1 操作;程序B每执行一次时,都要执行Print(N)操作,然后再将N 置成“0”。程序A和B以不同的速度运行。这样,可能出现下述三种情况(假定某时刻变量N 的值为n)。

(1) N:=N+1 在Print(N)和N:=0之前,此时得到的N值分别为n+1,n+1,0。

(2) N:=N+1 在Print(N)和N:=0之后,此时得到的N值分别为n,0,1。

(3) N:=N+1 在Print(N)和N:=0之间,此时得到的N值分别为n,n+1,0。

 

2.1.4 进程的特征与状态

1. 进程的特征和定义

1) 结构特征

通常的程序是不能并发执行的。为使程序(含数据)能独立运行,应为之配置一进程控制块,即PCB(ProcessControl Block);而由程序段、相关的数据段和PCB三部分便构成了进程实体。在早期的UNIX 版本中,把这三部分总称为“进程映像”。值得指出的是,在许多情况下所说的进程,实际上是指进程实体,例如,所谓创建进程,实质上是创建进程实体中的PCB;而撤消进程,实质上是撤消进程的PCB

2) 动态性

进程的实质是进程实体的一次执行过程,因此,动态性是进程的最基本的特征。动态性还表现在:“它由创建而产生,由调度而执行,由撤消而消亡”。可见,进程实体有一定的生命期,而程序则只是一组有序指令的集合,并存放于某种介质上,其本身并不具有运动的含义,因而是静态的。

3) 并发性

这是指多个进程实体同存于内存中,且能在一段时间内同时运行。并发性是进程的重要特征,同时也成为OS的重要特征。引入进程的目的也正是为了使其进程实体能和其它进程实体并发执行;而程序(没有建立PCB)是不能并发执行的

4) 独立性

在传统的OS中,独立性是指进程实体是一个能独立运行、独立分配资源和独立接受调度的基本单位。凡未建立PCB的程序都不能作为一个独立的单位参与运行

5) 异步性

这是指进程按各自独立的、不可预知的速度向前推进,或说进程实体按异步方式运行。

 

现在我们再来讨论进程的定义,其中较典型的进程定义有:

(1) 进程是程序的一次执行。

(2) 进程是一个程序及其数据在处理机上顺序执行时所发生的活动。

(3) 进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。

在引入了进程实体的概念后,我们可以把传统OS 中的进程定义为:“进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位”。

2. 进程的三种基本状态

进程执行时的间断性决定了进程可能具有多种状态。事实上,运行中的进程可能具有

以下三种基本状态。

1) 就绪(Ready)状态

当进程已分配到除CPU以外的所有必要资源后,只要再获得CPU,便可立即执行,进程这时的状态称为就绪状态。在一个系统中处于就绪状态的进程可能有多个,通常将它们排成一个队列,称为就绪队列

2)执行状态

进程已获得CPU,其程序正在执行。在单处理机系统中,只有一个进程处于执行状态;在多处理机系统中,则有多个进程处于执行状态。

3)阻塞状态

正在执行的进程由于发生某事件而暂时无法继续执行时,便放弃处理机而处于暂停状态,亦即进程的执行受到阻塞,把这种暂停状态称为阻塞状态,有时也称为等待状态或封锁状态。致使进程阻塞的典型事件有:请求I/O,申请缓冲空间等。

 


3. 挂起状态

1) 引入挂起状态的原因

在不少系统中进程只有上述三种状态,但在另一些系统中,又增加了一些新状态,最

重要的是挂起状态。引入挂起状态的原因有:

(1) 终端用户的请求。当终端用户在自己的程序运行期间发现有可疑问题时,希望暂时

使自己的程序静止下来。亦即,使正在执行的进程暂停执行;若此时用户进程正处于就绪

状态而未执行,则该进程暂不接受调度,以便用户研究其执行情况或对程序进行修改。我

们把这种静止状态称为挂起状态。

(2) 父进程请求。有时父进程希望挂起自己的某个子进程,以便考查和修改该子进程,

或者协调各子进程间的活动。

(3) 负荷调节的需要。当实时系统中的工作负荷较重,已可能影响到对实时任务的控制

时,可由系统把一些不重要的进程挂起,以保证系统能正常运行。

(4) 操作系统的需要。操作系统有时希望挂起某些进程,以便检查运行中的资源使用情

况或进行记账。

 

2) 进程状态的转换

在引入挂起状态后,又将增加从挂起状态(又称为静止状态)到非挂起状态(又称为活动

状态)的转换;或者相反。可有以下几种情况:

(1) 活动就绪→静止就绪。

(2) 活动阻塞→静止阻塞。

(3) 静止就绪→活动就绪。

(4) 静止阻塞→活动阻塞。

 


4.创建状态和终止状态

在目前实际的系统中,为了管理的需要,还存在着两种比较常见的进程状态,即创建状态和终止状态。

1) 创建状态

创建一个进程一般要通过两个步骤:首先,为一个新进程创建PCB,并填写必要的管理信息;其次,把该进程转入就绪状态并插入就绪队列之中。当一个新进程被创建时,系统已为其分配了PCB,填写了进程标识等信息,但由于该进程所必需的资源或其它信息,如主存资源尚未分配等,一般而言,此时的进程已拥有了自己的PCB,但进程自身还未进入主存,即创建工作尚未完成,进程还不能被调度运行,其所处的状态就是创建状态。

引入创建状态,是为了保证进程的调度必须在创建工作完成后进行,以确保对进程控制块操作的完整性。同时,创建状态的引入,也增加了管理的灵活性,操作系统可以根据系统性能或主存容量的限制,推迟创建状态进程的提交。对于处于创建状态的进程,获得了其所必需的资源,以及对其PCB初始化工作完成后,进程状态便可由创建状态转入就绪状态。

 

2) 终止状态

进程的终止也要通过两个步骤:首先等待操作系统进行善后处理,然后将其PCB清零,并将PCB 空间返还系统。当一个进程到达了自然结束点,或是出现了无法克服的错误,或是被操作系统所终结,或是被其他有终止权的进程所终结,它将进入终止状态。进入终止态的进程以后不能再执行,但在操作系统中依然保留一个记录,其中保存状态码和一些计时统计数据,供其它进程收集。一旦其它进程完成了对终止状态进程的信息提取之后,操作系统将删除该进程。

 


2.1.5 进程控制块

1.进程控制块的作用

为了描述和控制进程的运行,系统为每个进程定义了一个数据结构——进程控制块PCB(Process Control Block),它是进程实体的一部分,是操作系统中最重要的记录型数据结构。PCB 中记录了操作系统所需的、用于描述进程的当前情况以及控制进程运行的全部信息。进程控制块的作用是使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位,一个能与其它进程并发执行的进程。或者说,OS是根据PCB来对并发执行的进程进行控制和管理的。在进程的整个生命期中,系统总是通过PCB对进程进行控制的,亦即,系统是根据进程的PCB而不是任何别的什么而感知到该进程的存在的。所以说,PCB是进程存在的惟一标志。

当系统创建一个新进程时,就为它建立了一个PCB;进程结束时又回收其PCB,进程于是也随之消亡。PCB可以被操作系统中的多个模块读或修改,如被调度程序、资源分配程序、中断处理程序以及监督和分析程序等读或修改。因为PCB经常被系统访问,尤其是被运行频率很高的进程及分派程序访问,故PCB应常驻内存

 

2.进程控制块中的信息

在进程控制块中,主要包括下述四方面的信息。

1) 进程标识符

进程标识符用于惟一地标识一个进程。一个进程通常有两种标识符:

(1) 内部标识符。

(2) 外部标识符。

2) 处理机状态

处理机状态信息主要是由处理机的各种寄存器中的内容组成的。处理机在运行时,许多信息都放在寄存器中。当处理机被中断时,所有这些信息都必须保存在PCB 中,以便在该进程重新执行时,能从断点继续执行。:① 通用寄存器② 指令计数器③ 程序状态字PSW④用户栈指针

3) 进程调度信息

在 PCB中还存放一些与进程调度和进程对换有关的信息,包括:① 进程状态,指明进程的当前状态,作为进程调度和对换时的依据;②进程优先级,用于描述进程使用处理机的优先级别的一个整数,优先级高的进程应优先获得处理机;③ 进程调度所需的其它信息,它们与所采用的进程调度算法有关④事件,指进程由执行状态转变为阻塞状态所等待发生的事件,即阻塞原因。

4) 进程控制信息

 

3. 进程控制块的组织方式

目前常用的组织方式有以下两种。

1) 链接方式

这是把具有同一状态的PCB,用其中的链接字链接成一个队列。

2) 索引方式

系统根据所有进程的状态建立几张索引表。

 


原创粉丝点击