我正在尝试更改 Minix 中进程的优先级。现在我正在考虑改变schedule_process
下的方法minix/servers/sched/schedule.c
原始代码如下所示:
static int schedule_process(struct schedproc * rmp, unsigned flags){
int err;
int new_prio, new_quantum, new_cpu;
pick_cpu(rmp);
if (flags & SCHEDULE_CHANGE_PRIO)
new_prio = rmp->priority;
else
new_prio = -1;
if (flags & SCHEDULE_CHANGE_QUANTUM)
new_quantum = rmp->time_slice;
else
new_quantum = -1;
if (flags & SCHEDULE_CHANGE_CPU)
new_cpu = rmp->cpu;
else
new_cpu = -1;
if ((err = sys_schedule(rmp->endpoint, new_prio,
new_quantum, new_cpu)) != OK) {
printf("PM: An error occurred when trying to schedule %d: %d\n",
rmp->endpoint, err);
}
return err;
}
我正在考虑干预它分配的位置new_prio
和new_quantum
值new_cpu
。这是个好主意吗?我的意思是只添加一行,new_prio=4;
就足够了吗?另外,有没有办法查看一个进程是否是内核进程?我知道 0 优先级类似于内核进程,但是所有内核进程的优先级值都为 0 吗?如果我只在一个进程的优先级值大于 0 时才赋予它新的优先级,那是否意味着我不会干预任何内核进程?
对不起,问题太多了,我有太多了。提前致谢。