并发_竞态_中断屏蔽

并发:concurrency
竟态:race condition
互斥:mutex
临界区:critical sections

解决竟态问题的方法是对共享资源实现互斥访问
互斥访问:指一个执行单元在访问共享资源的时候,其他执行单元被禁止访问。
共享资源的代码区域称为临界区,临界区需要以某种互斥机制加以保护。

实现互斥的方法:中断屏蔽,原子操作,自旋锁 和 信号量。

1. 中断屏蔽
即在进入临界区之前屏蔽系统中断,系统一般具有屏蔽中断和打开中断的功能,这样可以防止某些竟态条件的发生。

local_irq_disable()   //屏蔽中断
---
critical section      //临界区
---
local_irq_enable()    //开中断

还有:
local_irq_save(flags)         //除了禁止中断外,还保存目前CPU的中断位信息
local_irq_restore(flags)      //与上相反,解除禁止,并把CPU中断位信息上报。

local_bh_disable();           //禁止中断的底半部
local_bh_enable();            //使能中断的底半部

由于linux系统的异步I/O,进程调度等重要操作都依赖中断,中断对于内核运行非常重要,在屏蔽期间,所有的中断都无法得到处理,因此长时间屏蔽中断是很危险的。慎用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值