大家都说操作系统中的PV操作部分看不懂,确实我在专业课中学习这门课时,PV操作被列为书中的重点和难点,就是因为它不好理解。当时自己听完课也是一头雾水,到期末考试结束,也没弄明白这是怎么一回事,更没有意识到PV操作的重要性。米老师的一堂课,让我开始对它产生兴趣,于是才有了这篇博客。首先就来说说什么是PV操作吧!

什么是PV操作?

在说什么是PV操作前,首先讲讲它的历史(咱也像写书的人一样,上来先介绍它的历史和发展)

PV操作是有名的计算机科学家狄克斯特拉为了解决一类问题而创造的,例如:假如P1和P2是分别将数据送入缓冲B和从缓冲B读出数据的两个进程,为了防止这两个进程并发时产生错误,狄克斯特拉设计了一种同步机制叫“PV操作”。我相信,很多人都很纳闷为什么他会取名叫“PV”操作呢?其实这是狄克斯特拉用荷兰文定义的,因为在荷兰文中,“通过”叫passeren,“释放”叫vrijgeven,PV操作因此得名。这也是在计算机术语中不是用英语表达的极少数的例子之一。

说了那么多,那到底什么叫PV操作呢?PV操作有P操作和V操作组成,它们是两个不可中断的过程,也叫做原语。它是为了能够实现对于并发进程中临界区的管理要求。

为什么要有PV操作?

其实这个问题上面也说到了,是为了防止两个进程并发时产生错误。这里不得不说的就是,并发进程之间分为两种,一种就是有交互的,一种是无任何关联的

很简单,没有关联的并发进程是相互独立的,谁也不影响谁。但是交互的并发进程可就不一样了,因为他们是共享资源的,一个进程运行时,经常会由于自身或外界的原因而被中端,且断点是不固定的。也就是说进程执行的相对速度不能由进程自己来控制,于是就会导致并发进程在共享资源的时出现与时间有关的错误

PV操作的使用

名词解释

临界区:我们把并发进程中与共享变量有关的程序段称为临界区。

信号量S:信号量的值与相应资源的使用情况有关。当它的值大于0时,表示当前可用资源的数量;当它的值小于0时,其绝对值表示等待使用该资源的进程个数。

P操作和V操作

P操作P(S):将信号量S减去1,若结果小于0,则把调用P(S)的进程置成等待信号量S的状态。即为请求资源。

V操作V(S):将信号量S加上1,若结果不大于0,则释放一个等待信号量S的进程。即为释放资源。

表示过程如下:

Procedure P (Var S:Semaphore)

begin

S:=S - 1;

if S<0 then W(S)

end; { P }

Procedure V (Var S:Semaphore)

begin

S:=S + 1;

if S< = 0 then R(S)

end; { V }

注解:

       W(S):表示把调用P(S)的进程置成等待信号量S的状态。

R(S):表示释放一个等待信号量S的进程。

正如老师上课时所举的父亲给孩子吃苹果的例子一样,假如一个盘子只能放一个苹果,父亲往盘子里放了一个苹果。如果儿子吃了(V操作),父亲才可以接着放(P操作);如果儿子不吃,那父亲就不能放苹果,只能等着。

进程互斥和进程同步

进程互斥

进程的互斥是指当有若干个进程都要使用某一共享资源时,任何时刻最多只允许一个进程去使用该资源,其他要使用它的进程必须等待,直到该资源的占用着释放了该资源。

例如:两个并发进程都要使用共享的计数器Count。

    begincount:integer;S:semaphore;count:= 0 //计数器count初始值为0S:= 1 //信号量初始值为1cobegin//进程PINprocess PINR1:integer;beginP(S);  //执行P操作R1:= count;R1:= R1 + 1;count:= R1;V(S)  //执行V操作end;//进程POUTprocess POUTR2:integer;beginP(S);  //执行P操作R2:= count;R2:= R2 + 1;count:= R2;V(S)  //执行V操作end;coendend;

进程同步

进程的同步是指在并发进程之间存在这一种制约关系,一个进程依赖另一个进程的消息,当一个进程没有得到另一个进程的消息时应等待,直到消息到达才被唤醒。

例如:一个司机与售票员的例子,在公共汽车上,为保证乘客的安全,司机和售票员应协调工作:停车后才能开门,关车门后才能行车。用PV操作来实现他们之间的协调。
       S1:是否允许司机启动汽车的变量
       S2:是否允许售票员开门的变量

driver()//司机进程
{while (1)//不停地循环{ P(S1);//请求启动汽车启动汽车;正常行车;到站停车;V(S2); //释放开门变量,相当于通知售票员可以开门}
}
busman()//售票员进程
{while(1){关车门;V(S1);//释放开车变量,相当于通知司机可以开车售票P(S2);//请求开门开车门;上下乘客;}
}

总结:

PV操作是操作系统中的重点和难点,不过如果细细分析,知道为什么要使用它以后。其实发现,PV操作也不过如此。并发进程间可以通过PV操作交换信息实现进程的互斥和同步,因此PV操作可以看做是进程间的一种低级的通信方式,只交换了少量的信息。但它解决了进程间对于资源共享而产生的与时间有关的错误。

【操作系统】——PV操作相关推荐

  1. 操作系统pv操作学习总结

    PV操作 PV操作与信号量的处理相关,P表示通过的意思,V表示释放的意思. 目录 1 简介 2 详细资料 3 解释 ▪ 信号量的概念 ▪ 典型理解偏差 简介 1962年,狄克斯特拉离开数学中心进入位于 ...

  2. 计算机操作系统pv实验,计算机操作系统PV操作例题.doc

    计算机操作系统PV操作例题 问题1 一个司机与售票员的例子 在公共汽车上,为保证乘客的安全,司机和售票员应协调工作: 停车后才能开门,关车门后才能行车.用PV操作来实现他们之间的协调. S1:是否允许 ...

  3. 操作系统-PV操作-独木桥问题

    操作系统-PV操作-独木桥问题 前言 问题描述 解决思路 伪代码实现 改造题型 解决思路 伪代码实现 总结 前言 在操作系统中,使用pv操作实现进程的同步和互斥是进程管理的重要内容.pv操作不仅是本科 ...

  4. 操作系统-PV操作-理发师问题

    操作系统-PV操作-理发师问题 前言 问题描述 解决思路 伪代码 总结 前言 hello,大家好,使用pv操作来实现进程的同步和互斥是我们本科授课的重点,同时也是研究生入学考试的重点考察题型.今天给大 ...

  5. 操作系统——PV操作

    PV操作概念:操作系统中的一种同步机制,实现对于并发进程中临界区的管理. 并发进程分为两种: ①无交互的并发进程:每个进程是相互独立的,谁也不影响谁,基本不会用到PV操作. ②有交互的并发进程:多个进 ...

  6. 操作系统中pv操作用c语言,操作系统-pv操作.doc

    <现代操作系统>课程设计 第 PAGE 5 页 共 NUMPAGES 20 页 课程设计报告(论文) 报告(论文)题目: PV操作解决生产者-消费者问题 作者所在系部: 计算机科学与工程系 ...

  7. 操作系统PV操作的几个例子

    操作系统中PV操作的几个例子 题1:面包师有很多面包,由n个销售人员推销.每个顾客进店后取一个号,并且等待叫号,当一个销售人员空闲下来时,就叫下一个号.试设计一个使销售人员和顾客同步的算法. 思路:顾 ...

  8. 难懂的操作系统--PV操作

    PV操作概念:操作系统中的一种同步机制,实现对于并发进程中临界区的管理. 并发进程分为两种: ①无交互的并发进程:每个进程是相互独立的,谁也不影响谁,基本不会用到PV操作. ②有交互的并发进程:多个进 ...

  9. 操作系统 | PV操作练习题汇总(一)

    前言 这篇文章中整理了一些我们上课时老师给我们布置的一些PV操作的练习题,希望对大家有用处! 信号量有整型信号量(int)和记录型信号量(Semaphore)等,但是我们老师不是对这个很区分,所以这里 ...

  10. 操作系统 | PV操作七大经典问题 生产者消费者 读者写者 哲学家进餐 理发师理发睡觉 和尚打水 吸烟者 吃水果

    一.生产者消费者问题 生产者消费者问题(英语:Producer-consumer problem),也称有限缓冲问题(英语:Bounded-buffer problem),是一个多线程同步问题的经典案 ...

最新文章

  1. 熬夜与不熬夜,10年后差距到底有多大?惊了!
  2. SAP RETAIL 供应商寄售库存的UB STO
  3. dataTables-使用详细说明整理
  4. java执行mongodb语句_java下执行mongodb
  5. 如何测试 SAP OData的filter功能
  6. 用NSoup解析HTML
  7. .魔术方法、魔术常量
  8. 计算机图形学应用:java2d和3d_?硬核儿童节礼物:MIT学神、太极作者胡渊鸣送你一门计算机课程...
  9. SQL查找是否“存在“,别再count了!
  10. .Net Compact Framework 高级篇(2)-- 扩展SOAP应用
  11. 命令行Terminal增加proxy开关
  12. python暴力破解
  13. Java操作Excel表读取的数字变成科学计数法
  14. 编写函数,求字符串的长度
  15. 任强-京东智能云服务平台
  16. TokenGazer评级丨Storj:V3 升级方案带来更好前景,但仍面临技术和竞争上的挑战...
  17. 企查查接口php版本~
  18. 漫步奥格瑞玛 Portal Scene Manager
  19. Html5 Egret游戏开发 成语大挑战(六)游戏界面构建和设计
  20. 中科院计算所培训中心举办【人工智能的计算机工程】企业内部培训

热门文章

  1. 【如何在自己的宿舍有一台幽灵主机?】关于如何合理配置外网透穿和进行System服务的编写、安装,同时添加局域网唤醒等的一次实践。
  2. c语言程序设计实践课程,《C语言程序设计》实践课程标准.doc
  3. 小白零基础教学:用自助BI工具搭建领导驾驶舱
  4. 【大顶堆】最小的k个数
  5. 数风流人物,还看今朝
  6. 阿里巴巴开发手册(官方认定文档)
  7. 路由分配和pbx以及cti
  8. 如何学好iphone游戏开发
  9. 《三国演义》与结巴(jieba)的碰撞
  10. 华丽丽的旋转彩带效果