软测试综述——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操作,相对来讲在软考的复习内容中是比較生疏的一部分,了解了它是什么,为什么使用它,它有什么长处以后,剩下的就是通过多多的实践练习来加深对理论的理解和吸收了。
版权声明:本文博客原创文章,博客,未经同意,不得转载。
软测试综述——PV操作的更多相关文章
- 软考之PV操作(同步)
这几天,陆续有那么三两个同学跟我讨论了一下关于软考上的PV操作的题,吾虽不才,但还是把同学们讲通了,在此,特分享一下自己的思路和想法,愿对大家有点帮助! 下面,我们就通过自己做过的试卷上两道题来分析: ...
- 实验四 简单的PV操作
实验四 简单的PV操作 专业 网络工程 姓名 方俊晖 学号 201406114309 一. 实验目的 1.掌握临界区的概念及临界区的设计原则: 2.掌握信号量的概念.PV操作的含义以 ...
- 【转】进程同步之信号量机制(pv操作)及三个经典同步问题
原文地址:http://blog.csdn.net/speedme/article/details/17597373 上篇博客中(进程同步之临界区域问题及Peterson算法),我们对临界区,临界资源 ...
- OS__信号量(semaphore)PV操作
信号量的概念 1.信号量的类型定义 信号量(semaphore)的数据结构为记录型数据结构一个值和一个指针,指针指向等待该信号量的下一个进程.信号量的值与相应资源的使用情况有关,在操作系统中,信号量用 ...
- 操作系统实验——PV操作实现生产者消费者模型
操作系统PV操作之--生产者消费者模型 个人博客主页 参考资料: Java实现PV操作 | 生产者与消费者 浙大公开课 在操作系统的多进程.多线程操作中经常会有因为同步.互斥等等问题引发出的一系列问题 ...
- [转载]PV操作简单理解
原文链接:http://blog.csdn.net/liushuijinger/article/details/7586656 进程通常分为就绪.运行和阻塞三个工作状态.三种状态在某些条件下可以转 ...
- PV操作
学习PV操作之前,我们首先来了解两个很基础的概念: 同步.互斥: 同步:其实说同步还不如说”协作“,就是我们的目标只有一个,我们奔着同一个目标去的,都是在大家的努力下共同完成这么一件事情.还是比较容易 ...
- 信号量与PV操作
在计算机操作系统中,PV操作是进程管理中的难点.首先应弄清PV操作的含义:PV操作由P操作原语和V操作原语组成(原语是不可中断的过程),对信号量进行操作,具体定义如下: P(S):①将信号量S的 ...
- 多线程同步内功心法——PV操作上(未完待续。。。)
阅读本篇之前推荐阅读以下姊妹篇: <秒杀多线程第四篇一个经典的多线程同步问题> <秒杀多线程第五篇经典线程同步关键段CS> <秒杀多线程第六篇经典线程同步事件Event& ...
随机推荐
- Windows Phone开发(21):做一个简单的绘图板
原文:Windows Phone开发(21):做一个简单的绘图板 其实我们今天要说的就是一个控件--InkPresenter,这个控件并不是十分强大,没办法和WPF中的InkCanvas相比,估计在实 ...
- Linux date -s(转)
修改linux的时间可以使用date指令 修改日期: 时间设定成2009年5月10日的命令如下: #date -s 05/10/2009 修改时间: 将系统时间设定成上午10点18分0秒的命令如下. ...
- 自由HTML5串行来到《HTML5具体解释Web开发的例子》连载(三)DOCTYPE和字符集
于2.1.2通过新老科DOCTYPE控制,读者可以清晰地看到HTML 5精简旧体制的努力取得. DOCTYPE主要用于在开始的情况下,XML于,用作叙述性说明XML同意使用的元素.物业和安排.起初HT ...
- 将jar要么aar公布到到网mvn 在(使用github作为仓库), 通过gradle dependency 信息集成
使用Android Studio用户开发,都希望通过maven该方式整合远程仓库jar.aar文件.但如何将这些文件发布它? 发人员都会将jar文件公布到sonatype上,以提供给其它开发人员集成, ...
- 重新想象 Windows 8 Store Apps (30) - 信息: 获取包信息, 系统信息, 硬件信息, PnP信息, 常用设备信息
原文:重新想象 Windows 8 Store Apps (30) - 信息: 获取包信息, 系统信息, 硬件信息, PnP信息, 常用设备信息 [源码下载] 重新想象 Windows 8 Store ...
- jsp简单练习-简单的下拉表单
<%@ page contentType="text/html; charset=gb2312" %> <html> <body> <fo ...
- Hadoop读书笔记(二)HDFS的shell操作
Hadoop读书笔记(一)Hadoop介绍:http://blog.csdn.net/caicongyang/article/details/39898629 1.shell操作 1.1全部的HDFS ...
- Git相关操作汇总
git clone: 正如上图,当我们打开终端的情况下,默认我们所在的目录是在/home/shiyanlou的,大家可以在终端输入以下命令把目录切换到桌面cd /home/Desktop这个时候输入 ...
- nodejs添加路由route步骤详解
首先,毋庸置疑, 新建一个基础express站点.建好之后, 有三个文件需要code(当然,三个步骤顺序随意). 下面以添加一个'/about'为例说明. 1. 在views文件夹里,新建一个jade ...
- c++11多线程简介
C++11开始支持多线程编程,之前多线程编程都需要系统的支持,在不同的系统下创建线程需要不同的API如pthread_create(),Createthread(),beginthread()等,使用 ...