linux 原子操作,信号量,互斥锁mutex,自旋锁splock
创始人
2024-11-14 18:34:24
0

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

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

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

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

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

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

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

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

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

相关内容

热门资讯

微信炸金花房卡链接购买/牛牛房... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:8488009许多玩家在游戏中会购买房卡来享受...
微信打炸金花链接房卡怎么买/牛... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:33903369许多玩家在游戏中会购买房卡来享...
微信炸金花好友房卡怎么买/微信... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:55051770许多玩家在游戏中会购买房卡来享...
创建斗牛链接房间房卡/欢乐游大... 斗牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:8488009许多玩家在游戏中会购买房卡来享受更...
微信斗牛购买房卡方法/新猴王大... 斗牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:33903369许多玩家在游戏中会购买房卡来享受...
微信炸金花好友房卡怎么买/微信... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:55051770许多玩家在游戏中会购买房卡来享...
微信链接炸金花房卡怎么买/新蓝... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:8488009许多玩家在游戏中会购买房卡来享受...
微信群炸金花房卡怎么买/茄子娱... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:33903369许多玩家在游戏中会购买房卡来享...
微信斗牛房卡找谁买/牛魔王大厅... 斗牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:55051770许多玩家在游戏中会购买房卡来享受...
炸金花房卡如何充值/白虎大厅金... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:8488009许多玩家在游戏中会购买房卡来享受...
微信炸金花好友房卡怎么买/微信... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:33903369许多玩家在游戏中会购买房卡来享...
炸金花怎么买房卡/斗牛房卡从哪... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:55051770许多玩家在游戏中会购买房卡来享...
牛牛房间找谁买房卡/新蜜瓜大厅... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:8488009许多玩家在游戏中会购买房卡来享受更...
拼三张正规房卡总代理/新天道大... 拼三张是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:33903369许多玩家在游戏中会购买房卡来享...
微信链接炸金花房卡怎么买/微信... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:55051770许多玩家在游戏中会购买房卡来享...
创建炸金花微信链接房卡/微信牛... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:8488009许多玩家在游戏中会购买房卡来享受...
微信上链接炸金花房卡/神皇大厅... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:33903369许多玩家在游戏中会购买房卡来享...
微信玩链接炸金花房卡/新九天大... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:55051770许多玩家在游戏中会购买房卡来享...
微信里面拼三张链接房卡/乐酷大... 拼三张是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:8488009许多玩家在游戏中会购买房卡来享受...
微信链接牛牛房卡怎样买/新海贝... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:33903369许多玩家在游戏中会购买房卡来享受...