【Linux驱动编程】并发与竞态(如何选择合适的保护机制)

本文深入探讨了Linux驱动编程中并发与竞态的概念,以及如何通过屏蔽中断、原子操作、自旋锁、信号量和互斥体等机制来处理并发问题。文章详细介绍了各种保护机制的特点、应用场景和使用注意事项,旨在帮助开发者选择合适的同步和保护策略。
摘要由CSDN通过智能技术生成

1 场景

  假设地铁上有一个空座位(在大深圳就没见过),路人甲、乙、丙上车都有同等机率获得座位,但是最终只有一个人能够获得。“座位”就是共享资源,甲乙丙就是并发“访问”的“共享资源”的对象。事实上,即使只有一个座位,哪怕有更多人上车也不会引发“冲突”(竞态),因为大家潜意识里,获得座位的机制是“先到先得”或者“礼让”。

  类似的,linux系统中提供了完整的并发保护机制,避免竞态现象。


2 并发与竞态

  并发(concurrency)指的是多个执行单元在宏观上同时被执行,从宏观角度看起来就像是并行执行的。竞态(race conditions)则是由并发引的对共享资源(包括软件资源和硬件资源)同时访问引起的一种现象。


2.1 并发带来的影响

  并发访问直接引入的问题就是资源竞争。linux系统是一个多用户、多任务的操作系统,存在多个任务同时访问共享资源的情况,共享资源可以是内存、设备驱动、外设,多任务同时访问可能导致内存数据混乱,文件描述符重复操作,甚至可能引发进程和系统崩溃。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Acuity.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值