实时系统中异常处理程序调度算法解析
在动态、尽力而为的实时系统中,活动的调度面临诸多挑战,尤其是异常处理程序的调度。本文将深入探讨相关问题,并介绍一种名为 Handler - assured Utility accrual Algorithm(HUA)的调度算法。
1. 异常处理程序调度问题
在动态实时系统中,当活动出现故障(如时间约束违规)时,控制权会立即转移到与该故障类型关联的异常处理程序块。这些处理程序块可能有时间约束,并会与其他活动竞争处理器资源。
调度处理程序(及其关联活动)必须有助于实现系统范围的及时性最优。如果处理程序执行不及时,会降低及时性最优性,例如高紧急度处理程序被低紧急度非故障活动延迟,从而延迟高紧急度故障活动的恢复;高紧急度非故障活动被低紧急度处理程序延迟。
常见的调度处理程序的方法存在一些问题:
- 将处理程序建模为普通活动 :这种方法在活动释放时构建包含活动及其处理程序的调度表,但处理程序只有在活动失败时才需要调度,且活动释放时无法预测其是否会失败,所以这种方法不可行。
- 考虑活动故障时间为调度事件 :在活动故障时构建包含其处理程序的调度表,但在活动故障前无法确定处理程序是否能满足时间约束完成执行,且可能因系统过载导致处理程序不可行。
- 经典准入控制 :在活动到达时检查是否能构建包含所有已准入活动及其处理程序和新活动及其处理程序的可行调度表,若可以则准入,否则拒绝。但这会导致重要的新到达活动可能因不可行而被拒绝,而 UA 调度器则会尽力完成高重要性的新到达活动。
在硬