1、信号量

用来同步进程的特殊变量;一个特殊的计数器,大于0时记录资源的数量,小于0时记录等待资源的进程的数量。当信号量的值大于0时,进程总是可以获取到资源并使用,小于0 时,进程必须阻塞等待有其他进程释放资源。

2、临界资源

临界资源是一次仅允许一个进程使用的共享资源。各进程采取互斥的方式实现共享的资源称作临界资源。属于临界资源的硬件有打印机、磁带机等;软件资源有消息队列、变量、数组、缓冲区等。

3、临界区

每个进程中访问临界资源的那段代码成为临界区,每次只允许一个进程进入临界区进入后不允许其他进程进入。不论硬件临界资源还是软件临界资源,多个进程必须互斥的对它进行访问。多个进程涉及到同一个临界资源的临界区称为相关临界区。使用临界区时,一般不允许运行时间过长,只要在运行临界区的线程还没有离开,其他所有进入此临界区的线程都会被挂起而进入等待状态,并在一定程度上影响程序的运行性能。

4、P、V操作

对信号量进行操作使用P、V操作,P、V操作都是原子操作。

假设有一个信号变量SV

P(SV)    如果SV的值大于0,就给他-1;如果它的值等于0,就挂起该进程的执行。

V(SV)    如果有其他进程因等待SV而被挂起,就让他恢复运行;如果没有进程因等待SV而被挂起,就给他+1.

相关函数:

semget():创建或者获取信号量的内核对象

semop():完成对信号量的P操作或者V操作

semctl():设置信号量属性

5、进程同步

在多道程序环境下,进程是并发执行的,不同进程之间存在着不同的相互制约关系。

信号量——P、V操作、临界资源、临界区、进程同步相关推荐

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

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

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

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

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

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

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

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

  5. OS_process_sync_producercomsumer进程同步/互斥/信号量管程:临界资源/临界区:生产者和消费者问题(缓冲池(缓冲区)问题)

    文章目录 OS_process_sync_producer&comsumer reference 临界资源 (Critical Resouce) 代码的划分 临界区(critical sect ...

  6. vp操作 信号量_信号量P,V操作

    2013-07-22 20:20:30 信号量是最早出现的用来解决进程同步与互斥问题的机制(也可实现进程通信),包括一个称为信 号量的变量及对它进行的两个原语操作.信号量为一个整数,我们设这个信号量为 ...

  7. 判断sem信号量为零_Linux系统编程——进程同步与互斥:System V 信号量

    信号量概述 信号量广泛用于进程或线程间的同步和互斥,信号量本质上是一个非负的整数计数器,它被用来控制对公共资源的访问. 编程时可根据操作信号量值的结果判断是否对公共资源具有访问的权限,当信号量值大于 ...

  8. 李白和杜甫共享一个棋盘下象棋。一个叫李白的程序,输出李白走的10步棋。一个杜甫程序,输出杜甫的10步棋,一个裁判程序裁定二者下棋。C++实现信号量及P、V操作。

    one.cpp #include <windows.h> #include <stdio.h>#define PROG_NAME "李白" HANDLE l ...

  9. 一阅览室只能容纳150人,当少于150人时,可以进入,否则,需在外等候,若将每一个读者作为一个进程,请用P、V操作编程(类C、类pascal),并写出信号量的初值。(PV操作伪代码)

    1.第一种情况:现实生活中阅览室的门可以同时进入或出去多个人,题目中也没有其他限定时,可以只设立同步信号量即可. 伪代码如下: int n = 150;semaphore empty = n;/*em ...

最新文章

  1. 工作中如何使用线程池的?自己如何定义一个线程池?
  2. 项目: 用封装的方法实现飞机大战游戏
  3. cdoj 1150 排名表 拓扑排序
  4. LintCode 207. 区间求和 II(线段树)
  5. vue websocket 实时渲染页面
  6. 林超贤携彭于晏带《紧急救援》再度征战2020春节档
  7. mysql unable to find_centos8.2安装mysql8.0时报错Error:Unable to find a match: mysql-community-server...
  8. 理解Rails真实性令牌
  9. 从3000元月薪码农到首席架构师的经历
  10. 请假时碰到法定假期,实际请假几天?
  11. redis 缓存击穿及应对
  12. Atitit 常用加密算法 aes des rsa 比较 历史演进 目录 1.1. 常规加密算法如下 Aes 3des des rsa 1 2. 加密算法历史演进 按照出现时间和加密强度 流行
  13. win10 3dmax 激活后反复激活和激活码无效问题
  14. word:清除格式(设置快捷键)
  15. 微信小程序学习资料——转载
  16. 【源码】基于PMSG的风力发电机组仿真与建模
  17. windows应用程序与控制台应用程序的区别
  18. 投影html连接电脑,电脑如何链接投影仪_台式电脑主机怎么连接投影仪-win7之家...
  19. 智和信通,部署智慧交通运维系统,构建一站式运维监控平台
  20. matlab生成word模板

热门文章

  1. CCF C³活动第二期主题“智能家居”,与CTO聚首小米科技园!
  2. 贝壳找房内部职级_贝壳找房组织架构再调整:战区扩至七个 任命四名区首
  3. python3:实现输出等边三角形、直角三角形
  4. SpringCloud gateway (史上最全)
  5. 盛世昊通拼车车通证,以共享经济实现行业颠覆
  6. OpenStack Heat编排
  7. VMware Workstation Pro16 的下载与安装
  8. NVIDIA jetson tensorrt加速yolov5摄像头检测
  9. 如何更方便的探讨技术
  10. 一种改进的进化模型和混沌优化的萤火虫算法-附代码