利用实时Java设计数字音频系统

[10-10 20:36:41]   来源:http://www.88dzw.com  电子制作   阅读:8266

文章摘要:图2:硬实时JAVA翻译环境显示了各种工具之间的关系,这些工具可使实时组件的开发、维护和集成更容易。实时JAVA的能力 这些实时Java编程技术由RTSJ衍生发展而来。该规范具有很好通用性,能支持多种独特的实时编程要求。由于本文主要关注非常低级的实时软件,所以我们将开发人员的操作限定在完整RTSJ规范的子集范畴内。 这种概要分析可改善可移植性、可靠性和效率,因为它禁止使用一些需要很大的运行时间开销、会带来不可移植的实现依赖性、增加软件复杂度以致使程序员更容易出错的功能。硬实时概要分析和完整RTSJ之间一些特殊差异包括: (1)完整的RTSJ对同步锁采用优先级继承方法,并支持优先级限高仿真可选。

利用实时Java设计数字音频系统,标签:电子小制作,http://www.88dzw.com
图2:硬实时JAVA翻译环境显示了各种工具之间的关系,这些工具可使实时组件的开发、维护和集成更容易。

实时JAVA的能力

这些实时Java编程技术由RTSJ衍生发展而来。该规范具有很好通用性,能支持多种独特的实时编程要求。由于本文主要关注非常低级的实时软件,所以我们将开发人员的操作限定在完整RTSJ规范的子集范畴内。

这种概要分析可改善可移植性、可靠性和效率,因为它禁止使用一些需要很大的运行时间开销、会带来不可移植的实现依赖性、增加软件复杂度以致使程序员更容易出错的功能。硬实时概要分析和完整RTSJ之间一些特殊差异包括:

(1)完整的RTSJ对同步锁采用优先级继承方法,并支持优先级限高仿真可选。硬实时概要分析禁止使用优先级继承并要求支持优先级限高仿真。

(2)完整的RTSJ允许即时修改各种线程调度和对象同步参数。硬实时概要分析禁止对线程调度和同步协议进行即时调整。

(3)完整的RTSJ还支持一些机制,这样每当任务错过最终期限或超出其CPU时限时,就可以自动触发异步事件。请注意,这些服务的实现是完全不可移植的,而精确执行会带来极高的运行时间开销。此外,在硬实时应用中不需要运行时间限制,因为在程序执行之前,已经静态地满足资源预算和最终期限要求。因此,硬实时概要分析不支持这些机制。

(4)完整的RTSJ支持传统线程、访问垃圾收集堆的实时线程,以及不访问垃圾收集堆的实时线程的混合体。这种不同线程类型的混合大大增加了系统的复杂度和规模。这种复杂度将增加由于不同线程类型之间不能正确共享信息而导致的实时编程出错的可能性,硬实时概要分析仅支持不访问垃圾收集堆的实时线程。

(5)完整的RTSJ提供一系列可供应用程序员使用的库,以便举例说明动态内存范围,并在特定范围内分配对象。由于程序员在开发或集成采用嵌套作用域(nested scope)的组件时可能会产生许多小错误,所以这些库的使用尤其成问题。为执行正确的区域性存储器(scoped-memory)使用协议,RTSJ在每次读取和/或重写参考字段时都执行特殊的运行时检查。在完整的RTSJ中,运行时进行检查会使程序组件出错,从而使得程序由于非法分配、非法读取、区域性存储器协议错误、内存不足错误等原因,以运行时间异常方式终止执行。硬实时概要分析禁止使用RTSJ内存作用域(memory scope)操作库。相反,它要求程序员以编程注释的形式描述其对作用域内存(scoped-memory)的使用。在编译期间,这些注释可以被分析和执行,例如本文应用提到的@Scoped和@StaticAnalyzable注释。

(6)RTSJ不会为了中断处理或低级设备的I/O而对库进行标准化,而硬实时概要分析对这些库进行定义。

硬实时概要分析的商用化前实现试验显示,它运行在某些CPU密集型基准程序的速度比标准Java和完整RTSJ的速度快三倍。这是因为硬实时执行环境比标准RTSJ简单得多,并且它还用编译时间验证替代各种运行时检查。这种性能可以与相应的C和C++程序相媲美,有时甚至更好。

尽管采用受限的硬实时概要分析比采用传统Java更加困难,但这种平台的代码开发和维护要比用C或C++开发出的相应平台的维护容易。这是因为硬实时Java平台具有更好的可移植性,并提供高级的面向对象的抽象。此外,硬实时Java平台包括可使实时组件的开发、维护和集成更为容易的一些重要开发工具(图2)。

由于包含了强制严格遵守类型安全的字节码校验器,与C和C++相比,Java开发可提高可靠性和可维护性。C和C++程序员可以利用多种让使类型安全无效的机制,而有意或无意地利用这些漏洞将使代码更容易产生错误,并降低可移植性。

受限的实时环境提供了比传统Java更严格的字节码验证。特别是,图2中的硬实时验证器可确保指向堆栈分配对象的参数(指针)不会比对象本身的生存期更长。它也确保用专用@StaticAnalyzable注释标记的程序组件,可限制它们对可分析子集使用Java。与硬实时翻译器的集成,则能提供确定执行每个组件所需的CPU时间和堆栈内存上限的能力。

执行硬实时组件所需的所有临时内存分配,必须由正在执行线程的运行时栈来实现。执行从单主线程开始,而主线程的运行时栈代表了所有可重复使用的内存。对于由主线程派生的每个附加线程,它提供了部分运行时栈作为派生线程的运行时栈。

上一页  [1] [2] [3] [4]  下一页


Tag:电子制作电子小制作维修教程知识 - 电子制作

《利用实时Java设计数字音频系统》相关文章