System V信号量

1.信号量
信号量本质上就是一把计数器(资源计数器)
表示资源数目的计数器,每一个执行流想访问公共资源内部的某一份资源,不应该让执行流先访问,而是先申请信号量资源,其实就是先对信号量计数器进行–操作,本质上,只要–成功,就完成了对资源的预订机制
如果申请不成功,执行流被挂起阻塞
2.互斥与同步
信号量主要用于同步和互斥的
多个执行流看到的是同一份资源,公共资源->并发访问->数据不一致问题->保护起来->互斥和同步
互斥:任何一个时候只允许一个执行流(进程)访问公共资源
同步:多个执行流执行的时候,按照一定的顺序执行
互斥(Mutual Exclusion):互斥是指在多进程或多线程环境中,对共享资源的访问是排他的,即同一时间只允许一个进程或线程访问共享资源。这样可以避免多个进程或线程同时修改共享资源而导致的数据不一致性问题。常见的互斥机制包括使用互斥锁(Mutex)或信号量(Semaphore)来保护共享资源,确保在任意时刻只有一个进程或线程能够访问该资源。
同步(Synchronization):同步是指在多进程或多线程环境中,控制进程或线程之间的执行顺序,以保证它们按照某种规定的顺序执行或在特定的时间点上进行协作。同步机制可以用来确保进程或线程之间的通信、协作和数据一致性。常见的同步机制包括使用信号量、条件变量(Condition Variable)、屏障(Barrier)等,以及各种同步原语和算法,如互斥锁、读写锁、原子操作等。
3.临界资源和临界区
临界资源:多个进程都可以访问到的资源(例如:同一块内存)。
临界区:访问临界资源时的代码,所在区域称之为临界区。
4.PV
P操作(也称为Wait操作):这是信号量管理的入口点,用于检测进程是否能够继续执行或者进入临界区。当进程尝试进行上述操作时,它会先检查信号量的值。如果信号量的当前值等于零,则表明有待处理的消息或其他进程正在等待这个资源,因此进程不会立即得到资源而必须等待。此时,进程会进入阻塞状态,直到信号量的值变为非零,这时它才能继续执行。
V操作(也称为Signal操作):这是信号量的出口点,用于释放已获得的资源或离开临界区。在执行完临界区的代码后,进程会增加信号量的值,表示释放了一个资源。如果此时有其他进程在等待这个资源,那么有一个进程将被唤醒并获得资源,从而继续执行。
5.原子性
只有2态,要么不做,要么做完

申请信号量->计数器减1->P操作必须具有原子性。
释放信号量->计数器加1->B操作必须具有原子性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/679879.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode(矩阵)74. 搜索二维矩阵(C++详细解释)DAY7

文章目录 1.题目示例提示 2.解答思路3.实现代码结果 4.总结 1.题目 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中…

Ubuntu编译和测试ITK4.13.1

安装不麻烦,环境配置挺麻烦,主要是gcc、cmake和ccmake的版本不匹配问题。 环境: gcc -- 7.5.0 cmake -- 3.15.2 ccmake -- 3.15.2 参考以下两篇博客安装: 1、 ITK的安装与测试(Ubuntu系统)_ubuntu20…

Confluence CVE-2023-22527利用工具

介绍 Confluence CVE 2021,2022,2023 利用工具,支持命令执行,哥斯拉,冰蝎 内存马注入 支持 Confluence 版本:CVE-2021-26084,CVE-2022-26134,CVE_2023_22515,CVE-2023-2…

计算机网络——06分组延时、丢失和吞吐量

分组延时、丢失和吞吐量 分组丢失和延时是怎样发生的 在路由器缓冲区的分组队列 分组到达链路的速率超过了链路输出的能力分组等待排到队头、被传输 延时原因: 当当前链路有别的分组进行传输,分组没有到达队首,就会进行排队,从…

【MySQL进阶之路】生产案例:大量数据刷盘导致的数据库性能抖动问题优化

欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术的推送! 在我后台回复 「资料」 可领取编程高频电子书! 在我后台回复「面试」可领取硬核面试笔记! 文章导读地址…

【Docker】Docker Container(容器)

文章目录 一、什么是容器?二、为什么需要容器?三、容器的生命周期容器OOM容器异常退出容器暂停 四、容器命令详解docker createdocker logsdocker attachdocker execdocker startdocker stopdocker restartdocker killdocker topdocker statsdocker cont…

Apache 神禹(shenyu)源码阅读(一)——Admin向Gateway的数据同步(Admin端)

源码版本:2.6.1 单机源码启动项目 启动教程:社区新人开发者启动及开发防踩坑指南 源码阅读 前言 开了个新坑,也是第一次阅读大型项目源码,写文章记录。 在写文章前,已经跑了 Divide 插件体验了一下(体…

Mac OS 取消隔离扩展属性

sudo xattr -rd com.apple.quarantine ${file} 扩展属性的大小通常被限制为明显小于最大文件大小的值。典型用途包括存储文档的作者、纯文本文档的字符编码或校验和、加密哈希或数字证书和自主访问控制信息。 在类 Unix系统中,扩展属性通常缩写为xattr。 从 macO…

elasticsearch 索引的监控

** 1. 监控索引的健康状态信息 ** 如果创建了一个索引test-3-2-1并且你想知道索引test-3-2-1的健康状态可以使用索引的cat端点,代码如下。 GET /_cat/indices/test-3-2-1?v&formatjson会得到类似于以下的健康状态监控信息 [{"health" : "ye…

DataEase

一. DataEase (一). 说明 安装文档 DataEase 是开源的数据可视化分析工具,帮助用户快速分析数据并洞察业务趋势,从而实现业务的改进与优化。DataEase 支持丰富的数据源连接,能够通过拖拉拽方式快速制作图表,并可以方便的与他人分…

比特币突然大涨

作者:秦晋 2月9日,除夕夜,比特币突然大涨,最高涨至48219美元,涨幅超6%。据CNBC报道,本周比特币已经上涨10.76%,创下自12月8日以来的最佳的一周。本周ETH上涨8.46%,成为自1月12日以来…

mac无法往硬盘里存东西 Mac硬盘读不出来怎么办 Mac硬盘格式 硬盘检测工具

mac有时候会出现一些问题,比如无法往硬盘里存东西,或者无法往硬盘上拷贝文件。这些问题会给用户带来很大的困扰,影响正常的工作和学习。那么,mac无法往硬盘里存东西,mac无法往硬盘上拷贝怎么办呢?软妹子将为…

DAY9.

1.选择芯片型号 2. 3. 4. 5. 6. 7.

相机图像质量研究(12)常见问题总结:光学结构对成像的影响--炫光

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结:光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结:光学结构对成…

关于node与node-sass那些事

昨晚找了之前的一个项目想要复习下,结果npm i报错,大致意思就是noda-sass的版本和node的对不上,那怎么办呢: 1.换node版本,那好吧,首先要明白,对应的版本关系 2.然后我开始用nvm换node版本&am…

MySQL-----DCL基础操作

▶ DCL简介 DCL英文全称是Data ControlLanguage(数据控制语言),用来管理数据库用户、控制数据库的访问权限。 DCL--管理用户 ▶ 查询用户 use mysql; select * from user; ▶ 创建用户 ▶ 语法 create user 用户名主机名 identified by 密码 设置为在任意主机上访问…

2024 年适用于 Windows 的 10 款顶级录屏软件

什么是屏幕录制软件? 屏幕录像机是专用软件,允许用户捕获整个屏幕或显示器的特定部分。无论是捕获窗口的特定区域、完整的网页、可滚动的屏幕截图或包括光标移动的录音等。一款优秀的截屏软件是将所有这些功能集成到一个软件包中,以简化日常工…

小白水平理解面试经典题目LeetCode 102 Binary Tree Level Order Traversal【二叉树】

102. 二叉树层次顺序遍历 小白渣翻译 给定二叉树的 root ,返回其节点值的层序遍历。 (即从左到右,逐级)。 例子 小白教室做题 在大学某个自习的下午,小白坐在教室看到这道题。想想自己曾经和白月光做题&#xff0c…

教材管理系统

文章目录 教材管理系统一、系统演示二、项目介绍三、系统部分功能截图四、部分代码展示五、底部获取项目源码(9.9¥带走) 教材管理系统 一、系统演示 教材管理系统 二、项目介绍 语言:nodejs 框架:egg.js、Vue 数据库…

2022年9月电子学会青少年软件编程 中小学生Python编程等级考试二级真题解析(选择题)

2022年9月Python编程等级考试二级真题解析 选择题(共25题,每题2分,共50分) 1、运行以下代码,结果输出的是 means[Thank,You] print(len(means)) A、1 B、2 C、6 D、8 答案:B 考点分析:考…