根据进程p的静态优先级static_prio计算该进程的时间片
(根据下面公式计算时间片)
static
inline unsigned
int
task_timeslice(task_t
*
p)
{
if (p->static_prio < NICE_TO_PRIO(0))
return SCALE_PRIO(DEF_TIMESLICE*4, p->static_prio);
else
return SCALE_PRIO(DEF_TIMESLICE, p->static_prio);
}
注:(1)
+--> (140 - static priority) * 20
| (static priority < 120)
(task_struct.time_slice) |
base time quantum = |
(in milliseconds) |
| (static priority >= 120)
+--> (140 - static priority) * 5
(2)
NICE_TO_PRIO(0) = 120
(3)
#define SCALE_PRIO(x, prio) /
max(x * (MAX_PRIO - prio) / (MAX_USER_PRIO/2), MIN_TIMESLICE)
--------------------------------------------------------
max(x * (140 - prio) / (40/2), 5) =
max(x * (140 - prio) / 20), 5)
(根据下面公式计算时间片)







注:(1)
+--> (140 - static priority) * 20
| (static priority < 120)
(task_struct.time_slice) |
base time quantum = |
(in milliseconds) |
| (static priority >= 120)
+--> (140 - static priority) * 5
(2)
NICE_TO_PRIO(0) = 120
(3)
#define SCALE_PRIO(x, prio) /
max(x * (MAX_PRIO - prio) / (MAX_USER_PRIO/2), MIN_TIMESLICE)
--------------------------------------------------------
max(x * (140 - prio) / (40/2), 5) =
max(x * (140 - prio) / 20), 5)