我试图改变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的情况下给进程赋予新的优先级,那么这是否意味着我不打算干预任何内核进程?
抱歉大量的问题,我有太多了。提前谢谢。