PV操作与信号灯例子
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() 两个不停循环的函数
本文转自网友 源地址:http://blog.sina.com.cn/s/blog_5f430c7e0100d1qj.html
PV操作与信号灯例子相关推荐
- PV操作与信号灯及例子
PV操作与信号灯的处理相关,P表示通过的意思,V表示释放的意思. 1962年,狄克斯特拉离开数学中心进入位于荷兰南部的艾恩德霍芬技术大学(Eindhoven Technical University) ...
- PV操作与信号灯及例子+三大操作系统共同点的线程通信
看待技术问题要瞄准其本质,不管是Linux.VxWorks还是WIN32,其涉及到多线程的部分都是那些内容,无非就是线程控制和线程通信,它们的许多函数只是名称不同,其实质含义是等价的,下面是三大操作系 ...
- 最经典的关于PV操作的解释说明
不知道各位有没有感觉,计算机方面的考试,操作系统那块似乎PV操作经常考,这一方面说明它的重要,另一方面也说明它不容易理解,出错的人很多,下面就举几个经典的例子来帮助大家学习,也与诸位同进步. 一,PV ...
- 城市道路十字路口的通行规则是“红灯停,绿灯行”,请用信号量和PV操作描述交通信号灯和汽车通过十字路口的同步行为
城市道路十字路口的通行规则是"红灯停,绿灯行",请用信号量和PV操作描述交通信号灯和汽车通过十字路口的同步行为 1)识别那些可以作为进程 信号灯,汽车 2)其次识临界资源,即进程共 ...
- 操作系统PV操作的几个例子
操作系统中PV操作的几个例子 题1:面包师有很多面包,由n个销售人员推销.每个顾客进店后取一个号,并且等待叫号,当一个销售人员空闲下来时,就叫下一个号.试设计一个使销售人员和顾客同步的算法. 思路:顾 ...
- linux 信号灯的PV操作
目录 一 回顾 二 PV操作的意思 三 代码的实现思路和用到的函数 1 第一列函数代码和解析 2 在前面基础上加上二三列 3 整合全部代码 如果读不出 一 回顾 用 semget semctl 函数分 ...
- 操作系统pv操作学习总结
PV操作 PV操作与信号量的处理相关,P表示通过的意思,V表示释放的意思. 目录 1 简介 2 详细资料 3 解释 ▪ 信号量的概念 ▪ 典型理解偏差 简介 1962年,狄克斯特拉离开数学中心进入位于 ...
- v操作就是计算机结构中的什么作用,PV操作
PV操作是一种实现进程互斥与同步的有效方法.PV操作与信号量的处理相关,P表示通过的意思,V表示释放的意思. PV操作是典型的同步机制之一.用一个信号量与一个消息联系起来,当信号量的值为0时,表示期望 ...
- 38.什么是PV操作
在37信号量里面笼统讲过了PV操作.总结起来就是PV操作是跟信号灯一起实现线程同步的机制.分为P操作和V操作.只能以原语形式实现. P操作是申请资源.在进入临界区时实现.是改变信号灯的信号值,一般是做 ...
最新文章
- Cortex-M0 LPC11U 中断向量
- 教你用Python解决非平衡数据问题(附代码)
- 艾伟:memcached全面剖析–3.memcached的删除机制和发展方向
- c 全局变量多线程调用_c语言局部变量 静态局部变量 全局变量与静态全局变量...
- Elasticsearch之mapping映射入门
- Sizzle.selectors.match/leftMatch
- python头文件库_跟老齐学Python之不要红头文件(1)
- 凸优化第二章凸集 2.4 广义不等式
- SpringBoot系列(10):SpringBoot中的全局异常处理
- 8.PMAC上位机-VC编程环境配置
- SEM测试样品减薄及表面复型
- 数字图像/视频处理MATLAB基本操作
- 秘密:从程序员到领导者的微妙之处
- JS clientX、offsetX、pageX、screenX
- outlook2016关闭时最小化到任务栏的完美解决方法
- JEECG Excel 工具类
- 使用深度学习的单一图像超分辨率
- 学计算机学文学理,大学期末特惨专业排行榜!
- 专业专注、以客户为中心-是我们的服务理念
- 关于淘宝的数据库系统
热门文章
- 思科网络设备终端和Telnet远程登录配置
- STM32+ESP8266连接电脑Qt网络上位机——QT篇
- sentinel限流相关指标统计源码分析
- RecyclerView状态异常Cannot call this method while RecyclerView is computing a layout or scrolling
- 微信公共号推广技巧、快速涨粉丝的7大技巧总结
- 深度linux系统初始化,deepin官方论坛-深度科技官网旗下网站
- Mysql Order By 与 Group By
- 执行sudo apt-get update时,不再含有release文件问题解决
- AJ-Report 初学(入门教程)
- python爬虫课设-爬取3000条数据并做数据可视化