简述linux自旋锁

1、linux中为什么要引入自旋锁?

    我们知道,如果一段临界区代码既可被进程执行,也可受中断影响。那么我们保护它的方式就是开、关中断。

但是如果是多处理机呢?我们知道linux内核从1.3开始就支持SMP(Symmetrical Multi-Processing)了。显然在多个CPU在同时执行代码时,

上述的方法就保护不了临界区了。这个时候我们引入了自旋锁。

2、自旋锁的思想是什么?

    自旋锁的思想就是在一个密封的循环中不断对一个资源(一把锁)进行夺取,直到获得到该资源。

3、自旋锁的特点有什么?

    自旋锁最重要的特点是线程在等待锁被释放时一直占据CPU。

4、使用自旋锁的前提有什么?

    自旋锁的基本前提是线程在某处理机上忙等一个资源,而另一个线程在不同处理机上正使用这个资源,这只有在多处理机上才有可能。

5、单处理机中可否使用自旋锁?

    单处理机中是可以使用自旋锁的,但前提是保证线程在持有锁的时候不可以放弃对CPU的控制,也就是不可以在持有锁期间使用调度程序。否则,就会进入死循环。

6、自旋锁的类型?

    (1)普通自旋锁  (2)读写自旋锁  (3)big-reader自旋锁

7、自旋锁与互斥锁的异同?

    我们知道,自旋锁与互斥锁都是为对临界资源进行保护而创造的一种锁机制。不同之处在于,执行单元在持有互斥锁期间,其它需要该资源的执行单元是要进入睡眠状态的。而执行单元持有自旋锁期间,其它需要该资源的执行单元是进行不断的尝试的,直到持有自旋锁的单元释放自旋锁,则可以获得该资源。自旋锁这个名字也是由此得来。而且,由于需要获得该锁的单元不断进行尝试,所以,自旋锁的效率是远高于互斥锁的。

8、自旋锁的缺点?

    (1)可能引起死锁  (2)过多的占用CPU资源

   


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值