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

系统编程|调度时间

游炳
2023-03-14

我正在尝试理解这些调度算法:

  • 先到先得(FCFS)
  • 最短作业优先(SJF)
  • 最短剩余时间(SRT)
  • 循环赛(RR)

因此,给定一些输入:

Process Name: A; Arrival Time: 0; Expected CPU Running Time: 3
Process Name: B; Arrival Time: 1; Expected CPU Running Time: 5
Process Name: C; Arrival Time: 3; Expected CPU Running Time: 2
Process Name: D; Arrival Time: 9; Expected CPU Running Time: 5
Process Name: E; Arrival Time: 12; Expected CPU Running Time: 5

FCFS将安排为AAABBBBBCCDDDDDEEE

我似乎无法弄清楚其余的。有人可以帮助我解释差异吗?

我试过谷歌搜索,但我为SJF得到的结果有点令人困惑。

共有1个答案

安明亮
2023-03-14

我只是给你一些提示。

对于SJF和SRT,你没有真正的定义——只要逻辑地思考名称。

对SJF来说,选择最短到达的未完成的工作。使用工作的总时间,即3,5,2,5,5 -不要在意已经为该工作安排了多少时间。

对于 SRT,选择剩余时间最少的到达的未完成作业。剩余时间简单地定义为总时间减去已安排的时间。因此,在时间 2 时,您将安排 AA,因此 A 的剩余时间为 3-2 = 1

对于SJF和SRT,冲突(当有两个工作时间相同的工作时)可能可以通过选择最先到达的工作来解决。对于 SRT,冲突也可以通过选择最长的工作来解决。您必须确认这一点。

注意,这些算法有两种变体——抢占式和非抢占式。简而言之,抢先意味着,在每一个时间步,你选择下一个要执行的作业。另一方面,对于非优先任务,一旦你选择了一个任务,你就安排这个任务直到它完成,不管是否有一个时间更短的新任务。更详细的解释见此。

对于RR,只需选择你选择的时间最长的一个。

 类似资料:
  • 主要内容:以下是纠正/补充内容:先来先服务(FCFS)调度算法根据其到达时间简单地调度作业。 就绪队列中第一个工作将首先获得CPU。 工作到达时间越少,工作得到的CPU就越快。 如果第一个进程的突发时间是所有作业中最长的,则FCFS调度可能会导致饥饿问题。 FCFS的优势 简单 容易 先到先得 FCFS的缺点 调度方法是非抢先式的,该进程将运行到完成。 由于算法的非抢先性,可能会出现饥饿问题。 尽管实现起来很容易,但由于平均等待

  • 主要内容:进程控制块中保存了什么?,为什么需要调度?在像MS DOS这样的单编程系统中,当进程等待任何I/O操作完成时,CPU仍然是空闲的。 这是一个开销,因为它浪费时间并导致饥饿问题。 但是,在多程序系统中,CPU在进程的等待时间内不会保持空闲状态,而是开始执行其他进程。 操作系统必须定义CPU将被给予哪个进程。 在多程序系统中,操作系统调度CPU上的进程以获得最大的利用率,此过程称为CPU调度。 操作系统使用各种调度算法来调度过程。 这是短期调

  • 问题内容: 使用Java计时器,然后切换到ScheduledExecutorService,但我的问题未解决。由于系统时间更改之前安排的任务(通过ntpd)不会按指定的延迟执行。没有日志,什么也没有发生:(。 在64位Linux上的目标中使用jre 1.6.0_26 64位。 更新: ScheduledExecutorService在Windows上运行正常。问题仅存在于运行64位JVM的基于64

  • 操作系统使用各种算法来有效地调度处理器上的进程。 调度算法的目的 最大CPU利用率 公平分配CPU 最大吞吐量 最短周转时间 最短的等待时间 最短响应时间 有以下算法可用于计划作业。 1. 先来先服务 这是最简单的算法。 最短到达时间的过程将首先获得CPU。 到达时间越少,进程得到CPU的速度越快。 这是非抢先式的调度。 2. 轮循 在循环调度算法中,操作系统定义了一个时间片(片)。 所有的进程将

  • 目录 28. 文件与I/O 1. 汇编程序的Hello world 2. C标准I/O库函数与Unbuffered I/O函数 3. open/close 4. read/write 5. lseek 6. fcntl 7. ioctl 8. mmap 29. 文件系统 1. 引言 2. ext2文件系统 2.1. 总体存储布局 2.2. 实例剖析 2.3. 数据块寻址 2.4. 文件和目录操作的

  • 问题内容: 我正在研究一个小型Java游戏,其中可能发生各种事件。至少有几十个基本事件,各种事件处理程序可能会对这些事件感兴趣。代码中还有几个地方可能会触发这些事件。我不是要让事件侦听器知道他们需要向哪个类注册,而是想创建某种集中式的消息调度系统,某些类会将事件提交到该系统中,而感兴趣的类可以加入以侦听某些种类的事件。事件。 但是我有一些疑问。首先,这似乎是一个显而易见的普遍问题。是否有简单的VM