低开销加锁 优先使用自旋锁
短期锁定 优先使用自旋锁
中断上下文中加锁 使用自旋锁
长期加锁 优先使用信号量
持有锁是需要睡眠、调度 使用信号量
自旋锁是专为防止多处理器并发而引入的一种锁,它在内核中大量应用于
中断处理等部分。
死锁:假设有一个或多个内核任务和一个或多个资源,每个内核都在等待
其中的一个资源,但所有的资源都已经被占用了。这便会发生所有内核任
务都在相互等待, 但它们永远不会释放已经占有的资源,于是任何内核任
务都无法获得所需要的资源,无法继续运行,这便意味着死锁发生了。自
死琐是说自己占有了某个资源,然后 自己又申请自己已占有的资源,显然
不可能再获得该资源,因此就自缚手脚了。
信号量不能使用在中断上下文,只能使用在进程上下文。