了解时间片和执行时间

时间:2012-03-05 08:47:43

标签: java

我接到了一项任务。

  

编写程序以模拟操作系统中的作业调度。   作业随机生成。每项工作都是随机的   优先级从1到4 - 其中1是最高优先级 - 并且是随机的   完成执行的时间。

     

作业不会开始执行并运行完成,而是共享   处理器。操作系统为固定单元执行作业   时间称为时间片。在时间片结束时,当前   工作的执行被暂停。然后将工作放在优先级上   队列,它等待下一个处理器时间份额。工作   然后从优先级队列中删除具有最高优先级的   并执行一个时间片。首次生成作业时,它会   如果处理器空闲,则立即开始执行。否则它   将被放置在优先队列中。

     

在此作业中,您需要实现队列和a   优先队列。您可以在Java类中使用优先级队列   库(java.util.PriorityQueue)。它实现了接口   java.util.Queue中。

我混淆时间片和执行时间.. 正如我现在的理解是让最后的int timeslice = 3,完成所有工作的时间是最终的时钟= 20分钟。 当作业A从0分钟开始时,执行时间为5(在1-5之间随机生成)。 执行作业直到分钟3.Job A被置于优先队列,而作业B执行时间为2分钟进入第3分钟?完成作业B后,作业A进入完成执行或作业C?

如果我错了请解释。感谢

3 个答案:

答案 0 :(得分:0)

PriorityQueue始终返回优先级最高的任务,因此只要添加回队列,它就会一直返回。我建议您尝试实施解决方案,看看它是如何工作的。 (或使用PriorityQueue编写简单的测试程序)

答案 1 :(得分:0)

首先,这是一项非常好的任务。您需要实现操作系统如何工作以调度作业/任务的确切机制。请参阅这些参考资料以清楚地了解它。

1)http://oreilly.com/java/archive/quartz.html

2)Job Scheduling Problem in Java

答案 2 :(得分:0)

在你的Job A或Job C是否被执行的问题上(一旦B完成),它应该取决于PriorityQueue返回的内容,这将是具有最高优先级的作业。

如果作业A的优先级为1,作业C的优先级为2,则PriorityQueue将返回作业A,并且应该获得下一个时间片。

如果作业C的优先级为2,作业B的优先级为4,则PriorityQueue将返回作业C,并且应该获得下一个时间片。

正如adn_295所说,这是一个很好的任务。