Linux内核与驱动开发学习总结:自旋锁和信号量(五)

本文探讨了原子操作、自旋锁、内存屏障等并发控制机制,并对比了自旋锁与信号量的不同应用场景。对于临界区大小不同的情况推荐使用自旋锁或信号量,并介绍了读写自旋锁和读写信号量的适用范围更广的特点。此外,还提到了RCU机制在现代系统中的广泛应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、自旋锁和信号量

   使用自旋锁的进程不能睡眠,使用信号量的进程可以睡眠。中断服务例程中的互斥使用的是自旋锁,原因是在中断处理例程中,硬中断是关闭的,这样会丢失可能到来的中断。

2、RCU 锁

http://blog.sina.com.cn/s/blog_6d7fa49b01014q9s.html

讨论的内容包括原子操作;自旋锁,内存屏障;读写自旋锁,顺序锁;信号量,读写信号量,完成量;互斥量;RCU机制;BKL(大内核锁)

通过上述讨论的一些内容,我们可以总结得到以下一些基本观点: 原子操作对整数操作,自旋锁和信号量应用较为广泛。 当临界区小应选择自旋锁,反之,则应选择信号量。 关于信号量的选择问题:信号量是针对进程级的,它在内核中以进程方式运行,故它一般的使用条件是当申请信号量的进程需占用资源较长时间时。 读写自旋锁和读写信号量条件相对于自旋锁和信号量来说放宽不少,这一点可从它们的定义得出。 RCU机制的应用目前越来越广。 内存屏障函数使用起来较为复杂,而且多数情况下需要和具体的体系结构相关,故而一般不建议使用。( 自旋不会睡眠)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值