如何实现/模拟作业调度程序?

时间:2014-07-21 07:48:44

标签: java c++ scheduler job-scheduling

我想开发一个基本的作业调度程序,当它们进入队列并调度它们并重新安排作业以满足其要求时,它们会占用新的作业。

我尝试将Scheduler实现为对象的队列,其中对象的格式为

class queueItem{
    job j;
    long start,end,duration;
    Boolean isStart,isEnd;
}

这是一种模拟作业调度的合适方法,还是有一个更好的实现方法,可以使用其中一种Pre-Emptive算法来计划作业开始,结束,持续时间列表。 对于那个问题,这可能是任何语言。只是提示如何处理它将是很好的。 在此先感谢:)

1 个答案:

答案 0 :(得分:1)

对于调度程序的含义来说太过分了。 - 计划工作的性质是什么? - 安排的要求和策略是什么?

通常,调度程序由几个逻辑组件组成

  1. 求职者,选择下一份工作的逻辑。
  2. 上下文切换器,执行实际作业切换(保存/恢复上下文信息,停止/启动作业)
  3. 触发器,这通常是计时器,但其他事件也很有用。
  4. 可选会计,这可能反过来为工作选择器提供统计数据。
  5. 对于支持抢先调度的系统,作业必须是可中断的。

    对于一个体面的调度程序,IMO应支持优先级,暂停和阻止事件(时间和其他事件)。

    这可能有以下数据布局:

    • LIST活跃[...]; //作业列表数组,每个优先级一个列表
    • LIST睡觉; //暂停的工作
    • LIST僵尸; //完成工作,等待清理
    • JOB * current_job;
    • 时间过去了; //自作业切换后经过的时间
    • 时间量; //当前工作的预算直到下次切换

    N.B。这可能过于简化了。