进程的描述与控制(进程前的铺垫:前驱图,程序执行)【OS】(b)

前驱图和程序执行是学习进程的铺垫知识,在这里需要在逻辑上理清楚程序在运行的时候具体过程,我们才能够在学习进程的之后考虑如何如控制和处理进程的执行过程。

操作系统的特性之一是并发与共享,即在系统中(内存)同时存在几个相互独立的程序,这些程序在系统中既交叉地运行,又要共享系统中的资源,这就会引起一系列的问题,包括:对资源的竞争、运行程序 之间的通信、程序之间的合作与协同等。

前驱图

➢前趋图是一个有向无循环图(DAG),用于描述进程之间执行的前后关系。

结点:描述一个程序段或进程,或一条语句
有向边:结点之间的偏序或前序关系“→”
→={(Pi,Pj) Pi must complete before Pj may start}
若(Pi,Pj)→,记为Pi→Pj,则
Pi是Pj的直接前趋,Pj是Pi的直接后继

我们直接给出一个前驱图进行理解:
进程的描述与控制(进程前的铺垫:前驱图,程序执行)【OS】(b)

可以这样理解:顶点可以表示程序段,或者进程,或者语句。箭头就表示的是先后顺序,这里需要注意,只有前驱结点在执行完成之后,后继结点才能开始执行,在并发的时候需要用到,在之后控制程序运行的时候也需要用到
P1是初始结点,P9是终止结点。关系就是箭头

➢注意:前趋图中必须不存在循环
进程的描述与控制(进程前的铺垫:前驱图,程序执行)【OS】(b)
➢前趋关系:S2→S3, S3→S2,不可能满足,无法确定谁是前驱,无法确定谁先执行。

程序的顺序执行

一个程序由若干个程序段组成,而这些程序段的执行必须是顺序的,这种程序执行的方式就称为程序的顺序执行。

例:讨论单道系统的工作情况
对用户作业的处理——
首先输入用户的程序和数据 Input
然后进行计算 Caculate
最后打印计算结果 Print

体现先后顺序执行的关系:
进程的描述与控制(进程前的铺垫:前驱图,程序执行)【OS】(b)

程序顺序执行时的特征:
➢顺序性
• 处理机的操作严格按照程序所规定的顺序执行。
➢封闭性
• 程序一旦开始执行,其计算结果不受外界因素的影响。
➢可再现性
• 程序执行的结果与它的执行速度无关(即与时间无关),而只与初始条件有关。

但是这样最明显的问题就是资源利用与不够高,也就不适用于操作系统的目标。

程序的并发执行

进程的描述与控制(进程前的铺垫:前驱图,程序执行)【OS】(b)
这样的并发执行,我们可以利用前驱图进行分析,那么多个程序就可以同时运行,提高效率。那么只要I2,C1执行完,C2就可以执行,通过前驱退分析出来所有。我们要保证每一个资源在一个时间内只能由一个程序访问,这样的情况下,就可能会出现I3,C2,P1同时进行的情况,极大的提高资源利用率。

程序并发执行的特点:

(1) 间断性

在多道程序设计的环境下,程序的并发执行,以及为完成一项任 务而相互合作,这些程序之间要共享系统的资源,形成了相互制约的关系。 相互制约导致并发程序具有“执行—暂停—执行”这种间断性的活动规律。
我们进行理解:多个程序可能要用到同一种资源,当一个程序执行一段时间之后,所要使用的资源被占用的时候,就必须暂停等待资源,等到资源被释放的时候然后继续执行,所以就有间断性的体现,也就说我们所说过的异步性。

(2) 失去封闭性

程序在并发执行时,系统的资源状态在访问的过程中由多道程序来改变,程序运行失去封闭性。程序的运行受到其他程序的影响。

(3) 不可再现性

程序在并发执行时,多次运行初始条件相同的同一程序会得出不同的运行结果。

理解前驱图和知道了程序的顺序执行和并发执行特点,我们才能在之后的学习中去思考如何控制程序的执行顺序,为学习进程打下基础。