自旋锁 订阅
自旋锁是专为防止多处理器并发而引入的一种锁,它在内核中大量应用于中断处理等部分(对于单处理器来说,防止中断处理中的并发可简单采用关闭中断的方式,即在标志寄存器中关闭/打开中断标志位,不需要自旋锁)。 展开全文
自旋锁是专为防止多处理器并发而引入的一种锁,它在内核中大量应用于中断处理等部分(对于单处理器来说,防止中断处理中的并发可简单采用关闭中断的方式,即在标志寄存器中关闭/打开中断标志位,不需要自旋锁)。
信息
外文名
Spin lock
概    念
保护共享资源
中文名
自旋锁
初    衷
在短期间内进行轻量级的锁定
自旋锁概念
何谓自旋锁?它是为实现保护共享资源而提出一种锁机制。其实,自旋锁与互斥锁比较类似,它们都是为了解决对某项资源的互斥使用。无论是互斥锁,还是自旋锁,在任何时刻,最多只能有一个保持者,也就说,在任何时刻最多只能有一个执行单元获得锁。但是两者在调度机制上略有不同。对于互斥锁,如果资源已经被占用,资源申请者只能进入睡眠状态。但是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里看是否该自旋锁的保持者已经释放了锁,"自旋"一词就是因此而得名。
收起全文
精华内容
下载资源
问答
  • 自旋锁

    2021-03-10 14:35:04
    1:自旋锁是忙等待锁,,锁不可用时,cpu一直循环执行测试并设置改锁直到获得该锁,CPU忙等待不做任何操作,仅仅是忙等待因此只有在占用锁极短的情况下,使用自旋锁才是合理的,当临界区很大或者有共享设备的时候...

    1:自旋锁是忙等待锁,,锁不可用时,cpu一直循环执行测试并设置改锁直到获得该锁,CPU忙等待不做任何操作,仅仅是忙等待因此只有在占用锁极短的情况下,使用自旋锁才是合理的,当临界区很大或者有共享设备的时候需要长时间占用该锁,使用自旋锁就会降低系统性能。
    2:自旋锁可能导致系统死锁。引发这个问题最常见的情况是递归使用一个自旋锁,即如果一个已经拥有某个自旋锁的CPU想第二次获取这个自旋锁则该CPU将死锁。
    3:自旋锁锁定期间不能调用可能引起进程调度的函数,如果获取自旋锁之后再阻塞,如调用copy_from_user,copy_to_user kmalloc,msleep等函数将会引起内核崩溃
    4:在单核情况下编程的时候也应该认为自己的CPU是多核的,驱动特别强调跨平台的概念,比如在单CPU的情况下,若中断和进程可能访问同一临界区,进程里调用spin_lock_irqsave()是安全的,在中断里即使不调用spin_lock也是没有问题的因为spin_lock_irqsave()是保证中断被禁止的,但是如果是多核CPU函数spin_lock_irqsave()不能屏蔽另一个核的中断,所以另一个核可能造成并发问题,因此无论如何在中断服务函数里也应该调用spin_lock

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,143
精华内容 3,657
关键字:

自旋锁