在单处理器中,自旋锁定义为空操作,因为不存在几个CPU同时进入临界区的情况,但是如果启用了内核抢占,这种说法就不适用了。因为,如果内核在临界区中被中断,而此时另一个进程进入临界区,这与smp系统上两个处理器同时在临界区进行的情况是等效的。通过一个简单的集群可以防止这种情况发生:内核进入到有自旋锁保护的临界区的时候,就停用内核抢占。在启用了内核抢占的单处理器内核中,spin_lock等价于preemt_disable;而spin_unlock则等价于preempt_enable。
阅读(1283) | 评论(0) | 转发(0) |