实时系统Java规范(RTSJ)对多处理器系统的支持解析
1. 锁技术与调度
在多处理器系统中,锁技术的选择对系统调度性能有着重要影响。如果相关技术得到改进,除非系统整体至少20%的时间处于临界区(实际中这种情况极不可能),否则基于挂起的锁机制在可调度性和延迟方面可能不会比自旋锁有明显优势。而且,采用何种锁技术还受到所需数据结构的限制,目前并没有简单通用的方法能针对特定数据结构创建非阻塞访问协议。
2. 操作系统对多处理器的支持
不同操作系统对多处理器系统的支持方式各有不同:
- RTEM :不会动态地在CPU之间移动线程,而是在链接时提供静态分配线程的机制。
- QNX的Nutrino :区分“硬线程亲和性”和“软线程亲和性”。硬线程亲和性允许程序员通过位掩码指定线程只能在一组处理器上执行;软线程亲和性则让内核将线程调度到上次执行的处理器上,以降低抢占成本。
- IBM的AIX :允许将内核线程绑定到特定处理器,还能动态更改分配给执行应用程序的分区的处理器集和内存量。
许多多处理器系统支持将中断定向到特定处理器。例如,ARM Corex A9 - MPCore支持Arm通用中断控制器,可针对每个硬件中断指定目标CPU列表,软件生成的中断也能进行灵活配置,但操作系统是否允许这种定向则是另一回事。
在安全关键系统软件中,可预测性至关重要,因为大多数故障需要通过分析或系统测试来检测。这就排除了在多处理器上进行灵活调度所固有的不确定性,甚至可能排除不同处理器上线程之间的交互。目前,通用多处理器系统在安
超级会员免费看
订阅专栏 解锁全文
43

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



