Why can not processes switch in atomic context?

Subramaniam Appadodharana c.a.subramaniam at gmail.com
Tue Jul 3 11:33:46 EDT 2012


Hi,

On Tue, Jul 3, 2012 at 9:24 AM, Parmenides <mobile.parmenides at gmail.com>wrote:

> Hi,
>
>     It is said that kernel can not be preempted in interrupt context
> and when it is in a critical section protected by a spin lock.
>
> 1. For the spinlock case, it is easy to get if preemption is allowed
> in critical section, the purpose of protection provided by spinlock
> can not be achieved readily.
>
> 2. For the interrupt context case, I think when processing interrupt,
> kernel can be preempted in principle. But, this really increases the
> interrupt processing time which further cause longer response time and
> data missing in device. Except that, is there any other reasons?
>
> 3. Kernel is responsible for prohibiiting passive process switches,
> namely preemption, in the above cases. But, It seems that it does not
> take care of active process swtiches, namely yield. For example, some
> code in a critical section protected by a spinlock can invoke
> schedule() to switch process passively. Is this the case?
>
> Well one should not hold a spinlock and  call schedule(). If at all you
want to yield,
release the spinlock and yield. Hope that answers your question.

> _______________________________________________
> Kernelnewbies mailing list
> Kernelnewbies at kernelnewbies.org
> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20120703/a8212fc1/attachment.html 


More information about the Kernelnewbies mailing list