一、前驅圖
前驅圖是一個有向無循環圖,記為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

注意:前驅圖中不能存在循環,否則必然會產生不可能實現的前驅關系
例如: 如下關系就不可能實現

二、程序的順序執行及其特征
1、程序的順序執行
(a)程序間的順序執行

(b)程序內部的順序執行
S1: a:=x+y;
S2: b:=a-5;
S3: c:=b+1;

2、順序執行時的特征
- 順序性
- 封閉性
- 可再現性
程序順序執行的特性,為程序員檢測和校正程序的錯誤帶來很大方便。
3、程序的並發執行及其特征
在操作系統中引入了多道程序設計技術后,系統中的程序才能並發執行,但是並非所有的程序都能並發執行。
例如:輸入、計算、打印三個程序對一批作業進行處理時,存在以下的前趨關系:
① 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 不存在前趨關系
(a)程序的並發執行
定義:一組在邏輯上相互獨立的程序或程序段在執行過程中其執行時間相互重疊。
對任意一個程序,存在前趨關系必須順序執行,不存在前趨關系的可以並發執行。
(b)並發執行時的特征
- 間斷性
程序在並發執行過程中由於共享資源而會相互制約,由此導致這些並發執行的程序出現 “執行——暫停——執行” 間斷性活動規律。
- 失去封閉性
並發執行的程序在共享資源時可能會改變這些資源的狀態,致使其他程序在運行時其運行環境被改變,由此失去封閉性。
- 不可再現性
程序在並發執行時如果失去封閉性,那么也會失去可再現性。
