论文部分内容阅读
随着嵌入式计算及实时计算的迅速发展,嵌入式实时开发模式正在经历快速变革,与传统的采用汇编语言或者C/C++的开发模式相比,Java不仅在可移植性、高开发效率、低开发/维护成本等方面有自身的优势,而且能够提供更高层次的抽象水平,可以满足更高级别的数据建模需求,同时还具有强大的类库支持。Java的跨平台、面向对象、可靠性、语言级的并发支持、严格的类型检查、健壮、安全等特点,使其具备了作为嵌入式实时开发语言的基础,但是标准Java并非专门为实时应用设计,尚不能够完全满足实时系统开发的要求,还需要有针对性地进行Java的实时扩展和规范。随着实时Java社区的努力,以及Java实时规范(RTSJ)和安全关键Java(SCJ)的推出,扩展后的实时Java具备了作为嵌入式实时开发语言的资格,而且得到了一系列成功的应用。目前,针对实时Java及其支撑平台的研究逐渐成为热点,出现了一些支持实时Java的平台和虚拟机,这些平台和虚拟机大多以软件的形式实现。对于资源受限的嵌入式实时系统而言,软件Java平台和虚拟机由于通常存在着运行速度慢、执行效率低、资源开销大等问题,在发挥Java的性能优势方面仍然面临一定的困难。相对而言,采用Java处理器直接执行字节码,实现一种硬Java(hard Java)的引擎执行模式,可以在提高运行效率的同时,大幅度降低功耗与资源占有率,尤其适合资源受限环境的嵌入式实时Java应用。本文设计并实现了一款能够支持实时Java的用于资源受限环境的硬Java实时嵌入式平台hJrep(hard Java real-time embedded platform),并对其中的关键技术进行了深入研究和探讨。hJrep以Java处理器为执行引擎,以Java字节码作为本地指令,实现了对字节码的硬件直接执行。本文的主要创新性工作包括:(1)为硬Java实时嵌入式平台提出了一种运行时可预测的非堆内存模型,该模型消除了运行时安全访问检查对系统实时性的影响,在不改变Java句法与编程模式的前提下,保留了对非堆内存多线程共享及嵌套的支持。(2)提出了一套基于静态分析的单亲规则检查算法与赋值规则检查算法,该套算法可以在系统运行前静态完成规则检查,不对运行时系统产生影响,避免了动态分析与检查的运行时开销和实时性影响。(3)为硬Java实时嵌入式平台设计了一种改进的分代式垃圾收集器,该收集器针对目标环境特征,提供了适用于目标环境内存管理的高效低开销的回收策略,有效避免了频繁的次级收集暂停,避免了成熟空间收集的对象移动开销和内存碎片问题。针对垃圾收集,设计了一种适用于硬Java实时嵌入式平台的对象引用模型,该模型为对象追踪、堆空间扫描、同步等提供了有效支持。(4)为硬Java实时嵌入式平台设计了一种高效的可预测的方法调用实现模式,保证了方法调用的运行时可预测,提高了方法调用的执行效率,减少了方法调用的执行周期。