Skip to content

前趋图

用来表示哪些任务可以并行执行,哪些任务之间有顺序关系:

  • 任务间的并行:无依赖关系的任务可同时执行
  • 任务间的先后顺序:前驱任务完成后,后继任务才能开始

前趋图

如上图:A、B、C 可并行执行,但必须全部完成后才能执行 D。

进程资源图

用来表示进程和资源之间的分配和请求关系

进程资源图

  • P 代表进程,R 代表资源,R 方框中圆球数 = 该资源的个数
  • R→P 箭头:资源已分配给进程
  • P→R 箭头:进程还需请求该资源

节点判断

  • 阻塞节点:进程所请求的资源已全部分配完毕,无法获取所需资源(如上图 P2)
  • 非阻塞节点:进程所请求的资源还有剩余,可以分配给该进程(如上图 P1、P3)
  • 死锁:进程资源图中所有进程都是阻塞节点时,陷入死锁

资源图化简方法:从非阻塞节点开始,将其所有边去掉变成孤立点,回收分配给它的资源,重复此过程直到所有节点孤立;若无法全部化简则存在死锁。

练习题

经典题目 — 进程资源图化简(阻塞节点判断+化简顺序,死锁必考题)

进程资源图判断

进程资源图

问题:关于图中进程状态和化简顺序,正确的是?

📝答案与解析

答案:P1、P2是阻塞节点,P3是非阻塞节点;化简顺序为 P3→P1→P2

解析:P3 不阻塞,先孤立 P3 并回收资源 R1,此时 P1 获得 R2 变为非阻塞,孤立 P1 回收 R2,最后 P2 获得 R1 变为非阻塞。

前趋图表示

前趋图

问题:图中前趋图应记为?

答案:→=

练习题

以下题目需要结合原题库中的前趋图图示,建议在 Obsidian 中对照图示作答。

[Q21] 前趋图表示

Q21. 进程 P1、P2、P3、P4、P5 的前趋图如下。

image.png

若用 PV 操作控制进程并发执行的过程,则需要相应于进程执行过程设置 5 个信号量 S1、S2、S3、S4 和 S5,且信号量初值都等于零。下图中 a 处应填写 (1) ;b 和 c、d 和 e 处应分别填写 (2),f、g 和 h 应分别填写 (3) 。

image.png

  • A. P(S1)和 P(S2)
  • B. V(S1)和 V(S2)
  • C. P(S1)和 V(S2)
  • D. P(S2)和 V(S1)
📝答案与解析

正确答案:B

根据前驱图,P1进程运行结束需要利用V操作分别通知P2和P3进程,所以用V(S1)操作通知P2进程,用V(S2)操作通知P3进程。

[Q29] 前趋图表示

前趋图是一个有向无环图,记为→={(Pi,Pj)pi完成时间先于Pj开始时间}。假设系统中进P={P1,P2,P3,P4,P5,P6,P7,P8},那么,该前趋图可记为(1),图中(2)。

image.png

  • A. →={(P1,P2),(P1,P3),(P1,P4),(P2,P5),(P3,P2),(P3,P4),(P3,P6),(P4,P7),(P5,P8)
  • B. →={(P1,P2),(P1,P4),(P2,P3),(P2,P5),(P3,P4),(P3,P6),(P4,P7),(P5,P6),(P7,P6),(P6,P8)}
  • C. →={(P1,P2),(P1,P4),(P2,P5),(P3,P2),(P3,P4),(P3,P6),(P4,P6),(P4,p7),(p6,p8),(p7,P8)}
  • D. →={(P1,P2),(P1,P4),(P2,P3),(P2,P5),(P3,P4),(P3,P6),(P4,P7),(P5,P6),(P5,P8),(P7,P6),(P6,P8)}
📝答案与解析

答案:D

解析:逐一核对图中每条有向边,D 选项完整匹配前趋图关系。


[Q30] 前趋图关系

同上题图,那么图中(2)正确的是( )。

  • A. 存在着11个前趋关系,P1为初始结点,P8为终止结点
  • B. 存在着2个前趋关系,P6为初始结点,P2P4为终止结点
  • C. 存在着9个前趋关系,P6为初始结点,P8为终止结点
  • D. 存在着10个前趋关系,P1为初始结点,P7为终止结点
📝答案与解析

答案:A

解析:图中 11 条有向边,P1 无前驱(初始),P8 无后继(终止)。


[Q67] 前趋图用途

在软件项目管理中,前趋图主要用于表示任务之间的哪些关系( )。

  • A. 任务的优先级和重要性
  • B. 任务的资源分配和成本估算
  • C. 任务之间的并行和顺序关系
  • D. 任务的完成时间和延迟风险
📝答案与解析

答案:C

解析:前趋图=有向无环图,表达任务间的先后依赖关系(哪些可并行、哪些必须顺序)。


以下 PV 操作综合题需对照原题库中的前趋图作答。

[Q66] PV前趋规则 (已在进程管理文件)

在使用信号量实现前驱关系时,信号量数量等于有向边数量,初始值为0。前驱完成后执行V,后继执行前P。


[Q8] PV前趋图-P1~P5

进程P1、P2、P3、P4和P5的前趋图如下:

image.png

若用PV操作控制进程P1~P5并发执行的过程,则需要设置6个信号S1~S6,初值都等于零。图中a和b处应分别填写(1);c和d处应分别填写(2),e和f处应分别填写(3)。

image.png

  • A. P(S1)P(S2)和P(S3)P(S4)
  • B. P(S1)V(S2)和P(S2)V(S1)
  • C. V(S1)V(S2)和V(S3)V(S4)
  • D. P(S1)P(S2)和V(S1)V(S2)
📝答案与解析

答案:C

解析:a和b处P1执行完后发出信号→V(S1)V(S2)。口诀:前驱V后继P。


[Q32] 生产者消费者变体

某企业的生产流水线上有2名工人P1和P2,1名检验员P3。P1将半成品放入B1;P2从B1取出继续加工,加工好的产品放入B2;P3从B2取出产品检验。

B1可存放n件,B2可存放m件。设置6个信号量S1~S6,S3和S6的初值都为0。则信号量S1和S5( );S2、S4的初值分别为( )。

image.png

  • A. 分别为同步信号量和互斥信号量,初值分别为0和1
  • B. 都是同步信号量,其初值分别为0和0
  • C. 都是互斥信号量,其初值分别为1和1
  • D. 都是互斥信号量,其初值分别为0和1
📝答案与解析

答案:C

解析:S1(B1互斥)和S5(B2互斥)都是互斥信号量,初值=1。S2=n(空位数),S4=m(空位数)。


[Q33] 生产者消费者变体-初值

同上题。S2、S4的初值分别为( )。

  • A. n、0
  • B. m、0
  • C. m、n
  • D. n、m
📝答案与解析

答案:D

解析:S2=B1空闲位数量初值=n;S4=B2空闲位数量初值=m。