操作系统(五)进程管理——前驱图和程序执行
一、前驱图
前驱图是一个有向无循环图,记为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)并发执行时的特征
- 间断性
程序在并发执行过程中由于共享资源而会相互制约,由此导致这些并发执行的程序出现 “执行——暂停——执行” 间断性活动规律。
- 失去封闭性
并发执行的程序在共享资源时可能会改变这些资源的状态,致使其他程序在运行时其运行环境被改变,由此失去封闭性。
- 不可再现性
程序在并发执行时如果失去封闭性,那么也会失去可再现性。