操作系统原理:进程 PV 操作如何计算?全网最全三种前驱图计算类型总结

文章目录

  • 前言
  • 一、PV 操作定义
    • 1.1、P 操作定义
    • 1.2、V 操作定义
  • 二、串联进程(单线前驱图)
    • 2.1、什么是单线前驱图?
    • 2.2、如何计算单线前驱图的 PV?
      • 2.2.1、计算前驱节点 PV
      • 2.2.2、计算中间节点 PV
      • 2.2.3、计算尾节点 PV
  • 三、并联进程(多线前驱图)
    • 3.1、什么是多线前驱图?
    • 3.2、并联进程趋于合并
      • 3.2.1、计算前驱节点 PV
      • 3.2.2、计算中间节点 PV
      • 3.2.3、计算尾节点 PV
    • 3.3、并联进程趋于展开
      • 3.3.1、计算前驱节点 PV
      • 3.3.2、计算中间节点 PV
      • 3.3.3、计算尾节点 PV
  • 总结


前言

关于 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 操作的进程将从阻塞队列中唤醒一个进程

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

在这里插入图片描述

2.1、什么是单线前驱图?

串联进程(单线前驱图)是计算 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 进程执行图如下图所示:

在这里插入图片描述

2.2.2、计算中间节点 PV

对于中间节点 P2 进程,只有在前驱进程 P1 完成之后才可以执行,如果进程 P1 阻塞 P2 就无法正常执行,处于等待状态,故 P2 进程是从等待 S1 的信号量,运行本进程,结果就是唤醒另一个进程即 P3 进程,并占用一个信号量 S2。P2 进程执行图如下图所示:

在这里插入图片描述

2.2.3、计算尾节点 PV

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

在这里插入图片描述

三、并联进程(多线前驱图)

3.1、什么是多线前驱图?

多线前驱图即并联进程,多个进程趋于合并或者单个进程展开为多个进程,类似于初中我们所学的串并联电路知识。下面我们分别从并联进程趋于合并并联进程趋于展开两个方向来讨论不同情况如何计算 PV 操作。

3.2、并联进程趋于合并

并联进程趋于合并是并联进程中较为简单的,我在这里举一例较为经典的例题。进程前驱图如下:

在这里插入图片描述

题干信息:使用 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 进程执行图如下图所示:

在这里插入图片描述
同理,P2、P3 进程与 P1 相同,三个进程分别各占三个信号量S1、S2、S3,进程执行图如下图所示:

在这里插入图片描述

3.2.2、计算中间节点 PV

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

在这里插入图片描述

3.2.3、计算尾节点 PV

对于 P5 进程,同理,需要接收到 P4 进程的信号量才可以运行,然后进程结束。P5 进程执行图如下图所示:

在这里插入图片描述

3.3、并联进程趋于展开

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

在这里插入图片描述

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

分析:对于本前驱图,我们应该注意 P2、P3、P4 进程,信号量的判别根据进程标识顺序走

3.3.1、计算前驱节点 PV

前驱节点进程 P1跟之前我们讲到的一样,这里不再赘述。P1 进程执行图如下图所示:

在这里插入图片描述

3.3.2、计算中间节点 PV

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

在这里插入图片描述
对于进程 P3,需要等到进程 P2 的信号量 S2 才可以执行,然后激活进行 P4,占用一个信号量 S4。P3 进程执行图如下图所示:

在这里插入图片描述
对于进程 P4,需要等到进程 P2、P3 的信号量 S3、S4 才可以执行,然后激活进程 P5,并占用一个信号量 S5。P4 进程执行图如下图所示:

在这里插入图片描述

3.3.3、计算尾节点 PV

对于尾节点进程 P5,需要等到进程 P4 的信号量 S5 才可以执行,直到进程结束。P5 进程执行图如下图所示:
在这里插入图片描述


总结

本文给大家介绍了操作系统基本原理中的一个重要知识点,进程管理之 PV 操作。我们通过对不同的前驱图进行分类,总结了两大类最为常见的前驱图类型,在不同的情境下设置不同的处理思路。循序渐进,从单进程到多进程,处理思路跟着题目给出的前驱图表示顺序走(跟着顺序走你会发现都是单进程的计算方式)。相信本篇文章更能让你在计算过程中起到事半功倍的效果。

在这里插入图片描述


我是白鹿,一个不懈奋斗的程序猿。望本文能对你有所裨益,欢迎大家的一键三连!若有其他问题、建议或者补充可以留言在文章下方,感谢大家的支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/530726.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring 容器:三种方式解决 Resource leak: ‘applicationContext‘ is never closed 问题

文章目录前言一、Spring 容器警告产生的场景二、Spring 容器未关闭后果分析2.1、肉眼可见的警告2.2、导致的内存泄漏2.2.1、什么是内存泄漏&#xff1f;2.2.2、如何判断内存泄漏&#xff1f;2.2.3、Java 中的 GC&#xff08;垃圾回收&#xff09;2.2.4、Java 中会导致内存泄漏的…

SRA 案例:关于华为开发者联盟基础服务文档内容的改进建议(华为开发者联盟文档深度体验官)

文章目录前言一、文档中心的外链跳转问题1.1、问题描述1.2、造成的问题1.3、改进建议二、图片失真和无法放大查看问题2.1、问题描述2.2、造成的问题2.3、改进建议三、个别 SDK 词汇缺少必要的说明3.1、问题描述3.2、造成的问题3.3、改进建议四、邮箱信息的优化4.1、问题描述4.2…

腾讯位置服务:有何优势?如何使用平台创建应用和服务调用的 Key?

文章目录前言一、腾讯位置服务的优势1.1、提供丰富的地图产品1.2、提供行业解决方案1.3、提供其他生态维度的支持1.4、海量的数据基础1.5、丰富的开发文档二、初识腾讯位置服务2.1、用户的注册与登录&#xff08;附专属邀请码&#xff09;2.2、开发者信息的完善三、创建服务平台…

毕业生当头一棒?忆本科四年,高校毕业生与就业单位基本要求差多少?工作还是考研?

文章目录前言一、大学本科前两年的生活1.1、庸庸碌碌、中规中矩1.2、收获了爱情二、大三的改变2.1、学会自律2.2、学会自我总结2.3、眼光要具有前瞻性三、毕业答辩3.1、个人设计答辩3.2、团队设计答辩四、南京之行4.1、铭记历史&#xff0c;感恩先辈4.2、加强自我认知与提升五、…

Gitee 答疑:为什么从 Gitee 平台 Pull 代码到 STS/Eclipse 后文件乱码?逐步排查

文章目录前言一、产生乱码场景1.1、错误描述1.2、解决思路二、解决方式2.1、检查 Git 平台上的源码2.2、Git 的运行原理2.3、修改 IDE 的文本编码格式2.4、重新打开目的文件问题解决2.5、仍存在问题看这里&#xff08;重新拉区合并&#xff09;总结前言 我们从 Gitee 平台 Pull…

flash 异常修复:QQ 的 flash 图标显示异常?QQ 秀、表情加载异常?一招解决

文章目录前言一、产生错误场景1.1、flash 图标显示异常1.2、解决思路二、安装合适版本的 Flash Player2.1、选择合适版本的 Flash Player2.2、安装 Flash Player三、重启 QQ 客户端四、flash 动画加载异常4.1、动画加载异常原因分析4.2、下载安装 flash 修复工具4.3、使用 Flas…

电脑广告多?Windows 自带恶意软件删除工具还不会使用?有必要安装杀毒软件吗?

文章目录前言一、启动恶意软件删除工具二、扫描类型的选择三、启动软件扫描四、恶意软件删除工具的说明五、对于恶意软件处理的建议总结前言 可能有些小伙伴发现&#xff0c;哎&#xff1f;为什么我的电脑弹窗广告这么多&#xff1f;难不成小视频看多了&#xff1f;电脑中毒了&…

《软件项目管理(第二版)》第 8 章——项目团队与干系人 重点部分总结

文章目录 前言一、简答题二、论述题总结前言 学习了项目的开发与发布之后,我们就可以单独对一个项目进行开发了,但是在企业中开发中,除了编码之外,还需要项目管理、团队协作开发等,这就是软件项目管理板块要学习的内容。本文是对《软件项目管理(第二版)》第 8 章——项目…

《软件项目管理(第二版)》第 7 章——项目风险管理 重点部分总结

文章目录 前言一、单选题二、填空题三、简答题四、论述题总结前言 学习了项目的开发与发布之后,我们就可以单独对一个项目进行开发了,但是在企业中开发中,除了编码之外,还需要项目管理、团队协作开发等,这就是软件项目管理板块要学习的内容。本文是对《软件项目管理(第二…

《软件项目管理(第二版)》第 6 章——项目质量管理 重点部分总结

文章目录 前言一、单选题二、判断题三、简答题总结前言 学习了项目的开发与发布之后,我们就可以单独对一个项目进行开发了,但是在企业中开发中,除了编码之外,还需要项目管理、团队协作开发等,这就是软件项目管理板块要学习的内容。本文是对《软件项目管理(第二版)》第 6…

《软件项目管理(第二版)》第 5 章——项目进度和成本管理 重点部分总结

文章目录 前言一、填空题二、简答题三、论述题总结前言 学习了项目的开发与发布之后,我们就可以单独对一个项目进行开发了,但是在企业中开发中,除了编码之外,还需要项目管理、团队协作开发等,这就是软件项目管理板块要学习的内容。本文是对《软件项目管理(第二版)》第 5…

《软件项目管理(第二版)》第 1 章——概述 重点部分总结

文章目录 前言一、填空题二、判断题三、简答题总结前言 学习了项目的开发与发布之后,我们就可以单独对一个项目进行开发了,但是在企业中开发中,除了编码之外,还需要项目管理、团队协作开发等,这就是软件项目管理板块要学习的内容。本文是对《软件项目管理(第二版)》第 1…

《软件项目管理(第二版)》第 2 章——项目准备和启动 重点部分总结

文章目录 前言一、单选题二、判断题三、简答题总结前言 学习了项目的开发与发布之后,我们就可以单独对一个项目进行开发了,但是在企业中开发中,除了编码之外,还需要项目管理、团队协作开发等,这就是软件项目管理板块要学习的内容。本文是对《软件项目管理(第二版)》第 2…

《软件项目管理(第二版)》第 3 章——项目计划 重点部分总结

文章目录 前言一、单选题二、填空题三、简答题总结前言 学习了项目的开发与发布之后,我们就可以单独对一个项目进行开发了,但是在企业中开发中,除了编码之外,还需要项目管理、团队协作开发等,这就是软件项目管理板块要学习的内容。本文是对《软件项目管理(第二版)》第 3…

《软件项目管理(第二版)》第 4 章——项目估算 重点部分总结

文章目录 前言一、单选题二、简答题总结前言 学习了项目的开发与发布之后,我们就可以单独对一个项目进行开发了,但是在企业中开发中,除了编码之外,还需要项目管理、团队协作开发等,这就是软件项目管理板块要学习的内容。本文是对《软件项目管理(第二版)》第 4 章——项目…

《软件需求分析(第二版)》第 1 章——软件需求基础知识 重点部分总结

文章目录 前言一、单选题二、填空题三、判断题四、简答题总结前言 软件需求分析就是把软件计划期间建立的软件可行性分析求精和细化,分析各种可能的解法,并且分配给各个软件元素。需求分析是软件定义阶段中的最后一步,是确定系统必须完成哪些工作,也就是对目标系统提出完整…

《软件需求分析(第二版)》第 2 章——客户眼中的需求 重点部分总结

文章目录 前言一、简答题总结前言 软件需求分析就是把软件计划期间建立的软件可行性分析求精和细化,分析各种可能的解法,并且分配给各个软件元素。需求分析是软件定义阶段中的最后一步,是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。本文…

《软件需求分析(第二版)》第 3 章——需求工程的推荐方法 重点部分总结

文章目录 前言一、单选题二、填空题总结前言 软件需求分析就是把软件计划期间建立的软件可行性分析求精和细化,分析各种可能的解法,并且分配给各个软件元素。需求分析是软件定义阶段中的最后一步,是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的…

《软件需求分析(第二版)》第 4 章——需求分析员的职责 重点部分总结

文章目录 前言一、简答题总结前言 软件需求分析就是把软件计划期间建立的软件可行性分析求精和细化,分析各种可能的解法,并且分配给各个软件元素。需求分析是软件定义阶段中的最后一步,是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。本文…

《软件需求分析(第二版)》第 6 章——获取客户的需求 重点部分总结

文章目录 前言一、简答题总结前言 软件需求分析就是把软件计划期间建立的软件可行性分析求精和细化,分析各种可能的解法,并且分配给各个软件元素。需求分析是软件定义阶段中的最后一步,是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。本文…