如何在minix中自定义proc.c以实现FCFS算法



我想自定义minix文件/usr/src/kernel/proc.c的代码来实现FCFS算法,但我没有任何想法或线索。我已经说过,当前的算法以一定的优先级工作,所有进程首先进入一个队列,然后使用某种算法,然后为进程分配一些优先级。但是,如果我需要实现FCFS,那么我应该只使用一个队列。

但是如何将这些事情联系起来呢?

一种可能性–可能不是一个好的–是修改enqueue()功能:

PUBLIC void enqueue(register struct proc *rp)   
{
    /* Add 'rp' to one of the queues of runnable processes.  This function is 
     * responsible for inserting a process into one of the scheduling queues. 
     * The mechanism is implemented here.   The actual scheduling policy is
     * defined in sched() and pick_proc().
     */
    int q = rp->p_priority;                       /* scheduling queue to use */

不分配rp->p_priority,只需分配0:

   int q = 0;

因此,所有进程都在一个优先级队列(队列编号0)中排队,并且您拥有一个FCFS系统。当然,这假设enqueue()是将进程添加到队列的唯一函数。它很有可能是唯一的一个,但你需要了解Minix内核的大部分内容才能确定。

有了这个修改,您就可以调查支持多个队列是否浪费了太多空间。如果有,您可以适当地调整队列声明。队列结构可能只是一个指针数组;因此,可用的空间节省不是很大。

但是,请注意,您可能不希望只使用FCFS;优先级队列存在是有充分理由的。例如,您的中断处理程序应该比SETI中的数字运算怪物更快地得到服务。这意味着需要有一些优先次序。

相关内容

  • 没有找到相关文章

最新更新