📅  最后修改于: 2023-12-03 15:09:58.809000             🧑  作者: Mango
截止单调CPU调度算法是一种实时任务调度算法,用于处理单调负载的实时任务。它可以保证最小化任务响应时间,同时避免过度抢占和任务饥饿。
单调性是指任务的期限严格递增,即 $D_i < D_j$,其中 $i<j$。这意味着任务集合是“单调”的,因为调度它们的顺序不应该影响它们的执行时间。单调调度可以通过静态分配保证任务执行完成,从而保证实时任务的响应性能。
截止单调CPU调度算法的流程如下:
def EDF(tasks):
"""截止单调CPU调度算法"""
# 按照任务期限从小到大排序
tasks = sorted(tasks, key=lambda x: x.deadline)
# 分配第一个任务
ET = tasks[0].start + tasks[0].exec_time
# 分配剩余的任务
for task in tasks[1:]:
if ET < task.start:
# 当前任务在前一个任务完成后开始
ET = task.start + task.exec_time
else:
# 抢占前一个任务
task.preemption_time = ET - task.start
ET += task.exec_time
return tasks