软测试综述——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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 权重系数确定问题_如何确定权重系数例子

    权重系数确定问题_如何确定权重系数例子根据各个指标获得综合指标时,由于各个指标对综合指标的贡献度不同,相应权重也应不同,对综合指标贡献大的指标更重要,应该分配更大的权重。如何确定各个指标的权重,这里介绍两种方法:熵值法和pca确定权重。也

    2022年8月4日
    8
  • USB转RS485代替PC/PPI通讯电缆

    USB转RS485代替PC/PPI通讯电缆S7-200的CPU使用的是RS485,PC机有RS232口和USB口,两种接口电气规范不同,需要用中间电路转换成同一接口类型。现在常用的PC/PPI其实就是一根USB/RS485的匹配电缆。

    2022年5月7日
    184
  • java 用getClass()获取对象的类型类

    java 用getClass()获取对象的类型类getClass方法可以获取一个对象的类型类,然后在调用该类的方法可以获取该类的相关信息,比如父类的名字,该类的名字等packagecom.mao.hah;publicclassTestGetClass{ /** *@paramargs */ publicstaticvoidmain(String[]args){ //TODOAuto-gener

    2022年6月16日
    44
  • AI经典案例_北京航空航天大学高小鹏

    AI经典案例_北京航空航天大学高小鹏来源:新智元本文约8000字,建议阅读10分钟本次报告评估了2016年至2021年间人工智能的发展,涵盖14大问题,探讨了人工智能发展的关键领域。时隔5年,由斯坦福大学教授李飞飞主导…

    2022年9月29日
    7
  • 了解图形数据库_图形数据库neo4j

    了解图形数据库_图形数据库neo4j企业架构师应该知道什么您在Google上获得的图表数据库的描述主要是学术性的。我看到很多关于图形数据库的描述,它们讨论了Königsberg的七座桥梁或互联网的发明者Berners-Lee。有理论和愿景很好,但对我来说,我仍然认为引导相关性很重要。为什么图形数据库对您很重要?想象一下存储在当地连锁餐厅的数据。如果您要跟踪,则将客户信息存储在一个数据库表中,将您提供的项目存储在另一个数据…

    2025年6月27日
    5
  • Linux抓包命令tcpdump以及常见抓包使用方法[通俗易懂]

    Linux抓包命令tcpdump以及常见抓包使用方法[通俗易懂]系统运行过程中,难免发现服务器一些流量异常或访问异常,我们可以采用tcpdump命令进行抓包。下边简单介绍下该命令使用办法。1,安装tcpdump一些系统默认没有安装,我们需要yum安装下这个命令:yuminstalltcpdump-y2,tcpdump使用。一些使用我们可以tcpdump–help看下帮助,比如:常用的一些简单用法,一般是抓取对应网卡、端口、对应IP等。tcpdump-nn本地网卡地址以及外部链接地址,并采用IP地址、端口表示。如果不加-nn则会…

    2022年6月15日
    59

发表回复

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

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