如何在xv6中实现优先级调度程序?

时间:2015-03-10 19:33:44

标签: c scheduling xv6

在xv6中实现优先级调度算法?

但是我无法理解如何处理这方面的日程安排。 我可以使用此代码设置优先级。

int
set_priority(int pid,int priority)
{
  struct proc *p;
  //acquire(&ptable.lock);
  //cprintf("Set Priority - %d \n",priority);
  for(p = ptable.proc; p < &ptable.proc[NPROC]; p++){
    if((p->pid == pid) || (p->parent->pid == pid)){
      p->priority = priority;
      return 0;
    }
  }
  //release(&ptable.lock);
  return -1;
} 

1 个答案:

答案 0 :(得分:3)

首先,您需要在struct proc中添加字段(优先级)。

struct proc{
   //
  ....
  int priority; // priority of the process
}

第二,您现在可以在proc.c编写自己的调度程序。

void scheduler(void){
    for(;;){
    //add your own priority scheduler here.
    }
}