论文部分内容阅读
随着普适计算和移动计算的发展,嵌入式系统的开发与应用日渐备受关注。各种嵌入式设备不断涌现,对系统开发的效率提出了更高的要求。与传统的嵌入式开发语言C/C++和汇编语言相比,Java语言由于其纯粹的面向对象、语法结构简单易学、平台独立性、语言级支持并发、安全等特性,在嵌入式领域中的应用越来越广泛。同时Sun公司陆续推出一系列的Java嵌入技术,为Java在各种有联网要求的消费式电子系统中应用提供了支持。但是传统的Java技术应用于具有实时特性的嵌入式系统上,存在一些不足:Java语言规范要求延迟解析和初始化类,这会对实时程序的运行造成不可预测的延迟;垃圾收集器虽然减轻了程序员对内存管理的负担,但是它的调度不受开发人员控制,对实时系统特别是硬实时系统来说带来了不确定性;目前绝大多数Java虚拟机还支持即时编译(JIT),即动态地将使用频率较高的方法编译为本地机器码,这个过程也是不可预测的;Java规范没有严格的线程优先级声明,使得Java虚拟机并不能保证优先级高的线程永远运行。这些都造成了Java在实时系统中应用的困境,为了使Java能在实时嵌入式设备上发挥其优势,Sun公司联合IBM、Microware等公司制定了实时Java规范(RTSJ),定义了Java在实时环境中的行为,为实时Java平台的实现提供了参考。随着RTSJ的推出,对实时Java平台的研究和实现成为了关注的热点。根据国家自然科学基金项目---高可靠实时系统的计算平台(SoPC)研究(基金号:60703106)[1],本研究小组提出了一种对RTSJ支持的实时Java平台。本文主要针对Java应用于实时嵌入式系统中存在的问题以及相关技术进行分析,并为该实时平台提供了一个软件工具包。实时Java平台主要由执行引擎和支持实时性的软件环境组成。执行引擎有多种实现方式,包括基于软件的解释执行;提前编译;即时编译;Java硬件加速器以及Java处理器等。本研究小组设计并实现了基于Java处理器的执行引擎——Jpor32(Java Processor Optimized for RTSJ),将程序执行分为2个阶段:预处理和执行。类预处理器作为软件工具包中重要的组成部分,提前把标准Class文件中CISC的Java字节码转换成RISC指令码,并且消除了影响实时性能的操作,比如动态装载和解析类的过程,并最终生成一个结构清晰的可供Jpor32直接执行的内存映像文件,从而大大简化了实时Java处理器的设计复杂性。Jpor32由5级流水线组成,目前可以提供对大部分Java字节码的支持,采用预处理和微程序相结合的方式来保证Java字节码的流水线执行。支持实时性的软件环境也是实时Java平台必不可少的组成部分。主要由实时类库和实时操作系统组成。本文主要针对类库进行了分析和实现,首先通过对CLDC规范进行裁剪实现了核心类库,而后根据RTSJ从实时线程、内存管理、同步、调度、异步事件、异步控制转移和实时时钟等方面对类库进行了实时扩展。另外为了以后扩展的需要,对实时操作系统中的实时垃圾回收机制进行了分析。最后为了保证Jpor32的实时性,结合处理器的特性,利用静态的方法对其最坏情况执行时间(WCET)进行了分析,并得出结论。