实时 Java 系统中处理非周期性任务的方法
在实时系统中,处理非周期性任务是一个重要的问题。本文将介绍处理非周期性任务的两种通用方法:预留方法和松弛时间窃取方法,并探讨它们在实时 Java 规范(RTSJ)中的应用。
处理非周期性任务的方法
处理非周期性流量通常有两种通用方法:预留方法和松弛时间窃取方法。
预留方法
预留方法通过任务服务器预留时间片来处理非周期性任务。下面介绍三种常见的算法:
- 轮询服务器(Polling Server,PS)
- 原理 :PS 是一个周期性任务,具有优先级 $P_s$、周期 $T_s$ 和容量 $C_s$。从可行性分析的角度看,它与一个最坏执行时间(WCET)为 $C_s$ 的普通周期性任务完全相同。该任务可以访问一个队列,非周期性事件释放时会被加入队列。队列策略(先进先出、后进先出等)与 PS 的一般原理无关,也不影响硬任务的可行性分析。当服务器周期性释放时,其容量会重置为初始值。如果作业队列不为空,它会开始服务作业,消耗其容量,直到容量降为零。如果没有更多作业要服务,其容量会立即降为零。
- 缺点 :如果一个非周期性作业在服务器周期性激活后立即释放,且此时队列为空,该作业的服务至少要延迟到下一次激活。
graph TD;
A[服务器激活] --> B{队列是否为空};
B -- 是 --> C[容量降为零];
超级会员免费看
订阅专栏 解锁全文
11万+

被折叠的 条评论
为什么被折叠?



