Linux系统处于一个高并发的运行环境,不管是系统调用还是中断都要求可重入,但是有一些系统资源处于临界区,因此,必须保证临界区资源访问的原子性. 对于临界区资源被占用时,发起访问的进程,有三种处理方法——睡眠.阻塞以及撤销. Linux驱动编程中,通常不建议使用锁机制,因为容易导致死锁问题.不使用锁的场景,尽量使用kfifo缓冲队列来存取数据:在必须使用锁的场景,建议使用信号量和自旋锁. 信号量通常用在可以睡眠的场景,如进程上下文:而自旋锁通常用在不可睡眠的场景,如中断上下文. 1.信号量 #i…