我正在研究Linux,并试图了解Robin调度算法是如何工作的。在kernel\sched_rt.c文件中,有一个名为task_tick_rt的方法定义如下:
static void task_tick_rt(struct rq *rq, struct task_struct *p, int queued)
{
update_curr_rt(rq);
watchdog(rq, p);
/*
* RR tasks need a special form of timeslice management.
* FIFO tasks have no ti
在工作中,我们得到了一组形式的约束(任务名,频率),其中频率是一个整数,这意味着每次调用任务"taskname“之间的节拍数。两个任务不能同时运行,每次任务调用都需要一个节拍才能完成。我们的目标是找到与约束集匹配的最佳时间表。
例如,如果我们得到约束{(a,2),(b,2)},那么最佳调度是"ab ab ab...“另一方面,如果我们得到约束({a,2},{b,5},{c,5}),那么最好的时间表可能是“算盘...”
目前,我们通过运行遗传算法来找到最佳调度,该算法试图最小化实际频率和给定约束之间的距离。它实际上工作得很好,但我想知道是否有更适合这类问题的算法。我试着在谷歌上搜