中断与抢占的问题
应该怎么理解中断与抢占的关系呢,书上说禁止中断就禁止抢占,这个要怎么理解啊,从内核抢占的几个时机来理解么?那关中断的时候preempt_count有没有变化,源码里面没看到呢? 抢占的时机(具体记不住了~)应该都与中断相关,关闭中断,意味着没有了抢占时机。 书上的抢占关于抢占时机的解释,有一条是“重新变为可抢占的时候” 这个该怎么理解,我理解就是preempt_count重新变为0的时候,哪关中断难道也会改变preempt_count?源码里面没看到,不是很理解啊回复 2# humjb_1983ykai229 发表于 2014-04-21 19:14 static/image/common/back.gif
书上的抢占关于抢占时机的解释,有一条是“重新变为可抢占的时候” 这个该怎么理解,我理解就是preempt_cou ...
#define preempt_enable() \
do { \
preempt_enable_no_resched(); \
preempt_check_resched(); \
} while (0)
在preempt_enable的时候,会有抢占的时机。 回复 1# ykai229
中断返回,以及preempt_enable的时候。
Linux 3.4,
asmlinkage void __sched notrace preempt_schedule(void)
{
struct thread_info *ti = current_thread_info();
/*
* If there is a non-zero preempt_count or interrupts are disabled,
* we do not want to preempt the current task. Just return..
*/
if (likely(ti->preempt_count || irqs_disabled()))
return;
..................
}
很怀疑在关中断的时候会调用preempt_enable? 不管怎样,关中断是无法调度的。 看得我头晕,好复杂的概念。 主动放弃CPU呢?我理解的是关中断就关闭了抢占式调度回复 6# daniel_11
哪关中断和preempt_disable有关系?我想你说的preempt_enable的时候的抢占时机就是改变preempt_count的值吧回复 4# humjb_1983
ykai229 发表于 2014-04-24 23:03 static/image/common/back.gif
哪关中断和preempt_disable有关系?我想你说的preempt_enable的时候的抢占时机就是改变preempt_count的值吧 ...
关中断,即没有了抢占的时机。关抢占即禁止抢占。没有直接关系。
页:
[1]
2