Liunx锁机制浅析

Liunx锁机制:原子操作、互斥锁、信号量、大内核锁、自旋锁,各自的特点,区别和联系。

锁的作用:使程序以串行方式对资源进行访问

A:原子操作:不能被分割的指令(对整数、对位进行操作)

   一般用于增减变量值,操作简单,单条指令即可完成。

B:自旋锁:Linux中最常见的锁机制,它最多只能被一个可执行线程持有,用于处理较为复杂的情形,但由于请求它的线程在等待锁重新可用时处于忙等待状态,故自旋锁一般用于短时期内进行轻量级加锁,能够快速完成临界区,并释放锁。自旋锁不可递归

C:读-写自旋锁:将锁的用途明确地分为读取和写入两个场景,

D:信号量:类似睡眠锁,请求它的线程在等待锁可用时会处理休眠状态,加入等待队列,待信号量可用时再被唤醒。适用于锁会被长时间持有的情况。它可以同时允许任意数量的锁持有者,而自旋锁在一个时刻只能允许一个任务持有它。

E:读-写信号量:与读-写自旋锁类似,只有唯一一个写者能获得锁。

F:互斥体:信号量的特例化,使用技术永远为1.

G:大内核锁:全局自旋锁,可以递归,可以睡眠。

H:顺序锁:用于读写共享数据,常用于读者较多,写者较少的情况,通过维持一个序列计数器来判定是否有写操作存在。

参考文献:

《Linux 内核设计与实现 第三版》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值