提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
🎃在讲解程序的并发执行与顺序执行的特征之前,我们先介绍用于描逑程序执行先后顺序的前趋图。
🐱🐉所谓前趋图(Precedence Graph),是指一个有向无循环图,可记DAG(Directed Acyclic Graph),它用于描逑进程之间执行的先后顺序图中的每个结点可用来表示一个进程或程序段,乃至一条语句,结点间的有向边则表示两个结点之间存在的偏序(Partia1 Order)或前趋关系(Precedence Relation)。
进程(或程序)之间的前趋关系可用“→”来表示,如果进程P,和P,存在着前趋关系,可表示为(P;, P)∈→,也可写成P一P;,表示在P,开始执行之前P,必须完成·此时称P是P,的直接前趋,而称P是P;的直接后继o
在前趋图中,把没有前趋的结点称为初始结点(Initia1 Node),把没有后继的结点称为终止结点(Final Node)。此外,每个结点还具有一个重量(Weight) ,用于表示该结点所含有的程序量或程序的执行时间。
一、程序顺序执行
通常,一个应用程序由若干个程序段组成,每一个程序段完成特定的功能,它们在执行时,都需要按照某种先后次序顺序执行,仅当前一程序段执行完后,才运行后一程序段。
例如,在进行计算时,应先运行输入程序,用于输入用户的程序和数据;然后运行计算程序,对所输入的数据进行计算;最后才是运行打印程序,打印计算结果。我们用结点(Node)代表各程序段的操作(在图2-1中用圆圈表示),其中I代表输入操作,c代表计算操作, Р为打印操作,用箭头指示操作的先后次序。
这样,上述的三个程序段间就存在着这样的前趋关系: I→C→P,,其执行的顺序可用前趋图2-2(a)描述。
程序顺序执行时的特征
🧶(1)由上所逑可以得知,在程序顺序执行时,具有这样三个特征:-1)顺序性:指处理机严格地按照程序所规定的顺序执行,即每一操作必须在下一个操作开始之前结束;
🛒(2)封闭性:指程序在封闭的环境下运行,即程序运行时独占全机资源,资源的状态(除初始状态外)只有本程序才能改变它,程序一旦开始执行,其执行结果不受外界因素影响;
👔(3 )可再现性:指只要程序执行时的环境和初始条件相同,当程序重复执行时,不论它是从头到尾不停顿地执行,还是“停停走走”地执行,都可获得相同的结果程序顺序执行时的这种特性,为程序员检测和校正程序的错误带来了很大的方便。
🦺(4)唯一对应性:程序与执行过程一一对应。
二、程序并发执行
🍔在引入了程序间的并发执行功能后,虽然提高了系统的吞吐量和资源利用率,但由于它们共享系统资源,以及它们为完成同一项任务而相互合作,致使在这些并发执行的程序之间必将形成相互制约的关系,由此会给程序并发执行带来新的特征。
(1)间断性(制约)
(2)失去封闭性多个程序并发执行,共享资源,但跟他一起执行的其他程序可能可能也在改变资源的状态
(3)不可再现性
🥙失去程序的封闭性和可再现性
若一个程序的执行可以改变另一个程序的变量,那么,后者的输出就可能有赖于各程序执行的相对速度,即失去了程序的封闭性特点。