软考复习——PV操作



在操作系统中,进程之间经常会存在互斥(都需要共享独占性资源时)和同步(完成异步的两个进程的协作)两种关系。而信号量和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,用于实现对保管员的互斥访问。则其管理系统流程图如下:

对于工人进程,首先执行P(S1)申请资源,看仓库中是否有空闲位置。若有,则将零件送入仓库,然后执行V(S2)表明仓库中已经有一箱零件,唤醒销售员进程,告知销售员可以提货了。然后执行P(S3)申请资源,看是否有保管员空闲,若有,则登记入库数,然后执行V(S3)释放保管员资源,使保管员处于空闲状态。

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

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

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



时间: 2024-08-01 12:20:29

软考复习——PV操作的相关文章

【软考】PV操作同步互斥

进程 在操作系统中,进程是占有资源的最小单位(线程可以访问其所在进程内的所有资源,但线程本身并不占有资源或仅仅占有一点必须资源),一个进程能有多个线程. 临界资源 指一次只能有一个进程在占用的资源.如现实中的衣服.一件衣服只能一个人在穿.比如一个硬盘.有两个进程对同一块区域进行写操作.数据不就一锅粥了么= = 临界区 在一个进程占有临界资源的时候.别的进程不能占有.这是互斥.从进程占有资源到资源被释放.这一段代码就叫临界区. 临界区原则(有空即进-无空则等-有限等待-让权等待) 个人造词= =

软考复习之路—组成原理

计算机系统的基础知识应该是作为一个编程人员必备的一门课程,仅仅有了解了计算机的组成,程序在计算 机中的存储状态,运算等基本内容,我们才干继续对计算机有更深层次的认识,更easy学习与上手.比方说要 想学习操作系统,编译原理这些内容都是以组成原理为基础的. 计算机系统主要分为几部分: 校验码 校验码是为了确保数据在传送过程中正确无误. 奇偶校验码:添加一位校验位使编码中1的个数为奇数(奇校验)或偶数(偶校验),从而使码距变为2. 海明码: 循环冗余校验码:模二除法 流水线 流水线是指在程序运行时多

软考复习之路—再谈组成原理

指令系统 指令系统是计算机硬件的语言系统,与硬件的联系息息相关. 指令系统是指CPU所能够处理的全部指令的集合,是一个CPU的根本属性(指令系统决定了一个CPU能运行 什么样的程序).现在cpu仍然使用者X86指令集,不同类型的计算机包含的指令系统的种类和数目是不同的. 所有采用高级语言编出的程序,都需要编译或者解释成为机器语言后才能运行(编译原理),这些机器语 言中所包含的就是一条条的指令.一条指令就是机器语言的一个语句,它是一组有意义的二进制代码. 格式 零地址 在堆栈型计算机中,操作数一般

软考复习之路——软考总结

经过了自考的洗礼之后,对操作系统,数据结构等知识有了一定的了解,拓宽了我们学习的知识面,为我们今后的学习又做了很多铺垫. 通过考软考,对于理论上的知识比自考有了更深一层的理解,补充了很多知识.自考对于软考来说解决了不怕不知道,就怕不知道的问题.自考的知识很基础,经历了自考之后,再学起操作系统,数据结构这些知识来,就很轻松了.自考做了一个很好的铺垫.软考是在原有基础上再继续学习的过程. 通过这次软考也反映出的一系列的问题: 1.计划是有,感觉安排有点不合理.其中穿插的讲课什么的,想法很好,但是实施

软考复习之路——软工之系统测试

系统测试是软件开发过程中的一个重要的组成部分,是贯穿整个软件开发生命周期.对软件产品进行验证和确认的活动过程.目的是尽快尽早发现在软件产品中所存在的各种问题:与用户需求.预定义的不一致性问题. 测试发现问题后,要找出其错误原因和位置,进行改正. 系统测试主要包括以下几部分: 静态测试方法包括软工检测和计算机辅助分析:动态包括黑盒(功能测试)和白盒测试.本篇文章重点介绍一下白盒测试的逻辑覆盖. 逻辑覆盖分为语句.条件.判定/条件.条件组合.路径覆盖. 以下面图为例进行说明: 1)语句覆盖 这是起码

软考复习之路—从瀑布模型到极限编程,敏捷开发

软件开发是一门技术,也是一门艺术. 瀑布模型.极限编程.敏捷开发是有代表性的开发模式,在对开发者.客户.最终的产品的关注上的变化,体现了软件开发管理者在管理模式上的变化. 瀑布模型 是一种理想化的开发模型,要求有明确的需求分析,无法解决软件需求不明确或不准确的问题. 瀑布模型像工厂流水线一样把软件开发过程分成各种工序,并且每个工序可以根据软件产品的规模.参与 人员的多少进一步细分成更细的工序.更符合分层的设计思想,比较适合于大型软件的开发.也因此瀑布模型 是使用最多的开发模型. 瀑布模型将复杂的

软测试综述——PV操作

 在操作系统中,进程之间常常会存在相互排斥(都须要共享独占性资源时)和同步(完毕异步的两个进程的协作)两种关系.而信号量和PV操作完美有效的处理了这两种情况.     相互排斥:就好比过独木桥,一次仅仅能运行一个进程.     同步:好比一个人骑车一个人步行,两方协作完毕一件事情,速度快的每过一段时间就停下来等等速度慢的 信号量是一种特殊的变量.表现形式是一个整型S和一个队列,依据控制对象的不同被赋予不同的值.分为下面两类: 1,公用信号量.实现进程间的相互排斥,初值为1或资源的数目, 2,

软考---21天复习心得

软考---21天复习心得 今年暑假决定参加11月份的软件设计师考试,从9月1号开始准备软考复习到现在已经21天了.期间有过充满激情,有过因为其他事情打断的苦恼,有过因为不知如何去看书的迷茫,也有过重新发现的欣喜-- 激情 大抵人们无论他是否能坚持干点是什么,总之刚开始的那几天里是非常有激情的.其实我这份激情还是持续的比较久的,大约有10多天吧.从一开始看马士兵J2SE的视频,再到希赛2006年软考的视频(需要资料的朋友,我会在两天之后将云盘的分享链接贴到文后)一气呵成. 苦恼 期间维护的项目客户

【软考路上】——总结篇——软考收获+复习建议

无论你现在正在学习什么知识,不要认为它不重要,因为在你今后的某个时刻一定会用上. 这句话,软考给了我很明确的验证.软考复习过程中,很多知识点都是在自考和自己的专业课中学习过的的.软考中的考点大致如下: 还记得琛琛在动员大会上为大家做的考点分析,分析到最后,原来这些知识点大部分都是我们学过的啊~~ 从考试的角度来说,结合自己经历的分享一点小建议: 1.J2SE学习:有人说软考阶段,J2SE学习不重要,如果这么想的话那就大错特错了,学习J2SE并不仅仅是学习java中那几个关键字,更主要的是更深.更