前趋图是一个有向无循环图,用于描述进程之间执行的前后关系。每个节点可以代表一段程序,一个进程或一条语句。无环是为了防止程序出现死锁。比如下图:
其前趋关系有两种表示:
{p1->p2,p1->p3,p1->p4,p2->p5,p3->p5,p4->p6,p4->p7,p5->p8,p6->p8,p7->p9,p8->p9} 或者
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)}
这里的p1称为起始终点,p9称为终止终点,这个图中的边上没有数据,如果有数据,这些数据叫做重量。重量有不同的含义,可以代表程序运行的时间,程序的大小等等。
前趋图必须不存在循环。假如s1->s2,s2->s1,互为前提,就无法表示进程之间的前后关系。检验是否存在环,可以使用拓扑排序。
程序的顺序执行
一个程序又若干个程序段组成,程序段的执行是顺序的,那么程序的执行方式就是顺序执行。比如单道系统的工作,输入数据,金彗星加和,输出计算结果,这就是顺序执行的操作。
程序顺序执行有三个特征:顺序性、封闭性、可在现性。封闭性是指程序一开始执行,计算结果是不会受到外界影响的。身为操作者也无法直接控制内存cpu去改变结果。可再现性是指计算机可以再现本该出现的结果,程序执行的结果只与初始条件有关。
程序的并发执行
现在系统有n个作业,每个作业都有输入,计算,输出这三步,站在单个作业的角度上看,它仍然是顺序执行的。但是站在多个作业的角度看,每个作业不同的步骤是可以同时执行的。
程序并发执行有三个特征:间断性、失去封闭性、不可再现性。间断性是指程序对cpu进行竞争,不会一个进程执行完毕再执行下个进程,每个进程都是间断着完成的。失去封闭性是指一个程序的执行因为其他程序的资源竞争,导致受到其他进程的影响。不可再现性是指这时程序的结果不再唯一,无法直接由条件确定结果。