p、v 操作的实现

数据结构

typedef struct {int value;  // 可用资源数量struct PCB *list;  // 等待pcb队列
}semaphore;

p 操作

void p(semaphore S) {S.value --; if(S.value < 0) {  // < 0 表示无可用资源将该进程加入到 S.list 队列block() 阻塞该进程}
}

v 操作

void v(semaphore S) {S.value ++;if(S.value <= 0){  // 表示等待队列中仍有进程等待唤醒从S.list 移出对头 Q唤醒 Q 进程}
}

p、v 操作的理解

p、v 操作是基于结构型信号量的进程互斥,同步的通用原子操作

如果只是单纯的用一个整型信号量来解决进程互斥,同步问题,那么如果信号量小于0,则会一直循环占用 cpu 资源,出现“忙等”现象,利用结构型信号量,可用将进程阻塞并放入队列,解放 cpu 资源,提高 cpu 利用率

因为信号量表示可用资源的数量,所以对于互斥情况,信号量为 1 ,表示可用资源只有一个,必须互斥使用。

若可用资源有 n 个,那么信号量为 n

对于p、v 操作的理解相关推荐

  1. 关于p操作和v操作的理解

    操作系统之PV操作 今天在做操作系统老师布置的操作系统作业,但是碰到了一个有关pv操作的问题,由于对pv操作的理解不是很透彻,所以我查阅了很多资料,下面来简单的通俗的介绍一下pv操作 1.信号量    ...

  2. 关于P,V操作理解的分析

    P-V操作定义: 假设sem是个整型变量. P原语的主要操作是: (1)sem减1: (2)若sem减1后仍大于或等于零,则该进程继续执行: (3)若sem减1后小于零,则该进程被阻塞,在相应队列中排 ...

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

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

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

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

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

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

  6. 临界资源、临界区、信号量、P,V操作

    一.资源: Linux上有硬件资源和软件资源之分.程序会受到资源限制的影响,可能在这几方面的资源限制受到影响:1.硬件方面的物理性限制(内存):2.系统策略的限制(允许使用的CPU时间):3.具体实现 ...

  7. 信号量机制与PV操作的理解

    目录 基本概念 PV操作处理相关问题 正确理解信号量机制 基本概念 信号量机制是一种有效的进程同步和互斥工具.信号量有整形信号量.记录型信号量.二进制信号量等.常用整型信号量实现PV操作.P操作表示申 ...

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

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

  9. 操作系统P,V操作大总结(包含例题)上篇

    引言:P,V操作必须成对出现,P可简单的理解为消耗一种资源,V可简单的理解为增加一种资源. 1.用信号量实现互斥 semaphore S=1;//定义一个互斥信号量 P1(){ P(S)://加锁 进 ...

最新文章

  1. android 图片读写,Android系统中图片的读写
  2. 《LeetCode力扣练习》第10题 C语言版 (做出来就行,别问我效率。。。。)
  3. 使用git修复线上指定版本的问题
  4. 窥探SnowflakeIdWorker之并发生成唯一ID
  5. 五十五、Java单元测试类Junit
  6. Java黑皮书课后题第10章:*10.13(几何:MyRectangle2D类)定义MyRectangle2D类
  7. 与Maven和Docker的集成测试
  8. python实现局域网攻击_通过python实现DNS欺骗
  9. linux-04-磁盘命令+进程命令
  10. 物体非等比缩放后的法线处理
  11. spring源码-第三个后置处理器
  12. 常见的DoS攻击防御方式
  13. Docker设置阿里云镜像加速器
  14. Android组件化跨进程通信框架Andromeda解析
  15. PHP interface 接口继承(一丶单接口继承)
  16. 2020-11-24--源赖氏佐天
  17. 驭龙HIDS的简介,它开源了
  18. 台式计算机默认关机变注销,Win7电脑点关机变成注销怎么办?
  19. opencv 解决ippicv下载问题,离线:ippicv_2019_lnx_intel64_general_20180723.tgz
  20. 模式识别与人工智能官网,人工智能模式识别技术

热门文章

  1. Vue 2.x 使用高德地图JS API 2.0加载起点终点路径轨迹
  2. 激光雷达F4与D1坐标校正
  3. 什么是挂载?Linux挂载
  4. 【Adobe After Effects中英文转换2019——2023版】
  5. 写好开发者文档的八个技巧
  6. IE历史记录查询及删除工具IE History View使用浅析
  7. 泉州群控服务器系统,泉州纵贯手机群控系统 实现一键式按钮服务
  8. Minikube踩坑实录(血泪记录)!
  9. Maven项目下HttpServletRequest 或 HttpServletResponse显示红色
  10. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器版本打包方法介绍