实时Java,第1部分: 使用Java语言编写实时系统 - 编程入门网
何引用其他内存区域对象的规则。更多的规则定义了作用域内存中的对象何时终结,以及何时可以重用内存区域。由于这些复杂性,建议只对那些不能够忍受 GC 暂停的组件使用不朽和作用域内存。
线程 RTSJ 增加了对两个新线程类的支持,它们为使用 RT 行为 RealtimeThread 和 NoHeapRealtimeThread(NHRT) 执行任务提供基础。这两个类为优先级、周期性行为、处理程序时限(当超过时限时将触发程序)以及除堆外的内存区域的使用提供了支持。NHRT 不能访问堆,因此,与其他类型线程不同,NHRT 很少会被 GC 打断或抢占。RT 系统通常将具有高优先级的 NHRT 用于那些延迟需求最严格的任务。将 RealtimeThread 用于那些延迟需求能够适应垃圾收集器的任务,将常规 Java 线程用于其他任务。由于 NHRT 不能访问堆,因此使用这些线程必须非常谨慎。例如,即使使用标准 JCL 中的容器类也必须小心,以避免容器类无意中为堆创建临时或内部对象。 同步 在 RT 系统中必须小心地管理同步,以防止高优先级线程等待低优先级线程的情况发生。RTSJ 包括了优先级继承支持,可以在发生同步时进行管理,并且还提供了线程通信的能力,而不需要通过无等待(wait-free)读写队列实现同步。 计时和时钟 与标准 Java 代码提供的时钟相比,RT 系统需要更高分辨率时钟。新的 HighResolutionTime 和 Clock 类封装了这些计时服务。 异步事件处理 RT 系统通常管理并响应异步事件。RTSJ 包含了对异步事件处理的支持,触发异步事件的事件包括大量包含计时器的源代码、操作系统信号、超过时限和其他应用程序定义的事件。 IBM WebSphere Real Time 要实现 RTSJ 需要来自底层操作系统及 JRE 组件的广泛支持。在 2006 年 8 月发布的 IBM® WebSphere® Real Time(参见 参考资料)与 RTSJ 全面兼容,并且包含了一些新技术,旨在改进 RT 系统的运行时行为并减少应用程序设计者创建 RT 系统时必须的工作量。图 1 展示了 WebSphere Real Time 组件简化后的表示: 图 1. WebSphere Real Time 概览 WebSphere Real Time 的基础是 IBM 的跨平台 J9 技术。Linux 操作系统应用了开源的 RT 补丁,提供了基本的 RT 服务以支持 RT 行为,特别是支持 RTSJ 规范要求的行为。得到极大加强的 GC 技术支持 1 毫秒的暂停时间。JIT 编译可用于软 RT 场景,其中编译将在不需要执行高优先级任务时发生。同样还引入了新的 Ahead-of-time (AOT) 编译技术(图 1 没有显示),为不适合使用 JIT 编译的系统提供了硬 RT 性能。接下来的几节将介绍每一种技术;本系列后续文章将详细阐述每种技术的工作原理。 实时Java,第1部分: 使用Java语言编写实时系统(3)时间:2011-06-22 Mark Stoodley MikeRT Linux WebSphere Real Time 运行在一个定制的完全开源的 Linux 版本上。其中进行了几处更改用以创建 RT Java 环境。这些更改提供了完全抢占式内核、线程中断处理程序、高分辨率计时器、优先级继承和健壮的互斥锁(mutex)。 完全抢占式内核 RT Java 线程是使用固定优先级 调度实现的,又称为静态优先级 调度,它使用先进先出(first-in-first-out)的调度策略。标准的 Linux 内核提供了软 RT 行为,尽管并没有保证高优先级线程在抢占低优先级线程时等待时间的上限,但可以粗略估算出时间为几十微秒。在 RT Linux 中,几乎每个内核行为都是抢占式的,因此需要减少低优先级线程被抢占的时间,并允许高优先级线程运行。剩下的不能被抢占的临界部分非常短,并且可以确定地执行。这三个等级的执行顺序将改善 RT 调度延迟,并且可以粗略测量为几十微秒。 减少延迟的线程中断处理程序 几乎所有的中断处理程序都被转换为运行在进程中的内核线程。由于处理程序变为用户可配置的、可调度的实体 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |