在Minix中调整流程的优先级和时间片,在哪里以及如何?

时间:2014-12-26 20:22:42

标签: operating-system scheduling minix thread-priority

我试图改变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的情况下给进程赋予新的优先级,那么这是否意味着我不打算干预任何内核进程?

抱歉大量的问题,我有太多了。提前谢谢。

0 个答案:

没有答案