数据结构
dague_scheduler_t sched_absolute_priorities = {
.name = “Absolute priorities”,
.global_init = init_absolute_priorities,
.thread_init = NULL,
.schedule_task = schedule_absolute_priorities,
.select_task = choose_job_absolute_priorities,
.display_stats = NULL,
.finalize = finalize_absolute_priorities
};
init
为每个EU(处理器的计算核心)定义一个queue (VP中所有EU共用一个queue,即每个VP对应一个system_queue)
schedule
初始状态将第DAG的根节点放入到queue中
当DAG中某个节点在某个EU上执行完成后会释放其子节点,并将其子节点根据VP(处理器)放入到对应的VP的readyList中,然后再将VP的readyList放入其queue中。在将任务放入queue的过程中根据优先级来决定放入的位置。
choose
从queue中取出最前面的task出来执行。