gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:25:55 25 4
gpt4 key购买 nike

我想自定义 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;您还需要使用 FCFS。优先级队列的存在是有充分理由的。例如,您的中断处理程序应该比为 SETI 工作的数字运算怪物更快地得到服务。这意味着需要确定一些优先级。

关于c - 如何在minix中自定义proc.c来实现FCFS算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9854646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com