引言:P,V操作必须成对出现,P可简单的理解为消耗一种资源,V可简单的理解为增加一种资源。

1.用信号量实现互斥

semaphore S=1;//定义一个互斥信号量

P1(){

P(S);//加锁

进入临界区

V(S);//解锁

}

2.用信号量实现同步(先发生的V在前后发生的P在前)

semaphore S=0;

P1(){                        P2(){    P(S);y ;}

x;

V(S);

}

经典同步问题

1.生产者消费者问题

一组生产者和消费者共享大小为n的缓冲区,只有缓冲区不空时消费者才能从中取出产品,只有缓冲区不满时生产者才能往缓冲区放入产品。(缓冲区同时只允许一个生产者,或一个消费者从中增加或取出一个产品)。

问题分析:首先有两个进程,不妨设进程P1为生产者,P2为消费者。P1生产产品,检查缓冲区是否已满,放入产品。P2检查缓冲区是否有产品,取出产品。

伪代码:

semaphore        mutex=1;//设置一个互斥信号量

semaphore       empty=n;//空闲缓冲区总量

semaphore        full=0;//产品数量

P1(){

while(1){

生产产品;

P(empty);//消耗一个空闲缓冲区

P(mutex);//实现互斥·访问缓冲区

放入缓冲区;

V(mutex);

V(full);//增加缓冲区一个产品的数量

}

}

P2(){

while(1){

P(full);//缓冲区产品减一

P(mutex);//实现互斥·访问缓冲区

取走一个产品;

V(mutex);

V(empty);//增加空闲缓冲区的数量

}

}

2.多生产者多消费者问题

桌子上有一个盘子,一次只能放一个水果,爸爸往盘子中放苹果,妈妈往盘子中放橘子。儿子只能从盘子中拿走橘子并吃掉,女儿只能从盘子中拿走苹果并吃掉。(只有盘子为空时爸爸妈妈才能放入水果,只有盘子里有自己需要的水果时,儿子女儿才能拿走)。

问题分析:一共四个进程,爸爸,妈妈,儿子,女儿,爸爸往盘子中放苹果,妈妈往盘子中放橘子,儿子从盘子中拿橘子,女儿从盘子中拿苹果

伪代码

semaphore plate=1,apple=0,orange=0;

dad(){

while(1){

p(plate);//互斥访问盘子

放苹果

v(apple);//允许取苹果

}

}

mom(){

while(1){

p(plate);

放橘子;

v(orange);

}

}

son(){

while(1){

p(orange);//取橘子

取走橘子

v(plate);//释放盘子(解锁)

吃掉;

}

}

daughter(){

while(1){

v(apple);

取走一个苹果;

v(plate);

吃掉;

}

}

操作系统P,V操作大总结(包含例题)上篇相关推荐

  1. 操作系统P/V操作(V操作中的典型理解偏差)

    信号量是操作系统提供的⼀种协调共享资源访问的⽅法. 通常信号量表示资源的数量,对应的变量是⼀个整型( sem )变量. 另外,还有两个原⼦操作的系统调⽤函数来控制信号量的,分别是: P 操作:将 se ...

  2. 操作系统信号量与P、V操作 初步认识整理

    初步接触,若有不足之处,请各位不吝赐教.谢谢! 首先介绍:信号量 信号量包括整型信号量.结构型信号量.二值信号量. ① 整型信号量 最初,将信号量定义为一个共享的整型量,它保存可供使用的唤醒数目.如果 ...

  3. 操作系统-------用P,V操作解决生产者和消费者问题(详解!!!)

    问题:         系统中有一组生产者进程和一组消费者进程,生产者每次生产一个产品放入缓冲区,消费者每次从缓冲区取出一个产品并使用(注:这里的产品可以理解成某种数据). 条件:生产者.消费者共享一 ...

  4. 【操作系统】PV 操作经典例题---三个进程之间的同步

    问题: 总共有 读入.执行.打印 三个进程,试用PV操作描述读入B1打印B2的同步过程. 问题解读: 这个问题就是说了这样一件事:一个输入B1,被操作之后,成为B2,将B2打印.怎样用PV操作来说这件 ...

  5. C语言实现操作系统简单的P V操作

    C语言实现操作系统简单的P V操作 简单说明 cpp的文件,C语言的语法 代码如下 实现效果 简单说明 cpp的文件,C语言的语法 代码如下 #include "stdio.h" ...

  6. 图解操作系统之p,v操作

    操作系统之p,v操作 计算机的核心是CPU,它承担了所有的计算任务:而操作系统是计算机的管理者,它负责任务的调度.资源的分配和管理,统领整个计算机硬件. 一.操作系统的相关定义 1.操作系统的定义: ...

  7. Atittit HDFS hadoop 大数据文件系统java使用总结 目录 1. 操作系统,进行操作 1 2. Hdfs 类似nfs ftp远程分布式文件服务 2 3. 启动hdfs服务start

    Atittit HDFS hadoop 大数据文件系统java使用总结 目录 1. 操作系统,进行操作 1 2. Hdfs 类似nfs ftp远程分布式文件服务 2 3. 启动hdfs服务start- ...

  8. 操作系统中的信号量及P、V操作

    系统中应该有解决进程同步的一种专门机制.实际上,同步是并发进程之间在执行时序 上的一种相互制约的关系.进程互斥的实质也是同步,可把进程互斥看作是一种特殊的进程同步. 同步机制应该满足如下一些基本要求. ...

  9. 操作系统P、V操作,司机-售票员问题(c++实现)

    问题描述及信号量设定 设公共汽车上,司机和售票员的活动分别是: 司机:启动车辆–正常行驶–到站停车: 售票员:关车门–售票–开车门: 信号量(semaphore)的数据结构为一个值和一个指针,指针指向 ...

最新文章

  1. mysql ef vs
  2. webp转换gif_右键转换文件格式
  3. [leetcode] N-Queens II
  4. vplex实施手册_VPLEX 运维及异构存储双活使用实例技术 | 在线答疑
  5. mysql中sql语句有if_Sql中的if函数学习
  6. python中len和range函数_for循环len函数和range函数的运用
  7. 计算机制作贺卡教案,制作贺卡教案
  8. 开坑,写点Polymer 1.0 教程第2篇(上)——hello world篇
  9. 世界地图矢量文件shp格式获取/下载方法
  10. java rxtx_Java使用开源Rxtx实现串口通讯
  11. Psychological Bulletin:社会认知的层次模型
  12. [并发并行]_[pthread]_[使用线程池并发复制文件]
  13. javascript中map和filter的区别
  14. GIS(地理信息系统)
  15. BZOJ 1513 [POI2006]Tet-Tetris 3D 二维线段树
  16. LaTeX - 黎曼和
  17. 爬虫有道词典进行自动翻译
  18. pythong小知识列表
  19. RDKit中的分子3D构象生成
  20. Verilog权重轮询仲裁器设计——Weighted Round Robin Arbiter

热门文章

  1. 交换机的接口有哪些?一文带你记住其名称及作用
  2. RSTP(端口角色+端口状态+工作机制)|||| 交换机接口分析
  3. JS 案例 大小写转换
  4. 提高教师计算机能力的培训方案,教师信息技术应用能力提升培训实施方案.docx...
  5. 制作一个ip多域名访问,或一个ip不同端口访问,或多个ip访问的网站。
  6. 配置KVM网络桥接功能
  7. Servlet 生命周期概述
  8. css图片自动裁剪居中 不拉伸 自适应
  9. 用例图,远程网络教学系统
  10. linux文件权限命令umask