Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Operating system 循环调度:两种不同的解决方案-怎么可能?_Operating System_Scheduling_Round Robin - Fatal编程技术网

Operating system 循环调度:两种不同的解决方案-怎么可能?

Operating system 循环调度:两种不同的解决方案-怎么可能?,operating-system,scheduling,round-robin,Operating System,Scheduling,Round Robin,问题: 从A到E的五批作业几乎同时到达计算机中心。他们估计了10、6、2、4和8分钟的运行时间。其(外部确定的)优先级分别为3、5、2、1和4,其中5为最高优先级。确定平均过程周转时间。忽略进程切换开销。对于循环调度,假设系统是多道程序,并且每个作业都获得公平的CPU份额。所有作业都完全受CPU限制 解决方案#1以下解决方案来自: 对于循环赛,在前10分钟内,每个作业获得1/5的 中央处理器。在10分钟结束时,C结束。在接下来的8天里 分钟后,每个作业将获得CPU的1/4,之后时间D将完成。 然

问题:

从A到E的五批作业几乎同时到达计算机中心。他们估计了10、6、2、4和8分钟的运行时间。其(外部确定的)优先级分别为3、5、2、1和4,其中5为最高优先级。确定平均过程周转时间。忽略进程切换开销。对于循环调度,假设系统是多道程序,并且每个作业都获得公平的CPU份额。所有作业都完全受CPU限制

解决方案#1以下解决方案来自:

对于循环赛,在前10分钟内,每个作业获得1/5的 中央处理器。在10分钟结束时,C结束。在接下来的8天里 分钟后,每个作业将获得CPU的1/4,之后时间D将完成。 然后,剩余的三个作业中的每一个都会在6小时内获得1/3的CPU 分钟,直到B结束,依此类推。五分钟的结束时间 工作是10,18,24。28,30,平均22分钟

解决方案#2以下解决方案来自康奈尔大学,可以找到,与上一个解决方案明显不同,尽管问题以完全相同的形式给出(顺便说一句,这个解决方案对我更有意义):

请记住,周转时间是指经过的时间量 在作业到达和作业完成之间。既然我们假设 所有作业都在时间0到达,周转时间只是时间 他们完成了。(a) 循环赛:下表让我们休息一下 在每个时间段内,将处理其中的作业。A* 指示作业在该时间段内完成

结果是不同的:例如,第一个C在10分钟后结束,而第二个C在8分钟后结束


哪一个是正确的,为什么?我很困惑。。提前谢谢

事实上,没有“正确”的RR算法。RR仅仅是一系列算法,基于以循环顺序调度多个任务的共同概念。实现可能会有所不同(例如,您可以考虑任务优先级,或者可以丢弃它们,或者手动设置优先级作为任务长度的函数或其他任何东西)。
所以答案是——两种算法似乎都是正确的,它们只是不同而已。

事实上,没有“正确”的RR算法。RR仅仅是一系列算法,基于以循环顺序调度多个任务的共同概念。实现可能会有所不同(例如,您可以考虑任务优先级,或者可以丢弃它们,或者手动设置优先级作为任务长度的函数或其他任何东西)。
所以答案是——两种算法似乎都是正确的,它们只是不同而已。

问题不同。第一个问题没有指定时间量,因此您必须假设该量与一分钟相比非常小。第二个问题明确规定了一分钟的调度量


第二种解决方案的奥秘在于为什么它假定任务按字母顺序运行。我只能假设这是一个贯穿整个课程的假设,因此学生们应该知道在这里进行假设。

问题是不同的。第一个问题没有指定时间量,因此您必须假设该量与一分钟相比非常小。第二个问题明确规定了一分钟的调度量


第二种解决方案的奥秘在于为什么它假定任务按字母顺序运行。我只能假设这是一个贯穿整个课程的假设,因此学生们应该知道在这里做这个假设。

你可以假设(为了练习)量子是1分钟。我知道这是不现实的,应该是1毫秒左右,但为了使计算更容易,解决方案显然是使用1分钟的量子。如果是这样,第二种解决方案正确吗?至于第一个解决方案,既然我们不是在处理1分钟的量子,为什么C在10分钟后结束,而不是在3或2分钟后结束?你能给我一个公式/推理来帮助我理解这个结果吗?如果你假设1分钟的量子,第二个解决方案是正确的(除了它忽略了优先级,但那是另一个故事)。但这是一个不合理的假设,除非问题表明你不应该这样做。C在10分钟后完成,因为它需要2分钟的CPU时间,并获得CPU的1/5。因此需要10分钟才能获得2分钟的CPU时间。那时,所有进程都有2分钟的CPU时间,您可以计算每个进程还需要多少CPU时间。从那时起,他们得到1/4,直到另一个过程完成。等等,我不明白你的道理。它平均占用了1/5的CPU。由于它是循环的,CPU在任务之间交替,给每个任务一个非常小的量。C将在总共2分钟后完成。这将发生在10分钟加上或减去一个时间量左右,这比一分钟要少得多。(我们知道数字并不精确。我们必须做出许多假设,例如假设切换任务的成本为零。)只要所有五项任务都准备好运行,任务C将获得每分钟墙时间的1/5。当C完成时,时间将为10分钟。C将在这10分钟中的2分钟内获得CPU。其他任务将在其他8分钟内占用CPU。这段时间已经过去了10分钟。(我们不知道任务运行的顺序,也不知道它们在不被中断的情况下运行了多长时间,但我们不在乎。这都是关于任务切换开销的,我们可以忽略它。因此我们可以将它们视为并发运行。)第一个解决方案是相同的,除非您假设任务的特定顺序(如第二节所述)你可以
1 2 3 4 5  6 7 8  9 10  11 12 13 14  15 16 17 18  19 20 21  22 23 24  25 26  27 28  29 30  
A B C D E  A B C* D E   A  B  D  E   A  B  D* E   A  B  E   A  B* E   A  E   A  E*  A  A*