码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • PV 操作与案例分析


    这里填写标题

    • 1. PV 操作与案例分析
      • 1.1. PV 操作的原则
      • 1.2. 案例分析
        • 1.2.1. 案例一
        • 1.2.2. 案例二
        • 1.2.3. 案例三

    1. PV 操作与案例分析

    PV 操作是一种实现进程互斥与同步的有效方法。PV 操作与信号量的处理相关, P 表示通过的意思, V 表示释放的意思。

    PV 操作是典型的同步机制之一。用一个信号量与一个消息联系起来:

    • 当信号量的值为 0 时, 表示期望的消息尚未产生;
    • 当信号量的值非 0 时, 表示期望的消息已经存在。

    用 PV 操作实现进程同步时, 调用 P 操作测试消息是否到达, 调用 V 操作发送消息。

    1.1. PV 操作的原则

    P 操作: 相当于请求资源、输入
    V 操作: 相当于释放资源、输出

    • 在单一进程内部, 由 P 操作 —> V 操作

    1、 P: 请求到资源 (相当于程序输入)
    2、 执行…
    3、 V: 释放资源 (相当于程序的输出)

    • 在两个进程之间, 由 V 操作 —> P 操作

    1、 V: 一个进程释放了资源
    2、 P: 另一个进程可以申请该资源

    • 起始进程: 只有 V 操作(输出), 没有 P 操作(输入)

    相当于程序只出不进

    • 终止进程: 只有 P 操作(输入), 没有 V 操作(输出)

    相当于程序只进不出

    • 前趋图中信号排序规则: 从左到右、从上到下 , 依次为 1、2、3…

    在这里插入图片描述

    1.2. 案例分析

    1.2.1. 案例一

    假设系统中有 n 个进程共享 3 台打印机, 任一进程在任一时刻最多只能使用 1 台 打印机。若用 PV 操作控制 n 个进程使用打印机, 则相应信号量 s 的取值范围为 3 ~ -(n-3); 若信号量 S 的值为 -3, 则系统中有 3 个进程等待使用打印机。

    1.2.2. 案例二

    1、案例

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    2、分析

    1) 先标信号 S

    按照从左到右、从上到下
    如果两条线的起点相同, 就比较终点; 终点在上或在前的, 就排在前面

    在这里插入图片描述

    2) 依次分析每个进程

    原则:

    • 初始进程, 只有 V, 没有 P
    • 终止进程, 只有 P, 没有 V
    • 进程内, 从 P 到 V
    • 进程间, 从 V 到 P
    • 一个进程有几个输入, 就有几个 P; 有几个输出, 就有几个 V
    • P1

    初始进程: 只有 V
    有两个输出 S1、S2, 所以 V 为: V(s1)、V(s2)

    在这里插入图片描述

    • P2

    一个输入 S1, 两个输出 S3、S4
    所以 P 为: P(s1), V 为: V(s3)、V(s4)

    在这里插入图片描述

    • P3

    两个输入 S2、S3, 两个输出 S5、S6
    所以 P 为: P(s2)、P(s3), V 为: V(s5)、V(s6)

    在这里插入图片描述

    • P4

    两个输入 S4、S5, 一个输出 S7
    所以 P 为: P(s4)、P(s5), V 为: V(s7)

    在这里插入图片描述

    • P5

    一个输入 S6, 一个输出 S8
    所以 P 为: P(s6), V 为: V(s8)

    在这里插入图片描述

    • P6

    终止进程, 只有 P, 没有 V
    两个输入 S7、S8
    所以 P 为: P(s7)、P(s8)

    在这里插入图片描述

    3)答案

    在这里插入图片描述

    1.2.3. 案例三

  • 相关阅读:
    AtCoder Beginner Contest 264 部分题解
    SpringBoot接口中如何直接返回图片数据
    带你深入了解Redis 高级特性
    asp.net mvc实现系统登录及验证功能
    操作系统OPT算法(最佳页面替换算法)
    【附源码】计算机毕业设计SSM石家庄铁道大学影视资料管理系统
    第一届“龙信杯”电子数据取证竞赛Writeup
    删除共享文件凭据脚本
    阿里架构师吐血整理:从源码到架构的Spring全系列笔记,已全部分享
    CodeForces Round #817 (div.4) A~F
  • 原文地址:https://blog.csdn.net/wan212000/article/details/127639485
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号