2012-03-05 76 views
0

我被赋予了一项任务。了解时间片和执行时间

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

乔布斯没有开始执行,并运行至完成,而是分享 处理器。操作系统执行称为时间片的时间固定单位 的作业。在时间片结束时,当前 作业的执行被暂停。然后,该作业将被放置在优先级为 的队列中,等待下一个处理器时间份额。然后将具有最高优先级的作业 从优先级队列 中移除并且针对时间片执行。首次生成作业时,如果处理器空闲,将立即开始执行 。否则它将被放置在优先级队列中。

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

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

请解释,如果我错了。谢谢

回答

0

在你是否被执行作业A或作业C的问题(一旦B是完整的)应该取决于什么时Queue的回报,这将是与工作最高优先级。

如果作业A具有1和作业C第2优先级的优先级,PriorityQueue中会返回作业A和应该得到下一个时间片。

如果作业C有2个优先级和作业B的4优先级,PriorityQueue中会返回作业C,并且应该得到下一个时间片。

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

0

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