文章目录
1、自旋锁 spinlock
- 如果临界区只有一个变量,那么原子变量则可以解决这个问题,但大多数临界区有一个数据操作的集合。
- 如果另一个内核代码路径试图获取一个已经被持有的自旋锁,那么该内核代码路径需要一直忙等待,直到自旋锁持有者释放该锁。
- 如果该锁没有被其他内核代码路径持有(或者称为锁争用),那么可以立即获取该锁。
1.2、自旋锁特性
1.Spin_lock是为了多处理器并发控制而产生的。
2.Spin_lock是忙等待的锁机制。
a.操作系统中锁的机制分为两类:一类是忙等待,另一类是睡眠等待。
b.自旋锁属于前者,当无法获取自旋锁时会不断尝试,直到获取锁为止。
3.要求spinlock锁持有者尽快完成临界区的执行任务。
a.如果临界区执行时间过长,在锁外面忙等待的CPU比较浪费,特别时spinlock临界区里不能睡眠。
4.同一时刻只能有一个内核