1: 在UP下,spinlock为空,为什么可以起到保护临界资源的作用?这时来中断的怎么办?
因为内核不可中断,即使这时发生了中断,中断处理完后,还会回到该处继续执行,而不会调度到别的进程。因此,即使spinlock为空,也不会出错。但这里有一个约束条件,那就是在中断处理代码中,不可以访问该临界区。如果该临界区需要在中断中访问,我们就不可以用spin_lock了,需要用spin_lock_irq。这时会禁止中断,等退出临界区时,用对应的spin_unlock_irp即可。
1: 在UP下,spinlock为空,为什么可以起到保护临界资源的作用?这时来中断的怎么办?
因为内核不可中断,即使这时发生了中断,中断处理完后,还会回到该处继续执行,而不会调度到别的进程。因此,即使spinlock为空,也不会出错。但这里有一个约束条件,那就是在中断处理代码中,不可以访问该临界区。如果该临界区需要在中断中访问,我们就不可以用spin_lock了,需要用spin_lock_irq。这时会禁止中断,等退出临界区时,用对应的spin_unlock_irp即可。