1)prio 99的(可运行的)FIFO任务是否会抢占prio 90的(正在运行的)FIFO任务?
我相信答案是否定的,请发表评论
2)prio 50的(可运行的)FIFO任务是否会使用prio 99抢占(正在运行)RR任务(在RR时间片结束之前)?
我相信答案是肯定的,请发表评论
3)prio 99的(可运行的)RR任务是否会抢占prio 50的(正在运行的)FIFO任务?
我相信答案是否定的,请发表评论
假设有一个最新的Linux RedHat内核。
谢谢
亚历
答案 0 :(得分:0)
在Linux中,SCHED_FIFO和SCHED_RR共享实时优先级,至少在用户空间中从0到99(99为最高)。从现在开始,我假设您正在讨论这些优先级(rt_priority)而不是内部prio字段。根据此信息,您的方案应如何工作:
最后如果你在prio和rt_prio之间感到困惑,这里是它们之间的关系,它可以在函数normal_prio中找到
/*
* Calculate the expected normal priority: i.e. priority
* without taking RT-inheritance into account. Might be
* boosted by interactivity modifiers. Changes upon fork,
* setprio syscalls, and whenever the interactivity
* estimator recalculates.
*/
static inline int normal_prio(struct task_struct *p)
{
int prio;
if (task_has_dl_policy(p))
prio = MAX_DL_PRIO-1;
else if (task_has_rt_policy(p))
prio = MAX_RT_PRIO-1 - p->rt_priority; // This is for FIFO/RR Tasks
else
prio = __normal_prio(p);
return prio;
}