软测试综述——PV操作

软测试综述——PV操作

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。



   

    在操作系统中,进程之间常常会存在相互排斥(都须要共享独占性资源时)和同步(完毕异步的两个进程的协作)两种关系。而信号量和PV操作完美有效的处理了这两种情况。

 

    相互排斥:就好比过独木桥,一次仅仅能运行一个进程。

    同步:好比一个人骑车一个人步行,两方协作完毕一件事情,速度快的每过一段时间就停下来等等速度慢的



    信号量是一种特殊的变量。表现形式是一个整型S和一个队列,依据控制对象的不同被赋予不同的值。分为下面两类:

    1,公用信号量。实现进程间的相互排斥,初值为1或资源的数目,

    2,私用信号量。实现进程间的同步,初值为0或某个正整数。

 

        S的物理意义:S>=0表示某资源的可用数。若S<0,则其绝对值表示堵塞队列中等待该资源的进程数。

 

         P操作:也称为down()wait()操作,使S=S-1。若S<0,进程暂停运行。放入信号量的等待队列。表示申请一个资源。

 

        V操作:也称为up()signal()操作。使S=S+1,S<=0,唤醒等待队列中的一个进程。表示释放一个资源。

 

利用PV操作实现进程的相互排斥


    令信号量S的初值为1,当进入临界区时运行P操作,退出临界区时运行V操作。这样,利用PV操作实现进程相互排斥的代码例如以下:

P(S)

   临界区

V(S)

 

利用PV操作实现进程的同步


    令信号量S的初值为0。进程A在进程B到达L2曾经。不应前进到超过点L1

             进程A                       进程B

                                       

L1:P(S)                       L2: V(S)

                                   


    当进程A先运行到L1时,运行完P操作后,信号量S=S-1<0,停止运行。直到进程B运行到L2时,信号量S=S+1=1。唤醒进程A继续运行。

达到了同步的目的。

 



最后通过一个实例分析来巩固一下


    比如。某仓库有一名保管员。该仓库可存放n箱零件。

现有m名工人。仅仅要仓库空暇。工人就可以将生产好的零件放入仓库。并由保管员登记入库数量。另外有k名销售员,仅仅要仓库的零件数满足顾客要求,便可提货并由保管员登记出库数量。

   规定:工人和销售员不能同一时候进入仓库,可是工人和工人,销售员和销售员能够同一时候进入仓库。设置信号量S1,初值为n,表示仓库空暇位置数;信号量S2。初值为0,表示仓库中零件箱数;信号量S3,初值为1,用于实现对保管员的相互排斥訪问。

则其管理系统流程图例如以下:

       

      软测试综述——PV操作


    对于工人进程,首先运行P(S1)申请资源。看仓库中是否有空暇位置。

若有,则将零件送入仓库。然后运行V(S2)表明仓库中已经有一箱零件,唤醒销售员进程,告知销售员能够提货了。然后运行PS3)申请资源,看是否有保管员空暇,若有。则登记入库数,然后运行VS3)释放保管员资源,使保管员处于空暇状态。


    对销售员进程,首先运行P(S2)申请资源,看仓库是否有货物,若有,进入仓库提货,然后运行V(S1)释放资源。使仓库空暇出一个位置。告知工人进程能够放置货物了,然后运行P(S3)申请资源,看是否有保管员空暇,若有,则登记出库数,然后运行VS3)释放保管员资源,使保管员处于空暇状态。

 

    通过上述实例可知,在现实生活中相互排斥和同步都是同一时候存在的,两者相辅相成。

 

    关于PV操作,相对来讲在软考的复习内容中是比較生疏的一部分,了解了它是什么,为什么使用它,它有什么长处以后,剩下的就是通过多多的实践练习来加深对理论的理解和吸收了。

 











版权声明:本文博客原创文章,博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117270.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux menuconfig搜索,linux–menuconfig

    linux menuconfig搜索,linux–menuconfig|–linux内核中Makefile,Kconfig,.config的关系(1)三者的作用简单来说就是去饭店点菜:Kconfig是菜单,Makefile是做法,.config就是你点的菜Makefile:一个文本形式的文件,编译源文件的方法。Kconfig:一个文本形式的文件,内核的配置菜单。.config:编译所依据的配置。(2)三者的语法|–Makefile目标定义:目标定义就是用来定义哪…

    2022年6月1日
    30
  • 如何用C语言实现【简易关机程序】[通俗易懂]

    如何用C语言实现【简易关机程序】[通俗易懂]C语言初阶、有趣的代码

    2022年7月22日
    15
  • PyCharm 汉化

    PyCharm 汉化汉化汉化资源地址:链接:https://pan.baidu.com/s/1htwrK5e密码:1c4d将汉化包”resources_cn.jar”放置到lib下,删除”resources_en.jar”,重启PyCharm步骤如下:…

    2022年5月26日
    48
  • 静态vlan的配置方式_实例方法与静态方法的区别

    静态vlan的配置方式_实例方法与静态方法的区别文章目录1VLAN的概念及优势2VLAN的种类2.1VLAN的范围2.2静态VLAN和动态VLAN3静态VLAN的配置4Trunk介绍与配置5实例1VLAN的概念及优势物理分隔。将网络从物理上划分为若干个小网络,然后使用能隔离广播的路由设备将不同的网络连接起来实现通信。逻辑分隔。将网络从逻辑上划分为若干个小的虚拟网络,即VLAN(VirtualLocalAreaNetwork,虚拟局域网)。VLAN工作在OSI参考模型的数据链路层,一个VLAN就是一个交换网络,其中的所有用户都

    2022年9月18日
    4
  • Java集合篇:Map总结

    Java集合篇:Map总结

    2021年10月4日
    35
  • 文本分类算法之–贝叶斯文本分类算法[通俗易懂]

    文本分类算法之–贝叶斯文本分类算法[通俗易懂]文本分类过程例如文档:GoodgoodstudyDaydayup可以用一个文本特征向量来表示,x=(Good,good,study,Day,day,up)。在文本分类中,假设我们有一个文档d∈X,类别c又称为标签。我们把一堆打了标签的文档集合作为训练样本,∈X×C。例如:={BeijingjoinstheWorldTradeOrganization,C

    2022年6月1日
    32

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号