关于内核调度的一点疑问
类似下面的函数:
signed long __sched schedule_timeout_interruptible(signed long timeout)
{
__set_current_state(TASK_INTERRUPTIBLE);
return schedule_timeout(timeout);
}
如果__set_current_state(TASK_INTERRUPTIBLE)执行完毕,定时器开启之前,发生中断有可能高优先级的其他进程抢占当前进程。那么当前进程是挂在等待队列吗?当前状态不是TASK_RUNNING,调度程序如何使其再次运行的?
signed long __sched schedule_timeout_interruptible(signed long timeout)
{
__set_current_state(TASK_INTERRUPTIBLE);
return schedule_timeout(timeout);
}
如果__set_current_state(TASK_INTERRUPTIBLE)执行完毕,定时器开启之前,发生中断有可能高优先级的其他进程抢占当前进程。那么当前进程是挂在等待队列吗?当前状态不是TASK_RUNNING,调度程序如何使其再次运行的?
作者: azfa123 发布时间: 2011-01-10
按楼主理解那可运行的程序对于单cpu情况下,岂不是只有一个了?
可运行的程序由多个可运行进程链表管理的。
可运行的程序由多个可运行进程链表管理的。
作者: EZWORD 发布时间: 2011-01-10