PV操作与信号灯的处理相关,P表示通过的意思,V表示释放的意思。
  1962年,狄克斯特拉离开数学中心进入位于荷兰南部的艾恩德霍芬技术大学(Eindhoven Technical University)任数学教授。在这里,他参加了X8计算机的开发,设计与实现了具有多道程序运行能力的操作系统——THE Multiprogramming System。THE是艾恩德霍芬技术大学的荷兰文Tchnische Hoogeschool Eindhov –en的词头缩写。狄克斯特拉在THE这个系统中所提出的一系统方法和技术奠定了计算机现代操作系统的基础,尤其是关于多层体系结构,顺序进程之间的同步和互斥机制这样一些重要的思想和概念都是狄克斯特拉在THE中首先提出并为以后的操作系统如UNIX等所采用的。
  为了在单处理机的情况下确定进程(process)能否占有处理机,狄克斯特拉将每个进程分为“就绪”(ready)、“运行”(running)和“阻塞”(blocking)三个工作状态。 由于在任一时刻最多只有一个进程可以使用处理机, 正占用着处理机的进程称为“运行”进程。 当某进程已具备了使用处理机的条件,而当前又没有处理机供其使用,则使该进程处于“就绪”状态。 当运行进程由于某种原因无法继续运行下去时,就停止其占用处理机,使之进入“阻塞”状态, 待造成其退出运行的条件解除,再进入“就绪”状态。而对系统中所有同时运行的进程,在一个进程访问共享数据时,另一个进程不访问该数据和互斥(mutually- exclusive,指两个进程不能同时在一个临界区中使用同一个可重复使用的资源,诸如读写缓冲区)两个关系,狄克斯特拉巧妙地利用火车运行控制系统中的“信号灯”(semaphore,或叫”信号量”)概念加以解决。
   所谓信号灯,实际上就是用来控制进程状态的一个代表某一资源的存储单元。例如,P1和P2是分别将数据送入缓冲B和从缓冲B读出数据的两个进程,为了防止这两个进程并发时产生错误,狄克斯特拉设计了一种同步机制叫“PV操作”,P操作和V操作是执行时不被打断的两个操作系统原语。 执行P操作P(S)时信号量S的值减1,若结果不为负则P(S)执行完毕,否则执行P操作的进程暂停以等待释放。 执行V操作V(S)时,S的值加1,若结果不大于0则释放一个因执行P(S)而等待的进程。对P1和P2可定义两个信号量S1和S2,初值分别为1和0。进程P1在向缓冲B送入数据前执行P操作P(S1),在送入数据后执行V操作V(S2)。进程P2在从缓冲B读取数据前先执行P操作P(S2),在读出数据后执行V操作V(S1)。当P1往缓冲B送入一数据后信号量S1之值变为0,在该数据读出后S1之值才又变为1,因此在前一数未读出前后一数不会送入,从而保证了P1和P2之间的同步。我国读者常常不明白这一同步机制为什么叫PV操作,原来这是狄克斯特拉用荷兰文定义的,因为在荷兰文中,通过叫passeren,释放叫vrijgeven,PV操作因此得名。这是在计算机术语中不是用英语表达的极少数的例子之一。
  大学操作系统 中的经典例子:
   P就是请求资源,V就是释放资源
  例如一个司机与售票员的例子
  在公共汽车上,为保证乘客的安全,司机和售票员应协调工作:
  停车后才能开门,关车门后才能行车。用PV操作来实现他们之间的协调。
  S1:是否允许司机启动汽车的变量
  S2:是否允许售票员开门的变量
   driver()//司机进程
  {
  while (1)//不停地循环
  {
  P(S1);//请求启动汽车
  启动汽车;
  正常行车;
  到站停车;
  V(S2); //释放开门变量,相当于通知售票员可以开门
  }
  }
   busman()//售票员进程
  {
   while(1)
  {
  关车门;
  V(S1);//释放开车变量,相当于通知司机可以开车
  售票
  P(S2);//请求开门
  开车门;
  上下乘客;
  }
  }
  注意:busman() driver() 两个不停循环的函数

转载于:https://blog.51cto.com/lijun050802/194178

PV操作与信号灯及例子相关推荐

  1. PV操作与信号灯及例子+三大操作系统共同点的线程通信

    看待技术问题要瞄准其本质,不管是Linux.VxWorks还是WIN32,其涉及到多线程的部分都是那些内容,无非就是线程控制和线程通信,它们的许多函数只是名称不同,其实质含义是等价的,下面是三大操作系 ...

  2. PV操作与信号灯例子

    PV操作与信号灯的处理相关,P表示通过的意思,V表示释放的意思. 1962年,狄克斯特拉离开数学中心进入位于荷兰南部的艾恩德霍芬技术大学(Eindhoven Technical University) ...

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

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

  4. 最经典的关于PV操作的解释说明

    不知道各位有没有感觉,计算机方面的考试,操作系统那块似乎PV操作经常考,这一方面说明它的重要,另一方面也说明它不容易理解,出错的人很多,下面就举几个经典的例子来帮助大家学习,也与诸位同进步. 一,PV ...

  5. 城市道路十字路口的通行规则是“红灯停,绿灯行”,请用信号量和PV操作描述交通信号灯和汽车通过十字路口的同步行为

    城市道路十字路口的通行规则是"红灯停,绿灯行",请用信号量和PV操作描述交通信号灯和汽车通过十字路口的同步行为 1)识别那些可以作为进程 信号灯,汽车 2)其次识临界资源,即进程共 ...

  6. linux 信号灯的PV操作

    目录 一 回顾 二 PV操作的意思 三 代码的实现思路和用到的函数 1 第一列函数代码和解析 2 在前面基础上加上二三列 3 整合全部代码 如果读不出 一 回顾 用 semget semctl 函数分 ...

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

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

  8. v操作就是计算机结构中的什么作用,PV操作

    PV操作是一种实现进程互斥与同步的有效方法.PV操作与信号量的处理相关,P表示通过的意思,V表示释放的意思. PV操作是典型的同步机制之一.用一个信号量与一个消息联系起来,当信号量的值为0时,表示期望 ...

  9. 38.什么是PV操作

    在37信号量里面笼统讲过了PV操作.总结起来就是PV操作是跟信号灯一起实现线程同步的机制.分为P操作和V操作.只能以原语形式实现. P操作是申请资源.在进入临界区时实现.是改变信号灯的信号值,一般是做 ...

最新文章

  1. 颠覆性技术丨无人驾驶
  2. 启动mysql服务是报错找不到pid_mysql报错 The server quit without updating PID file
  3. C语言 | 卡尔曼滤波器算法1——应用介绍(Matlab simulink)
  4. 结对-结对编项目贪吃蛇-设计文档
  5. 主成分分析和因子分析十大不同点
  6. javascript高级程序设计---js事件思维导图
  7. 恒大和小米双双否认外界谣言,此前有人宣称小米将接手恒大造车
  8. 电商页面设计需要的素材模板|好的模板就是好的参考
  9. 最近使用mysql遇到的几个问题
  10. JavaWeb开发Filter学习
  11. 64脚和小于64脚的STM32进行AD时注意,参照电源处理方法(转)
  12. MySQL所有常用语法大全
  13. 招商银行软件开发笔试知识汇总
  14. Maven实战 Item4 -- Maven核心概念
  15. 不用等微信官方!微信圣诞帽,我用Python就能搞定!
  16. android 自定义锁屏凌驾于系统锁屏之上
  17. mapreduce推测执行算法及原理
  18. c++将文件保存至txt文件的方法
  19. python中def fun()是什么意思_python学习函数
  20. js 根据中文获取拼音首字母

热门文章

  1. openwrt修改logo
  2. 计算机地图制图原理与算法,计算机地图制图原理与算法基础.ppt
  3. qq聊天纪录被删除应该如何恢复
  4. 文件服务器磁盘配额管理,文件服务器磁盘配额的管理.doc
  5. 【VESC】一.配置开发环境、烧录固件
  6. String的intern方法
  7. 名帖222 赵孟頫 行书《行书三段卷》
  8. 营收同比增长13.55%  领跑ICT的中天科技为何跌了?
  9. 旧文 2012.12.07 关于和赛扶
  10. Pycharm中Qt designer的配置,.ui文件转.py文件,运行.py