三种操作系统前驱图类型详细总结进程管理之如何使用PV操作

发布时间:2021-10-18 11:43:08 作者:iii
来源:亿速云 阅读:451

本篇内容介绍了“三种操作系统前驱图类型详细总结进程管理之如何使用PV操作”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一、PV 操作定义

本文中的 S 为信号量。关于前驱图以及信号量的基础知识本篇不作详细介绍。

1.1、P 操作定义

S:=S-1,若 S≥0,则执行 P 操作的进程继续执行;若 S<0,则置该进程为阻塞状态(因为无可用资源),并将其插入阻塞队列。

定义这么长,我们只需要谨记:执行 P 操作的进程将进入等待队列

1.2、V 操作定义

S:=S+1,若 S>0,则执行 V 操作的进程继续执行;若 S≤0,则从阻塞状态唤醒一个进程,并将其插入就绪队列,然后执行 V 操作的进程继续。

定义这么长,我们只需要谨记:执行 V 操作的进程将从阻塞队列中唤醒一个进程

二、串联进程(单线前驱图)

三种操作系统前驱图类型详细总结进程管理之如何使用PV操作

2.1、什么是单线前驱图?

串联进程(单线前驱图)是计算 PV 操作中最为简单的。那什么是单线前驱图呢?举例前驱图如下:

三种操作系统前驱图类型详细总结进程管理之如何使用PV操作

题干信息:使用 PV 操作控制进程 P1、P2、P3 执行的过程,设置 2 个信号量分别为 S1、S2 且初值均为零。分别列出 3 个进程的进程执行图来计算每个进程的 PV 操作。

我们可以看到 P1、P2、P3 三个进程是串联关系,一一执行,只有前面的进程执行了后面的才可以执行,我们将这类前驱图归类为单线前驱图。

2.2、如何计算单线前驱图的 PV?

那我们计算该进程的 PV 操作呢?我们将节点分为前驱节点(即首节点),中间节点,尾节点分别计算 PV。

2.2.1、计算前驱节点 PV

对于前驱的首结点 P1 进程,进程 P1 从初始状态执行操作的结果就是从阻塞队列中唤醒一个进程,即唤醒 P2,故其只有 V 操作,占用一个信号量 S1,进程 P1 执行 V(S1)操作。P1 进程执行图如下图所示:

三种操作系统前驱图类型详细总结进程管理之如何使用PV操作

2.2.3、计算尾节点 PV

对于 P3 进程,同理,只有在前驱节点 P2 执行完成将信号量 S2 传过来之后才可以执行,然后进程结束。P3 进程执行图如下图所示:

三种操作系统前驱图类型详细总结进程管理之如何使用PV操作

题干信息:使用 PV 操作控制进程 P1、P2、P3、P4 并发执行的过程,设置 4 个信号量分别为 S1、S2、S3、S4 且初值均为零。分别列出 5 个进程的进程执行图来计算每个进程的 PV 操作。

3.2.1、计算前驱节点 PV

对于前驱的首结点,以 P1 进程为例,进程 P1 从初始状态执行操作的结果就是从阻塞队列中唤醒一个进程,即唤醒 P4,故其只有 V 操作,并占用一个信号量 S1,故进程 P1 执行 V(S1)操作。P1 进程执行图如下图所示:

三种操作系统前驱图类型详细总结进程管理之如何使用PV操作

3.2.2、计算中间节点 PV

对于中间节点进程 P4,只有在前驱进程 P1、P2、P3 都已经完成之后才可以执行,而进程 P1、P2、P3 均有可能在阻塞队列中,故进程 P4 需要先等待 P1、P2、P3 进程的执行(即 P 操作)接收信号量,然后执行 P4 自身进程唤醒 P5 操作(即 V 操作)占用一条信号量 S4。P4 进程执行图如下图所示:

三种操作系统前驱图类型详细总结进程管理之如何使用PV操作

3.3、并联进程趋于展开

并联进程趋于展开是并联进程中较为难的一种,但是理清了思绪还是得心应手的。举例题如下:

三种操作系统前驱图类型详细总结进程管理之如何使用PV操作

3.3.2、计算中间节点 PV

对于进程 P2,需要等到 P1 的信号量 S1,并唤醒 P3、P4 进程分别占用信号量 S1、S2。P2 进程执行图如下图所示:

三种操作系统前驱图类型详细总结进程管理之如何使用PV操作
对于进程 P4,需要等到进程 P2、P3 的信号量 S3、S4 才可以执行,然后激活进程 P5,并占用一个信号量 S5。P4 进程执行图如下图所示:

三种操作系统前驱图类型详细总结进程管理之如何使用PV操作

“三种操作系统前驱图类型详细总结进程管理之如何使用PV操作”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

推荐阅读:
  1. redis之sets类型及操作
  2. redis之lists类型及操作

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

上一篇:Java中常见的修饰符语法有那几种

下一篇:如何解决STS或者Eclipse从Git平台Pull代码到本地后文件乱码的问题

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》