前趨圖(Precedence Graph):是一個有向無循環圖,記爲DAG(Directed Acyclic Graph),前趨圖中必須不存在循環, 該圖通常用於表現事務之間先後順序的制約關係。
結點:可以表示一個語句、一個程序段或是一個進程,
有向邊:結點間的有向邊表示兩個結點之間存在的前趨關係。
程序順序執行特性
-
順序性
-
封閉性:即程序運行時獨佔全機資源
-
可再現性
程序併發執行特性
-
間斷性
-
失去封閉性:是多個程序共享系統中的各種資源
-
不可再現性
在計算機中,經常採用流水線方式執行指令,每一條指令都可以分解爲取指、分析 和執行三步。
-
〇 表示一個程序、進程或是語句的結點。
-
→ 表示結點間的執行順序。
前趨關係"→"的形式化描述:→ ={Ai, Bi, Ci} 取指操作爲 Ai,分析操作爲 Bi 和執行操作爲 Ci(i=1,2,3)。
如圖所示爲三個任務各程序段併發執行的前驅圖。
開始結點(Initial Node):A1 沒有前趨結點,不受任何制約,可以直接執行
終止結點(Final Node): C3 沒有後繼結點
直接前驅:Bi開始執行之前Ai必須完成,此時稱 Ai 是 Bi 的直接前驅
直接後繼:Bi開始執行之前Ai必須完成,此時稱 Bi 是 Ai 的直接前驅
重量(Weight):用於表示該結點所含有的程序量或程序的執行時間
在前趨圖中,執行先後順序的制約關係可分爲兩種:直接制約和間接制約。
直接制約:同操作中,多個步驟之間的制約關係,也可以說是“同步的進程之間的制約關係”。如圖 A1、B1、C1 是一條指令的取指、分析、執行的三個步驟,所以它們之間的關係是直接制約。
間接制約:多個操作之間,相同步驟的制約關係,也可以說是“互斥的進程之間的制約關係”。如圖A1、A2、A3 之間就存在間接制約的關係。
並行執行:B1、A2,
C1、B2、A3,
C2、B3,