1

我正在尝试更改 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_prionew_quantumnew_cpu。这是个好主意吗?我的意思是只添加一行,new_prio=4;就足够了吗?另外,有没有办法查看一个进程是否是内核进程?我知道 0 优先级类似于内核进程,但是所有内核进程的优先级值都为 0 吗?如果我只在一个进程的优先级值大于 0 时才赋予它新的优先级,那是否意味着我不会干预任何内核进程?

对不起,问题太多了,我有太多了。提前致谢。

4

0 回答 0