effective_prio()函数返回进程p的动态优先级
static int effective_prio(task_t *p)
{
int bonus, prio;
如果进程p是个实时进程,那么直接返回该实时进程的prio(实时进程的动态优先级prio不依赖于静态优先级static_prio,两者是否相等???)
|----------------------------|
| if ( rt_task(p)) |
| return p->prio; |
|----------------------------|
计算红利bonus:
|---------------------------------------------|
| bonus = CURRENT_BONUS(p) - MAX_BONUS / 2; |
|---------------------------------------------|
根据如下公式计算该进程动态优先级prio:
prio = max ( 100, min(static_prio - bonus + 5, 139) )
|------------------------------------|
| prio = p->static_prio - bonus; |
| if (prio < MAX_RT_PRIO) |
| prio = MAX_RT_PRIO; |
| if (prio > MAX_PRIO-1) |
| prio = MAX_PRIO-1; |
|------------------------------------|
return prio;
}
static int effective_prio(task_t *p)
{
int bonus, prio;
如果进程p是个实时进程,那么直接返回该实时进程的prio(实时进程的动态优先级prio不依赖于静态优先级static_prio,两者是否相等???)
|----------------------------|
| if ( rt_task(p)) |
| return p->prio; |
|----------------------------|
计算红利bonus:
|---------------------------------------------|
| bonus = CURRENT_BONUS(p) - MAX_BONUS / 2; |
|---------------------------------------------|
根据如下公式计算该进程动态优先级prio:
prio = max ( 100, min(static_prio - bonus + 5, 139) )
|------------------------------------|
| prio = p->static_prio - bonus; |
| if (prio < MAX_RT_PRIO) |
| prio = MAX_RT_PRIO; |
| if (prio > MAX_PRIO-1) |
| prio = MAX_PRIO-1; |
|------------------------------------|
return prio;
}