• 要解决这些问题,用程序的概念已经不能描述
程序在内存中运行的状态,必须引人新的概念 --进程。
2.1.1前趋图
前 趋 图 (Precedence Graph) 是 一 个 有 向 无 循 环 图 , 记 为 DAG(Directed Acyclic Graph) ,用于描述进程之间执行的前 后关系。
图中每个结点可用于描述一条语句、一个程序段或进程 结点间的有向边则表示在两结点之间存在的偏序或前趋关系 “→”,→={( Pi , Pj ) |Pi must complete before Pj may start } 如果(Pi,Pj)∈→,可写成 Pi→Pj;,称Pi是Pj 的直接前趋,而Pj是Pi的直接后继。 在前趋图中,没有前趋的结点称为初始结点(Initial Node) ,没有后继的结点称为终止结点(Final Node) 。
parend; Si(i=1,2,3,...,n) 表 示 n 个 语 句 ( 程 序 段),这 n 个语句用 parbegin 和 parend 括起来 表示这n个语句是可以并发执行的。这是 Dijkstra提出的。
2.1.3程序的并发执行及其特征
假设有一个程序由 S0~Sn+1个语句,
其中 S1 ~ Sn 语句是并发 执行的,程序如下: S0;
parbegin S1;S2;S3;...;SN parend; Sn+1;
2.1.3程序的并发执行及其特征
程序并发执行时的特征
1、间断性(执行—暂停—执行)
2、失去了程序的封闭性 3、不可再现性(失去封闭性引起)
例如,有两个循环程序 A和B,它们共享一个变量 N。程序 A每执行一次时,都要做N∶=N+1操作;程序B每执行一次时, 都要执行Print(N)操作,然后再将N置成“0”。程序A和B以不 同的速度运行。 可能出现以下三种情形: