当前位置:网站首页>内核同步机制
内核同步机制
2022-07-01 11:19:00 【每日一悟】
关于同步理论的一些基本概念:
临界区(critical area): 访问或操作共享数据的代码段,可以简单理解为synchronized大括号中部分(原子性)竞争条件(race conditions):两个线程同时拥有临界区的执行权
数据不一致:data unconsistency 由竞争条件引起的数据破坏
同步(synchronization):避免race conditions
锁:完成同步的手段(门锁,门后是临界区,只允许一个线程存在) 上锁解锁必须具备原子性
原子性:像原子一样不可分割的操作
有序性:禁止指令重排
可见性:一个线程内的修改,另一个线程可见
内核同步常用方法:
- 原子操作:内核中类似于AtomicXXX,位于<linux/types.h>
- 自旋锁:内核中通过汇编支持的cas,位于<asm/spinlock.h>
- 读写自旋:类似于ReadWriteLock,可同时读,只能一个写,读的时候是共享锁,写的时候是排他锁
- 信号量:类似于Semaphore(PV操作down up操作,占有和释放) 重量级锁,线程会进入wait,适合长时间持有的锁情况
- 读写信号量:downread upread downwrite upwrite (多个写,可以分段写,比较少用)(分段锁)
- 互斥体(mutex):特殊的信号量(二值信号量)
- 完成变量:特殊的信号量(A发出信号给B,B等待在完成变量上) vfork() 在子进程结束时通过完成变量叫醒父进程 类似于(Latch)
- BKL:大内核锁
- 顺序锁(2.6):线程可以挂起的读写自旋锁,序列计数器(从0开始,写时增加(+1),写完释放(+1),读前发现单数, 说明有写线程,等待,读前读后序列一样,说明没有写线程打断)
- 禁止抢占:preempt_disable()
- 内存屏障 :见volatile
边栏推荐
- CVPR22 |CMT:CNN和Transformer的高效结合(开源)
- 华泰证券网上开户安全吗?
- 分享psd格式怎么预览的方法和psd文件缩略图插件[通俗易懂]
- 谷歌新论文-Minerva:用语言模型解决定量推理问题
- 8 best practices to protect your IAC security!
- 银行卡借给别人是否构成犯罪
- CVPR 2022 | 基于密度与深度分解的自增强非成对图像去雾
- Get key code
- Mutual conversion of pictures in fluent uint8list format and pictures in file format
- “目标检测”+“视觉理解”实现对输入图像的理解及翻译(附源代码)
猜你喜欢
Oracle和JSON的結合
CVPR 2022 | 基于密度与深度分解的自增强非成对图像去雾
关于Keil编译程序出现“File has been changed outside the editor,reload?”的解决方法
为什么一定要从DevOps走向BizDevOps?
Dameng data rushes to the scientific innovation board: it plans to raise 2.4 billion yuan. Feng Yucai was once a professor of Huake
2022/6/30学习总结
MIT最新论文《对可解释特征的需求:动机和分类》:在机器学习模型的组成元素中建立可解释性
Tianrunyun, invested by Tian Suning, was listed: its market value was 2.2 billion Hong Kong, and its first year profit decreased by 75%
Tempest HDMI leak receive 3
y48.第三章 Kubernetes从入门到精通 -- Pod的状态和探针(二一)
随机推荐
How to make the development of liquidity pledge mining system, case analysis and source code of DAPP defi NFT LP liquidity pledge mining system development
十年磨一剑:蚂蚁集团可观测性平台 AntMonitor 揭秘
LeetCode. One question of the day: offer II 091 Paint the house (DP problem)
8 best practices to protect your IAC security!
Tempest HDMI leak receive 5
MIT最新论文《对可解释特征的需求:动机和分类》:在机器学习模型的组成元素中建立可解释性
y48.第三章 Kubernetes从入门到精通 -- Pod的状态和探针(二一)
8款最佳实践,保护你的 IaC 安全!
MySQL IN 和 NOT IN () 空列表报错
TEMPEST HDMI泄漏接收 4
英特爾實驗室公布集成光子學研究新進展
Technology sharing | introduction to linkis parameters
今天开户今天能买股票吗?在线开户是很安全么?
优雅地翻转数组
印象深刻的bug汇总(持续更新)
openinstall:微信小程序跳转H5配置业务域名教程
谷歌新论文-Minerva:用语言模型解决定量推理问题
京东与腾讯续签合作:向腾讯发行A类股 价值最高达2.2亿美元
Paxos 入门
树莓派4B安装tensorflow2.0[通俗易懂]