软考之路--从生活着手,看PV怎样操作

PV操作。是软考其中一个非常重要的考点,一听到这个名词,顿时赶脚高大上有么有,在软考的历年试题中,也不乏PV操作的身影,老师也对PV操作进行了一次讲课,那时年少。听得稀里糊涂,也不是非常理解,在小编的理解其中,PV操作与信号量的处理相关。P表示通过的意思,V表示释放的意思。做过几套软考试题,看过软考视频,对PV操作有了一点傻傻的理解,PV操作属于操作系统方面的知识,在前面的博文中,小编介绍过进程存储,这篇博文。小编主要和大家来学习一下PV操作的相关知识,小编会循着以下这张图的脉络,一一介绍,首先,我们来看一下总体的有关PV操作知识点的框架。

接下来。小编就沿着上图的痕迹,对PV操作进行一一解剖,有不允许见的小伙伴欢迎讨论交流。

    概念

同步

关于同步,小编理解的意思是“协同合作。齐心协力”。换句话说就是我们的目标仅仅有一个。大家的目标都一致,就是在大家的努力下共同完毕某一件事情。看以下一张图:

我们来简单分析一下这张图,A仓库有一些货物,然后我们须要把A仓库的货物搬运到B仓库,由搬运工甲和搬运工乙来完毕这个任务;那么他们的目标就仅仅有一个。就是把货物从A仓库搬到B仓库去,共同奔着这个方向去努力,这是一个典型的同步问题。

   相互排斥

古语中有句话,能非常好的表达出相互排斥的概念--千军万马过独木桥。非常easy的一句话,把相互排斥的概念表达的淋漓尽致,就好比有一个大部队来到独木桥边,想要走过独木桥。首先要做的工作就是排好队。一个一个来。挨个走过独木桥。另一个非常好的样例能够说明相互排斥的概念,比方打印机,打印机这个工具就非常好的体现了相互排斥的概念,比方,前阵日子,大家自考。各种打印真题。打印知识点。假设你去打印的时候,已经有人正在使用打印机,那么你须要做的就是静静的等待,这也是生活中一个能非常好说明相互排斥概念的样例。在相互排斥中,还有两个重要的概念,临界资源和临界区,临界资源就是我们上文提到过的相互排斥,各个进程间须要相互排斥方式对其进行共享资源,如打印机。临界区就是进程訪问临界资源的那段代码。

       P?

V? PV?

P操作:使S=S-1。若S>=0,则该进程继续运行,否则该进程排入等待队列。

V操作:使S=S+1,若S>0,唤醒等待队列中的一个进程。

PV操作:解决相互排斥和同步的问题。这样理解起来,非常费解。也不知道是怎么个意思。我们还是从生活着手,看看PV是怎样操作。

        生活中的PV操作

   生产者--消费者问题

首先我们来看以下一张图

这是一个著名的同步问题。尽管生产者进程和消费者进程都是异步方式执行的,但它们之间必须保持同步,即不同意消费者进程到一个空缓冲区去取产品。也不同意生产者进程向一个已装满产品且尚未被取走的缓冲区中投放产品。这是一个单缓冲区情况。那么这个单缓冲区的PV操作,应该是如何的呢?我们来看看:

我们来分析一下这个流程,前提是S1初值为1,S2初值为0。我们须要明确P操作减1,V操作加1,然后这个分析就变得没有那么困难了,我们先对初值进行一下说明:

a、我们把S1的初值设为1:是说明缓冲区另一个空间能够使用,对于生产者而言。每个缓冲区的一个空间就是一个资源,也就是说,一開始执行的时候,就同意生产者投放一个产品到缓冲区。

b、然后投放到缓冲区之后,我们来看消费者进程。P(S2):首先我们要进程一个推断。推断缓冲区中是否有产品,对消费者而言,缓冲区中有产品,就代表有一个资源能够使用。可是最初状态那个缓冲区中是没有资源的。所以S2的初值应该是为0。我们刚才都提到了资源的问题,就是信号量的一个值应该是表示资源的数量,可是就消费者和生产者而言,对于他们的资源是不同的,概念是不同的,生产者:缓冲区有多少个空格,就有多少个资源。而对消费者来说。缓冲区有多少个满的格。就有多少个资源。是刚好是相反,所以当消费者从缓冲区取出一个产品之后。对于生产者而已。就多了一个资源。

关于这个进程。我们能够这样来理解:

1、生产者:P(S1),那么P(S1)。S1=S1-1。得到P(S1=0)这个进程还能进行,那么生产者把一个产品投放到缓冲区。

2、V(S2)。S2=S2+1,S2初值为0。所以S2=S2+1>0,那么就激活了P(S2)。那么消费者就能取出一个产品。

3、消费产品:消费产品之前。另一个V(S1),就激活了P(S1),让生产者继续投放产品到缓冲区。这是单缓冲区分析。

我们接下来看一个相对来说,有点复杂一点点的--多缓冲区的PV操作,对照我们的单缓冲区的PV操作,我们还是来分析生产者和消费者的问题:

相应的PV操作例如以下图

有一点差别,就是要引用相互排斥的概念,由于缓冲区是一个临界资源。它始终仅仅能有一个进程对其进行操作。所以我们就能够用一个相互排斥信号量来完毕这一点,所以当某一个进程要使用到缓冲区之前。我们就进行下面推断,推断这个缓冲区如今是不是空暇呢?是不是有生产者或者消费者的进程在使用这个这个缓冲区呢?假设有,mute的初值为1,当有人使用这个缓冲区的时候,这个mute的值就由1变为0,这时,第二个进程向再来操作这个缓冲区,就不可能了,就会被堵塞。

公交车司机与售票员的问题:

         

我们来分析这个过程。我们把S1和S2的初值都设为0。我们来分析分析:

1、P(S1):S1=S1-1=-1,那么司机进程就被暂停。等会售票员进程,售票员关车门。

2、V(S1):S1=S1+1=0,激活了司机进程,那么司机就開始启动车辆、正常行驶、到站停车,当然售票员也 有可能同一时候在售票。

3、P(S2):S2=S2-1,售票员在售票之后的进程就被暂停。等待司机进程。这样就避免了售票员售票之后就开车门了。

由于这是不同意的。

4、V(S2):S2=S2+1,司机到站停车之后,就激活了售票员P(S2)的进程,那么售票员就进程 开车门、上下客的操作。那么这个进程就完毕了。

小编寄语:该博文小编主要浅显的讲述了一下PV操作的有关知识,分别三个方面对PV操作进行相关阐述,首先是概念。包含同步和相互排斥的概念,其次是什么是PV操作。最后。从生活入手,解说了两个PV操作的样例,生产者消费者问题和公交车司机和售票员的问题。另一个样例就是上次米老师上课提到的12306售票系统和顾客之间的关系。也是PV操作的一个非常好的样例典型。

这些样例都是我们生活中实实在在存在的。理解起来比較easy。也比較easy接受,软考之路,未完待续......

时间: 06-21

软考之路--从生活着手,看PV怎样操作的相关文章

软考之路--从生活着手,看PV如何操作

PV操作,是软考当中一个很重要的考点,一听到这个名词,顿时赶脚高大上有么有,在软考的历年试题中,也不乏PV操作的身影,老师也对PV操作进行了一次讲课,那时年少,听得稀里糊涂,也不是很理解,在小编的理解当中,PV操作与信号量的处理相关,P表示通过的意思,V表示释放的意思.做过几套软考试题,看过软考视频,对PV操作有了一点傻傻的理解,PV操作属于操作系统方面的知识,在前面的博文中,小编介绍过进程和存储,这篇博文,小编主要和大家来学习一下PV操作的相关知识,小编会循着下面这张图的脉络,一一介绍,首先,

软考之路--用文字记录这个美丽的进程

进程,百度百科对她这样进行阐述,进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动.它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元.,在小编的理解世界中,进程就是一段程序的执行过程,就好比中午要去食堂吃饭,从十一教走到中快食堂的路上的这个过程,就是进程,纯属小编的个人傻傻的理解,有不同想法的小伙伴欢迎讨论交流,这篇博文,小编主要来讲解一下进程的相关知识,如下图所示,小编会根据下图的框架,进行一一讲解,用文字记录这个美丽的进程......

我的软考之路(七)——数据结构与算法(5)之查找

上篇博文我重点介绍了八大内部排序,这篇博文(数据结构与算法的最后一课)重点介绍查找,我们依旧沿用上篇博文的风格,先简单介绍,再以例子重点讲解. 下面我们开始今天的旅行,首先祝你旅行愉快,呵呵. 静态查找 若查找目的是为了查询某个特定的数据是否在表中或检索某个特定数据的各种属性,则此类查找表为静态查找表. 1.顺序查找 基本原理:从表一端开始逐个和关键字进行比较,若找到一个记录和给定值相等,则查找成功,反之失败.再简单点就是,一个一个的比大小,看看是否相等. 例子: 顺序查找更适合于顺序存储结构和

软考之路--开始的开始,我们都是孩子

为了软考,奋力一搏,没钱.没人脉.没背景,在人人自危的竞争中,要靠自己的真实力,这次考试我们积极备考,不打无准备之战,软考的目的,不仅仅是为了软考通过这么简单,在软考的背后还隐藏着一个古老的秘密,那就是为了学习知识,在个人重构,机房合作,牛腩新闻发布系统等学习中,小伙伴们有没有这样的疑问,出现了很多问题,解决了,但是具体的原理自己并不是很理解,这个时候,软考来了,驾着五彩的云霞,翩翩来到你眼前,解决我们计算机体系知识不全的问题.在面临自考,等级考,软考,计算机学习,英语学习等犹如冰糖葫芦的串儿的

软考之路--计算机背后的故事

文法:1.法制:法规. 2.文章的作法. 3.语法.语言的结构方式.包括词的构成和变化﹐词组和句子的组织.文法即文章的书写法规,一般用来指以文字.词语.短句.句子的编排而组成的完整语句和文章的合理性组织.这个是我们小时候接触过的关于文法的概念,那个时候的文法总是会和主语,宾语,谓语等联系在一起. 二十年过去了,今天她再次出现在我面前,还是一样的眼神,藏在记忆深处的"文法"跟眼前的这个"她"有什么不一样呢?在计算机科学中,文法是编译原理的基础,是描述一门程序设计语言和

软考之路(八)--- 大总结

软考考试伴随着24号完成了,但是学习才真正的开始,从整个准备软考过程,到考完,整体上来说时间对于自己来说还算是充裕的,收获是非常大的,不了解.不会的.模糊的知识越学发现越多啊,当然这期间的得与失,总结总结为Java的学习起到一个促进的作用. 自考PK软考PK专业课 非常重要的是自考的科目这次全部的通过,整个自考的过程对于非计算机系的我来说,算是极大程度上补充了很多计算机相关方面的知识,自考顺利成章的到软考,当看到软考的内容之后,心里多少有些底了,第一感觉:自考中大部分都学习过,解决了不怕不知道就

我的软考之路(九)——总结篇

经过两个月的备战,软考总算结束了.软考虽然结束了,但是还需要简单的总结一下得与失.我从时间安排,到讲课做真题简单的回顾一下软考的整个过程. 时间安排: 对于时间的安排,整个小组成员每个人都有自己的看法,我就不在这里吐槽了.对于我来说,时间安排有点仓促,看书的时间是拿晚上的休息时间补过来的.看书让我将课本的概念性的知识简单的过了一遍,即补充了当初学习的不足,也恶补一下基本知识,不管对于软考,还是对于后面的继续学习都是有帮助的. 时间安排,没有什么合理与不合理.以松散的状态完成一项任务的时间是合理的

我的软考之路(五)——数据结构与算法(3)之图

图跟树一样,也是非线性结构,咋看起来有点复杂,其实它很简单.树具有层次关系,上层元素可以与下一个多个元素连接,但是只能和上层的一个元素连接.在图结构中,节点间的连接是任意的,任何一个元素都可以与其他元素连接. 图相对而言很简单,我们只介绍的图的遍历和最小生成树,现在我们开始. 遍历 1.概念 从图中某一个顶点出发,访问图中的每一个结点,并要求只能访问一次,不能重复访问. 2.方法 (1)广度优先遍历 基本思想:首先访问顶点,再访问顶点的全部未访问的邻结点,再访问邻结点的所有结点即可(类似树的层次

软考之路(6)——设计模式之工厂系列

mnesia在频繁操作数据的过程可能会报错:** WARNING ** Mnesia is overloaded: {dump_log, write_threshold},可以看出,mnesia应该是过载了.这个警告在mnesia dump操作会发生这个问题,表类型为disc_only_copies .disc_copies都可能会发生. 如何重现这个问题,例子的场景是多个进程同时在不断地mnesia:dirty_write/2 mnesia过载分析 1.抛出警告是在mnesia 增加dump