实时系统中Ada与RTSJ互斥特性对比剖析
1. RTSJ对优先级反转的管理
RTSJ(实时Java规范)为解决优先级反转问题提供了通用、可扩展且颇具雄心的方法。它提供了抽象类 MonitorControl 以及非抽象子类 PriorityInheritance 和 PriorityCeilingEmulation 。 PriorityInheritance 是单例类,而 PriorityCeilingEmulation 针对每个上限级别都有不同的实例。程序可以将 MonitorControl 实例(即监控控制策略)分配给任何对象,并且能够动态更改分配,这意味着允许动态更改上限。系统还可以建立一个默认策略,用于管理后续创建的所有对象,初始默认策略是优先级继承,但在系统启动时可以覆盖。
线程在任何时刻都有一组优先级源,包括其基本优先级(反映显式调用的动态优先级更改)以及取决于该线程锁定对象的监控控制策略的其他值。例如, PriorityCeilingEmulation 实例的上限是锁定受此策略管理对象的任何线程的优先级源。线程的活动优先级是其优先级源值的最大值。进入同步代码会添加一个优先级源,离开同步代码则会移除一个优先级源,这两个操作都会影响线程的活动优先级。优先级源可以同步或异步添加/移除。
将优先级继承和优先级上限模拟集成到一个具有明确定义语义的通用框架中是一种新的尝试。在基本调度器下,对同步锁的访问由优先级排序的队列控制,在同一优先级内采用先进先出(FIFO)原则。当
超级会员免费看
订阅专栏 解锁全文
17

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



