论文部分内容阅读
Java语言的面向对象、跨平台、语言级并发支持、安全等特性不仅使它在互联网领域得到广泛应用,也引起了嵌入式领域研究人员的高度重视,Sun公司希望能将Java语言改造成实时系统开发的主流语言来提高开发效率及增加系统安全性。传统Java技术应用于实时系统的主要不足之处表现为:由于Java虚拟机是在运行中对引用到的类进行动态装载、解析和连接,影响了系统的实时性。垃圾收集器(GC)的自动运行导致了任务执行时间的不可预测性。Java语言规范和Java虚拟机规范讨论线程调度的地方非常笼统,导致在不同虚拟机实现中线程调度特性表现不一致。在异常方面,由于Java虚拟机本身在异常表方面设计不合理,使得异常表的查询时间中包含了很多次的进栈出栈操作,造成了每次查询异常表的时间波动过大,不符合实时系统的要求。对于虚拟机的中断机制来说,现有的interrupted中断机制并不能完全解决已经出现的问题。这就使得我们对Java虚拟机提出了更高的要求。针对传统Java技术在实时方面的不足,Sun公司联合IBM、Microware等公司制定了实时Java规范(RTSJ),为实时Java平台的实现提供了参考。实时Java规范在内存管理、线程调度、异步事件处理、异步控制转移等多个影响实时性的方面进行了扩展,使得Java能够适用于实时系统。论文主要的研究内容是如何用软件的方式改进传统的Java虚拟机,使其克服异常抛出时间波动过大对实时的不利影响。首先,详细分析Java虚拟机的异常处理机制,找出其影响实时性的不足之处。针对此不足,提出一种新的线性数据结构代替虚拟机嵌套在Java栈中的异常表,使其查询异常表的时间基本随着异常表的长度呈线性改变。通过对五种不同异常的测试,说明此数据结构的运用可以提高虚拟机的运行效率和实时性。其次,由于RTSJ为了提高线程中的互相控制与限制,提出了ATC机制的概念,其间涉及到很多线程之间的信息的交互。为了在虚拟机中模拟出ATC机制的基本效果,提出了一个新的方法,在虚拟中的内存中开辟一段所有线程都可以访问的空间,用于存放各个线程有可能抛出的ATC异常(AIE)。在抛出的过程中也许会遇到一些特定的情况,本文模拟了其中的几种情况,确定证明讲这种结构运用于虚拟机中是可以实现ATC机制的。