当前位置: 首页 > 知识库问答 >
问题:

为什么在多级反馈调度中不使用最短作业优先 (SJF) 算法代替最终级别的 FCFS

松元明
2023-03-14

在基本级别队列的多级反馈调度中,进程以循环方式循环,直到它们完成并离开系统。基本级别队列中的进程也可以按先到先得的方式进行安排。为什么不能将它们安排在最短作业优先 (SJF) 算法而不是先到先得 (FCFS) 算法上,这似乎提高了算法的平均性能。

共有2个答案

娄阳舒
2023-03-14

只有当进程在突发时间上有很大差异时,SJF算法才会给出更多的理解。然而,它并不总是比FCFS表现得更好。看看这个答案。

由于在多级反馈调度算法中,所有不能在前两个队列的规定时间段内完成执行的进程都被放在具有FCFS的最后一个队列中,很可能它们都具有较大的CPU突发,因此它们的突发时间不会有太大差异。因此,最好使用FCFS,为最后一个队列调度。

施晗日
2023-03-14

一个简单的原因:

当进程未能在较高级别队列中分配给它们的时间段内完成时,它们会落在基本级别队列中。如果你在基层队列中实现SJF算法,你可能会饿死一个进程,因为在一个较长的执行进程得到CPU之前,较短的任务可能会一直出现。

 类似资料:
  • 到目前为止,我们根据它们的到达时间(在FCFS调度中)调度这些进程。 但是,SJF调度算法根据其突发时间安排进程。 在SJF调度中,就绪队列中可用进程列表中的突发时间最短的进程将在下一个进行调度。 然而,预测一个过程所需的突发时间是非常困难的,因此这个算法在系统中很难实现。 SJF的优势 最大吞吐量 最低的平均等候时间和周转时间 SJF的缺点 可能会面临饥饿问题 这是不可实现的,因为一个进程的确切

  • 我熟悉最短进程下一个调度算法(SJF),它是一种非抢先算法。但是,该算法一次只能处理一个突发时间最小的进程。是否可以一次修改为“下一个最短流程2”? 所以对于这里提到的例子: 第一行表示进程总数。随后的行表示进程ID、到达时间、突发时间。 一次有两个流程的SJF计划将按如下方式工作: 这里 Idle表示当前有多少处理器空闲。在这种情况下,有2个处理器。可以观察到,在时间< code>t=4,有2个

  • 假设以下进程在指定的时间到达执行。每个进程将运行列出的时间量。 我想绘制甘特图并计算抢占式最短作业优先调度的平均等待时间。 解决办法 http://imgur.com/fP8u61C 等待时间为2毫秒。 请告诉我这是否正确。 我怀疑的步骤是,在进程B到达的3ms时,调度程序是完成进程A还是启动进程B。

  • 我正在尝试在java中编写CPU调度模拟器。进程按照顺序处理,因此应该首先处理具有最少突发时间(处理时间)的进程。在开始之前,我在ArrayList中输入所有进程,指定名称,突发时间 问题是进程有不同的到达时间。我如何编辑代码来考虑这个到达时间。 我只需要编辑代码的一部分,让我的进程具有最少的突发时间(相对于到达时间) 样本输出

  • 我已经创建了一个C程序来模拟非抢占式最短作业优先算法,但它在某些输入上有缺陷。最短作业优先算法程序接受所需数量的过程的到达和突发时间的输入,并将过程安排在两个阶段中。第一阶段涉及根据到达时间来安排节目,第二阶段根据突发时间来安排节目,假设它们的到达时间低于前一过程完成的时间。这一切最终都会被编译并显示出来。 这些是预期的结果: 这些是我通过我的程序获得的结果: 任何帮助都将不胜感激。谢谢!

  • 所以我正在研究调度,包括FCFS和最短作业优先。我首先真的在纠结我最短的工作,我看不到我的逻辑错误。我把它打印出来,有些数字是正确的,但不是全部。我使用的测试文件包含以下文本: 我使用 任何帮助,指针或代码,将不胜感激! 编辑我认为我的问题是基于sfj函数的逻辑。对于输入,第一列是进程id,第二列是到达时间,第三列是突发时间或进程需要cpu多长时间。 我得到的输出是: 当我真正期望时: