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_quantumおよびnew_cpu値を割り当てる場所に介入することを検討しています。これは良い考えでしょうか?つまり、次のような行を追加するだけnew_prio=4;で十分でしょうか? また、プロセスがカーネル プロセスであるかどうかを確認する方法はありますか? 優先度 0 がカーネル プロセスに似ていることはわかっていますが、すべてのカーネル プロセスの優先度の値は 0 ですか? プロセスの優先度が 0 より大きい場合にのみ、そのプロセスに新しい優先度を与えるとしたら、それはカーネル プロセスに介入しないということでしょうか?

質問が多すぎてすみません。前もって感謝します。

4

0 に答える 0