流程调度数学

时间:2012-01-12 11:06:14

标签: c math process job-scheduling

我有一个打印'A'3次的程序,每次打印之间有1秒的延迟。调用此程序一次需要2.00秒。

想象一下,我创建了一个作业调度程序,执行一个0.5秒的进程,然后切换到下一个进程(暂时暂停前一个进程,直到它再次到达它)。如果我开始上面提到的程序两次并在这两个程序上运行这个作业调度程序,那么总共需要4秒吗?

我已经对此进行了测试,但此刻,时间为2.5秒。谁能解释一下呢?

2 个答案:

答案 0 :(得分:3)

这两项工作可能并行运行。以下是对正在发生的事情的分歧:

  1. 时间0 - 任务1开始
  2. 时间0.5 - 任务2开始[全部运行]
  3. 时间2.0 - 任务1完成[任务1已经运行1.5秒]
  4. 时间2.5 - 任务2再跑完0.5秒。

答案 1 :(得分:0)

这完全取决于用于实现一秒延迟的机制。

如果它使用的是一个即使暂停作业也会继续滴答的实际时钟,那么就没有理由认为时间切片两个这样的作业应该比运行一个时间长两倍。事实上,像你描述的那样运行两个工作应该只需要两秒钟。您看到2.5s的原因可能是由于调度程序的粒度为0.5秒。

另一方面,如果通过旋转预定数量的CPU周期来实现延迟,那么执行时间确实会加起来。但是,没有为通用CPU设计的合理delay例程将以这种方式实现。