第二章进程管理讲解学习

上传人:yuzo****123 文档编号:137411470 上传时间:2020-07-08 格式:PPT 页数:232 大小:1.07MB
返回 下载 相关 举报
第二章进程管理讲解学习_第1页
第1页 / 共232页
第二章进程管理讲解学习_第2页
第2页 / 共232页
第二章进程管理讲解学习_第3页
第3页 / 共232页
第二章进程管理讲解学习_第4页
第4页 / 共232页
第二章进程管理讲解学习_第5页
第5页 / 共232页
点击查看更多>>
资源描述

《第二章进程管理讲解学习》由会员分享,可在线阅读,更多相关《第二章进程管理讲解学习(232页珍藏版)》请在金锄头文库上搜索。

1、第二章进 程 管 理,2.1进程的基本概念 2.2进程控制 2.3进程同步 2.4经典进程的同步问题 2.5 进程通信 2.6线程,2.1进程的基本概念,2.1.1程序的顺序执行及其特征 1. 程序的顺序执行 通常可以把一个应用程序分成若干个程序段,在各程序段之间,必须按照某种先后次序顺序执行,仅当前一操作(程序段)执行完后,才能执行后继操作。例如,在进行计算时,总须先输入用户的程序和数据,然后进行计算,最后才能打印计算结果。这里,我们用结点(Node)代表各程序段的操作(在图2-1中用圆圈表示),其中,I代表输入操作,C代表计算操作,P为打印操作;另外,用箭头指示操作的先后次序。这样,上述的

2、三个程序段的执行顺序可示于图2-1(a)中。对一个程序段中的多条语句来说,也有一个执行顺序问题,例如对于下述三条语句的程序段:,S1: a:=x+y; S2: b:=a-5; S3: c:=b+1;,其中,语句S2必须在语句S1之后(即a被赋值)才能执行;同样,语句S3也只能在b被赋值后才能执行。因此,这三条语句应按图2-1(b)所示的顺序执行。,图 2-1程序的顺序执行,2.1.2前趋图 前趋图(Precedence Graph)是一个有向无循环图,记为DAG(Directed Acyclic Graph),用于描述进程之间执行的前后关系。图中的每个结点可用于描述一个程序段或进程,乃至一条语

3、句;结点间的有向边则用于表示两个结点之间存在的偏序(Partial Order,亦称偏序关系)或前趋关系(Precedence Relation)“”。,=(Pi,Pj)|Pi must complete before Pj may start,如果(Pi,Pj),可写成PiPj,称Pi是Pj的直接前趋,而称Pj是Pi的直接后继。在前趋图中,把没有前趋的结点称为初始结点(Initial Node),把没有后继的结点称为终止结点(Final Node)。此外,每个结点还具有一个重量(Weight),用于表示该结点所含有的程序量或结点的执行时间。在图2-1(a)和2-1(b)中分别存在着这样的前趋

4、关系:,IiCiPi,S1S2S3,和,对于图2-2(a)所示的前趋图,存在下述前趋关系:,P1P2,P1P3,P1P4,P2P5,P3P5,P4P6,P4P7,P5P8,P6P8,P7P9,P8P9 或表示为: P=P1,P2,P3,P4,P5,P6,P7,P8,P9 =(P1,P2),(P1,P3),(P1,P4),(P2,P5),(P3,P5),(P4,P6),(P4,P7),(P5,P8),(P6,P8),(P7,P9),(P8,P9),应当注意,前趋图中必须不存在循环,但在图2-2(b)中却有着下述的前趋关系:,S2S3,S3S2,图 2-2前趋图,2.1.3程序的并发执行及其特征

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

6、执行时的前趋图,在该例中存在下述前趋关系:,IiCi,IiIi+1,CiPi,CiCi+1,PiPi+1,而Ii+1和Ci及Pi-1是重迭的,亦即在Pi-1和Ci以及Ii+1之间,可以并发执行。对于具有下述四条语句的程序段: S1: a:=x+2 S2: b:=y+4 S3: c:=a+b S4: d:=c+b,图 2-4四条语句的前趋关系,2程序并发执行时的特征 1) 间断性 程序在并发执行时,由于它们共享系统资源,以及为完成同一项任务而相互合作,致使在这些并发执行的程序之间,形成了相互制约的关系。例如,图2-3 中的I、C和P是三个相互合作的程序,当计算程序完成Ci1的计算后,如果输入程序

7、I尚未完成Ii的处理,则计算程序就无法进行Ci的处理,致使计算程序必须暂停运行。又如,当打印程序完成Pi的打印后,若计算程序尚未完成Ci1的计算,则打印程序就无法对Ci1的计算结果进行打印。一旦使程序暂停的因素消失后(如Ii已处理完成),计算程序便可恢复执行对Ci的处理。简而言之,相互制约将导致并发程序具有“执行暂停执行”这种间断性的活动规律。,2) 失去封闭性 程序在并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序来改变,致使程序的运行失去了封闭性。这样,某程序在执行时,必然会受到其它程序的影响。例如,当处理机这一资源已被某个程序占有时,另一程序必须等待。,3) 不

8、可再现性 程序在并发执行时,由于失去了封闭性,也将导致其再失去可再现性。例如,有两个循环程序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。 上

9、述情况说明,程序在并发执行时,由于失去了封闭性,其计算结果已与并发程序的执行速度有关,从而使程序的执行失去了可再现性,亦即,程序经过多次执行后,虽然它们执行时的环境和初始条件相同,但得到的结果却各不相同。,2.1.4进程的特征与状态 1. 进程的特征和定义 在多道程序环境下,程序的执行属于并发执行,此时它们将失去其封闭性,并具有间断性及不可再现性的特征。这决定了通常的程序是不能参与并发执行的,因为程序执行的结果是不可再现的。这样,程序的运行也就失去了意义。为使程序能并发执行,且为了对并发执行的程序加以描述和控制,人们引入了“进程”的概念。为了能较深刻地了解什么是进程,我们将先对进程的特征加以描

10、述。,1) 结构特征 通常的程序是不能并发执行的。为使程序(含数据)能独立运行,应为之配置一进程控制块,即PCB(Process Control Block);而由程序段、相关的数据段和PCB三部分便构成了进程实体。在早期的UNIX版本中,把这三部分总称为“进程映像”。值得指出的是,在许多情况下所说的进程,实际上是指进程实体,例如,所谓创建进程,实质上是创建进程实体中的PCB;而撤消进程,实质上是撤消进程的PCB,本教材中也是如此。,2) 动态性 进程的实质是进程实体的一次执行过程,因此,动态性是进程的最基本的特征。动态性还表现在:“它由创建而产生,由调度而执行,由撤消而消亡”。可见,进程实体

11、有一定的生命期,而程序则只是一组有序指令的集合,并存放于某种介质上,其本身并不具有运动的含义,因而是静态的。,3) 并发性 这是指多个进程实体同存于内存中,且能在一段时间内同时运行。并发性是进程的重要特征,同时也成为OS的重要特征。引入进程的目的也正是为了使其进程实体能和其它进程实体并发执行;而程序(没有建立PCB)是不能并发执行的。 4) 独立性 在传统的OS中,独立性是指进程实体是一个能独立运行、独立分配资源和独立接受调度的基本单位。凡未建立PCB的程序都不能作为一个独立的单位参与运行。,5) 异步性 这是指进程按各自独立的、 不可预知的速度向前推进,或说进程实体按异步方式运行。 现在我们

12、再来讨论进程的定义。曾有许多人从不同的角度对进程下过定义,其中较典型的进程定义有: (1) 进程是程序的一次执行。 (2) 进程是一个程序及其数据在处理机上顺序执行时所发生的活动。 (3) 进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。,2. 进程的三种基本状态 进程执行时的间断性决定了进程可能具有多种状态。事实上,运行中的进程可能具有以下三种基本状态。 1) 就绪(Ready)状态 当进程已分配到除CPU以外的所有必要资源后,只要再获得CPU,便可立即执行,进程这时的状态称为就绪状态。在一个系统中处于就绪状态的进程可能有多个,通常将它们排成一个队列,称为就绪

13、队列。,2) 执行状态 进程已获得CPU,其程序正在执行。在单处理机系统中,只有一个进程处于执行状态; 在多处理机系统中,则有多个进程处于执行状态。 3) 阻塞状态 正在执行的进程由于发生某事件而暂时无法继续执行时,便放弃处理机而处于暂停状态,亦即进程的执行受到阻塞,把这种暂停状态称为阻塞状态,有时也称为等待状态或封锁状态。致使进程阻塞的典型事件有:请求I/O,申请缓冲空间等。通常将这种处于阻塞状态的进程也排成一个队列。有的系统则根据阻塞原因的不同而把处于阻塞状态的进程排成多个队列。,图2-5 进程的三种基本状态及其转换,3. 挂起状态 1) 引入挂起状态的原因 在不少系统中进程只有上述三种状

14、态,但在另一些系统中,又增加了一些新状态,最重要的是挂起状态。引入挂起状态的原因有: (1) 终端用户的请求。当终端用户在自己的程序运行期间发现有可疑问题时,希望暂时使自己的程序静止下来。亦即,使正在执行的进程暂停执行;若此时用户进程正处于就绪状态而未执行,则该进程暂不接受调度,以便用户研究其执行情况或对程序进行修改。我们把这种静止状态称为挂起状态。,(2) 父进程请求。有时父进程希望挂起自己的某个子进程,以便考查和修改该子进程,或者协调各子进程间的活动。 (3) 负荷调节的需要。当实时系统中的工作负荷较重,已可能影响到对实时任务的控制时,可由系统把一些不重要的进程挂起,以保证系统能正常运行。

15、 (4) 操作系统的需要。操作系统有时希望挂起某些进程,以便检查运行中的资源使用情况或进行记账。,2) 进程状态的转换 在引入挂起状态后,又将增加从挂起状态(又称为静止状态)到非挂起状态(又称为活动状态)的转换;或者相反。可有以下几种情况: (1) 活动就绪静止就绪。当进程处于未被挂起的就绪状态时,称此为活动就绪状态,表示为Readya。当用挂起原语Suspend将该进程挂起后,该进程便转变为静止就绪状态,表示为Readys,处于Readys状态的进程不再被调度执行。,图 2-6具有挂起状态的进程状态图,(2) 活动阻塞静止阻塞。当进程处于未被挂起的阻塞状态时,称它是处于活动阻塞状态,表示为B

16、lockeda。当用Suspend原语将它挂起后,进程便转变为静止阻塞状态,表示为Blockeds。处于该状态的进程在其所期待的事件出现后,将从静止阻塞变为静止就绪。 (3) 静止就绪活动就绪。处于Readys状态的进程,若用激活原语Active激活后,该进程将转变为Readya状态。 (4) 静止阻塞活动阻塞。处于Blockeds状态的进程,若用激活原语Active激活后,该进程将转变为Blockeda状态。图2-6示出了具有挂起状态的进程状态图。,4创建状态和终止状态 1) 创建状态 创建一个进程一般要通过两个步骤:首先,为一个新进程创建PCB,并填写必要的管理信息;其次,把该进程转入就绪状态并插入就绪队列之中。当一个新进程被创建时,系统已为其分配了PCB,填写了进程标识等信息,但由于该进程所必需的资源或其它信息,如主存资源尚未分配等,一般而言,此时的进程已拥有了自己的PCB,但进程自身还未进入主存,即创建工作尚未完成,进程还不能被调度运行,其所处的状态就是创建状态。,引入创建状态,是为了保证进程的调度必须在创建工作完成后进行,以确保对进程控制块操作的完整性。同时,创建状态的引入,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号