软考之PV操作(同步)
这几天,陆续有那么三两个同学跟我讨论了一下关于软考上的PV操作的题,吾虽不才,但还是把同学们讲通了,在此,特分享一下自己的思路和想法,愿对大家有点帮助!
下面,我们就通过自己做过的试卷上两道题来分析:
N1:
相信大家对这道题不陌生吧,有几个人栽在这上面了?首先这是一个同步问题!
现在我们把它转化一下:
其实吧,很多人是栽在这上面了,因为他们把S1,S2,S3,S4这几个信号量和P1,P2,P3,P4过分的联系起来了,想成是谁释放出来,通知谁的!其实思路是对的,但是核心弄错了,其实,S1,S2,S3,S4和P1,P2,P3,P4在这个标号方面是没有联系的,他只是表示了一个顺序!
接下来,在们就按照这张图分析一下:
1. 首先,P1执行完了之后,会释放出两个信号量来,通知P2、P3,释放的是哪两个信号量呢?就是从1开 始标号的信号量,所以是S1,S2. (V(S1)V(S2))
2. P2在开始执行之前,首先要判断一下由P1传过来的信号量到位没有?(P(S1))
3. P2执行完了之后,会释放出一个信号量来通知P3可以开始了(V(S3))
4. P3开始之前,由图知道,P3要接收到两个信号才会开始,分别是P1和P2,所以,他就会判断一下来自P2 的信号量S3和来自P1的信号量S2到位没有?(P(S2)P(S3))
5. P3执行过后,会释放出一个信号量S4来通知P4可以开始了.(V(S4))
6. P4在执行之前,先判断来自P3的信号量到位没有?(P(S4))
7. P4执行,本题结束
如果这样一步步去分析,很简单,也很明了.
N2:
有了上面的经验,一看,这个so简单!
来,大家一起分析这张图:
1. 首先,P1执行完之后,会释放出一个信号量来通知P2可以开始。(V(S1))
2. P2开始执行之前,先判断来自P1的信号到位没有?(P(S1))
3. P2执行完了之后,会发出两个信号来分别通知P4和P3。(V(S3)V(S2))
4. 在P3开始执行之前,判断来自P2的信号通知到位没有。(P(S2))
5. P3执行完成了之后,释放信号S4去通知P5,P3已完成,给你资源。(V(S4))
6. P4,同P3
7. P5,大家自己想吧!
然后,这样类型的题基本上就解决了。希望对大家有所帮助! 软考加油!
软考之PV操作(同步)的更多相关文章
- 软测试综述——PV操作
在操作系统中,进程之间常常会存在相互排斥(都须要共享独占性资源时)和同步(完毕异步的两个进程的协作)两种关系.而信号量和PV操作完美有效的处理了这两种情况. 相互排斥:就好比过独木桥,一 ...
- 软考之路--从生活着手,看PV如何操作
PV操作,是软考当中一个很重要的考点,一听到这个名词,顿时赶脚高大上有么有,在软考的历年试题中,也不乏PV操作的身影,老师也对PV操作进行了一次讲课,那时年少,听得稀里糊涂,也不是很理解,在小编的理解 ...
- 软考之路--从生活着手,看PV怎样操作
PV操作.是软考其中一个非常重要的考点,一听到这个名词,顿时赶脚高大上有么有,在软考的历年试题中,也不乏PV操作的身影,老师也对PV操作进行了一次讲课,那时年少.听得稀里糊涂,也不是非常理解,在小编的 ...
- 多线程同步内功心法——PV操作上(未完待续。。。)
阅读本篇之前推荐阅读以下姊妹篇: <秒杀多线程第四篇一个经典的多线程同步问题> <秒杀多线程第五篇经典线程同步关键段CS> <秒杀多线程第六篇经典线程同步事件Event& ...
- 信号量和PV操作写出Bakery算法的同步程序
面包店烹制面包及蛋糕,由n个销售员卖出.当有顾客进店购买面包或蛋糕时,应先在取号机上取号,然后等待叫号,若有销售员空闲时便叫下一号,试用信号量和PV操作写出Bakery算法的同步程序. 设计要求 1) ...
- 多线程面试题系列(12):多线程同步内功心法——PV操作上
上面的文章讲解了在Windows系统下实现多线程同步互斥的方法,为了提高在实际问题中分析和思考多个线程之间同步互斥问题的能力,接下来将讲解PV操作,这也是操作系统中的重点和难点.本文将会先简要介绍下P ...
- 【转】进程同步之信号量机制(pv操作)及三个经典同步问题
原文地址:http://blog.csdn.net/speedme/article/details/17597373 上篇博客中(进程同步之临界区域问题及Peterson算法),我们对临界区,临界资源 ...
- 转---秒杀多线程第十二篇 多线程同步内功心法——PV操作上 (续)
PV操作的核心就是 PV操作可以同时起到同步与互斥的作用. 1.同步就是通过P操作获取信号量,V操作释放信号量来进行. 2.互斥其实就是,同时操作P操作,结束后进行V操作即可做到. Java上实现PV ...
- 【av68676164(p25-p30)】同步和P-V操作
4.5 同步和P-V操作 4.5.1 同步和互斥的概念 进程的互斥关系 例子 进程的互斥关系 多个进程由于共享了独占性资源,必须协调个进程对资源的存取顺序:确保没有两个或以上的进程同时进行存取操作. ...
随机推荐
- jquery UI 弹出框
2015-07-17 11:04:38 <div id="reg"></div> <script type="text/javascript ...
- FastReport 使用技巧篇
使用技巧篇 1.FastReport中如果访问报表中的对象? 可以使用FindObject方法. TfrxMemoView(frxReport1.FindObject('memo ...
- FastReport报表控件使用技巧总结
FastReport报表控件使用技巧总结 1.FastReport中如何访问报表中的对象? 可以使用FindObject方法. TfrxMemoView(frxReport1.FindObject(' ...
- Java for LeetCode 211 Add and Search Word - Data structure design
Design a data structure that supports the following two operations: void addWord(word)bool search(wo ...
- 【Android】如何将eclipse工程导入studio
1.eclipse工程右键->export->Generate Gradle build files 2.studio->New->import project->选择工 ...
- 基于NHibernate的开发框架的设计
上次的 NHibernate的Session管理策略和NHibernateHelper 发布并提供下载,给NHibernate刚入门的同学们带来很多便利. 最近有同学在求NH的通用仓储,正好我最近也设 ...
- codeforces 496A. Minimum Difficulty 解题报告
题目链接:http://codeforces.com/contest/496/problem/A 题目意思:给出有 n 个数的序列,然后通过删除除了第一个数和最后一个数的任意一个位置的数,求出删除这个 ...
- 【mongo】pymongo通过_id删除数据
来源:http://www.educity.cn/wenda/361741.html pymongo 根据 objectId _id 来删除数据想要删除数据,根据_id ,是最靠谱的,具体方法因为 _ ...
- bootstrap日期控件在火狐下的模态框中选择时间下拉菜单无效的解决办法
今天收到程序组提交的一个兼容BUG,在火狐中使用模态框加载日期控件时选择时间下拉菜单没有效果(不能点击),而在谷歌中却是好的, 排错思路:1,在当前页面主层放置一个时间控件,测试通过 2,在ajax加 ...
- 本地Yum
1. mkdir xxx #新建文件夹 (新建一个挂载需要的文件夹) 2.配置本地yum源(挂载光盘) 3.进入 yum.repos.d 4.ls (查看当前文件夹全部的文件) 并 mv 修改 除 ...