标签:image weight rar before 校正 表示 mamicode 输入 节点
前驱图是一个有向无循环图,记为DAG。用于这种图可以描述多个程序或进程之间的执行顺序关系。
前趋关系“→ ”的形式化描述:→ ={<Pi, Pj> | Pi must complete before Pj may start}
<Pi, Pj>∈→,可写成Pi→Pj,表示在Pj开始执行之前Pi必须完成。此时称 Pi 是 Pj 的直接前驱,而称 Pj 是 Pi 的直接后继。在前驱图中把没有前驱的结点称为初始结点(Initial Node),把没有后继的结点称为终止结点 (Final Node)。此外,每个结点还具有一个重量(Weight),用于表示该结点所含有的程序量或程序的执行时间。
下图举例一个具有9个节点的前驱图:
存在如下前驱关系:
P1→ p2,P1→ p3,P1→ p4,P2→ p5,P3→ p5,P4→ p6,P4→ p7,P5→ p8,P6→ p8,P7→ p9,P8→ p9
注意:前驱图中不能存在循环,否则必然会产生不可能实现的前驱关系
例如: 如下关系就不可能实现
S1: a:=x+y;
S2: b:=a-5;
S3: c:=b+1;
程序顺序执行的特性,为程序员检测和校正程序的错误带来很大方便。
在操作系统中引入了多道程序设计技术后,系统中的程序才能并发执行,但是并非所有的程序都能并发执行。
例如:输入、计算、打印三个程序对一批作业进行处理时,存在以下的前趋关系:
① Ii → Ci → Pi
② Ii → Ii+1
Ci → Ci+1
Pi → Pi+1
(1)对每道程序依然存在这样的关系Ii → Ci → Pi,这是由程序的内在逻辑关系决定
(2)对不同程序之间,存在 Ii → Ii+1,Ci → Ci+1,Pi → Pi+1 的关系,这是由于系统资源的竞争带来的顺序性,这种顺序性是系统资源的前趋关系,非程序逻辑关系。
(3)不同程序之间的 Ii+2,Ci+1,Pi 不存在前趋关系
定义:一组在逻辑上相互独立的程序或程序段在执行过程中其执行时间相互重叠。
对任意一个程序,存在前趋关系必须顺序执行,不存在前趋关系的可以并发执行。
程序在并发执行过程中由于共享资源而会相互制约,由此导致这些并发执行的程序出现 “执行——暂停——执行” 间断性活动规律。
并发执行的程序在共享资源时可能会改变这些资源的状态,致使其他程序在运行时其运行环境被改变,由此失去封闭性。
程序在并发执行时如果失去封闭性,那么也会失去可再现性。
标签:image weight rar before 校正 表示 mamicode 输入 节点
原文地址:https://www.cnblogs.com/weiyalin/p/10797859.html