当前位置: 首页 > news >正文

linux 原子操作,信号量,互斥锁mutex,自旋锁splock

1:内核中的竞争状态和互斥

1)竞争状态(竞争)
2)临界段(可能会引起并发),在临界点加互斥锁以保护,死锁。
3)同步 并发(多cpu, 多任务,中断)查阅百度多去了解这些概念

2:解决竞争状态的方法
1)原子操作 automic_t 执行过程中间不可被打断
2)信号量,互斥锁,当一个进程执行这段代码时,把自己锁上,别的进程是不能进行访问的,执行完时,才打开锁,所以叫互斥锁
3)自旋锁,当执行一段代码时,缺乏一个信号量,可以进入休眠,自己挂起,不把cpu交出去,在这段短时间一直在等待,

信号量适合等待时间的长的,自旋锁适合等待时间短的;

1)自旋锁不能递归,获取了一个自旋锁,不能再次获取自旋锁,好比,或得了钥匙,进去后,把钥匙扔出去了。只有等待别人来解开锁

2)自旋锁可以用在中断上下文(信号量不可以用在中断上下文,因可能进入睡眠,交出cpu,)在中断上下文中获取自旋锁之前要先禁用本地中断。中断上下文不参与调度,所以如果退出中断,是回不来的。

3)自旋锁的核心是,拥有自旋锁的代码必须不能睡眠,要一直拥有cpu直到释放自旋锁

4)信号量和读写信号量适合保持时间较长的情况,会导致调用者进入睡眠,因此只能在进程上下文使用,而自旋锁适合保持是啊金非常短的情况,他可以在任何上下文使用,如果被保护的共享资源只在进程上下文访问,使用信号量保护该共享资源很适合,
如果对共享资源的访问非常短,自旋锁也可以,但是如果被保护的共享资源需要中断上下文访问*(包括底半部即中断处理句柄,和顶半部即软中断,)就必须使用自旋锁,自旋锁保持时间抢占是失效的,而信号量和读写信号量保持期间是可以被抢占的,

自旋锁只有在内核可抢占或多处理器的情况下才真正需要,在单cpu且不可抢占的内核下,自旋锁的所有操作都是空操作

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 嵌入式数据库 sqlite3
  • 中央处理器CPU
  • 力扣第五十题——Pow(x,n)
  • Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget
  • 【Linux】-----进度条小程序
  • 计算机毕业设计选题推荐-课程教学辅助系统-Java/Python项目实战
  • 【教程】Python语言的地球科学常见数据——植被指数数据-GIMMS NDVI的处理
  • Python基础教程(二)字符串和函数
  • CSS学习 01 利用鼠标悬停制造文本隐藏效果
  • 【大模型从入门到精通2】openAI api的入门介绍2
  • java基础 之 集合与栈的使用(四)
  • 智能仪表板DevExpress Dashboard v24.1 - 新增级联参数过滤
  • 数据结构(7):查找
  • 【解决方案】使用transformer指定显卡后,模型依然加载到默认第1张显卡上
  • Mybatis的注解开发学习笔记
  • [译]如何构建服务器端web组件,为何要构建?
  • 【技术性】Search知识
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • CentOS从零开始部署Nodejs项目
  • Cookie 在前端中的实践
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • IP路由与转发
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • Lsb图片隐写
  • MySQL主从复制读写分离及奇怪的问题
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • SpringBoot 实战 (三) | 配置文件详解
  • Tornado学习笔记(1)
  • underscore源码剖析之整体架构
  • 百度地图API标注+时间轴组件
  • 第2章 网络文档
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 给第三方使用接口的 URL 签名实现
  • 解析 Webpack中import、require、按需加载的执行过程
  • 前嗅ForeSpider教程:创建模板
  • 入门到放弃node系列之Hello Word篇
  • 问题之ssh中Host key verification failed的解决
  • 想使用 MongoDB ,你应该了解这8个方面!
  • Java数据解析之JSON
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​secrets --- 生成管理密码的安全随机数​
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • #、%和$符号在OGNL表达式中经常出现
  • #《AI中文版》V3 第 1 章 概述
  • (1)虚拟机的安装与使用,linux系统安装
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • (十六)一篇文章学会Java的常用API
  • (算法)区间调度问题
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转)Oracle存储过程编写经验和优化措施
  • (转)Sublime Text3配置Lua运行环境
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • ./和../以及/和~之间的区别