论文部分内容阅读
近年来,随着嵌入式设备的蓬勃发展,各式各样的硬件设备、软件平台都被开发出来加入这场21世纪的移动通讯大战。在硬件设备上有Intel公司的StrongARM系列、Motorola公司的Dragon Ball系列等;软件平台有著名的嵌入式Linux操作系统、Microsoft的pocketPC、Accelerated Technology公司的Nuclues PLUS等。一个程序设计者如果想要设计出能横跨这么多平台的应用程序来,不是一件容易的事。因此,本身具有跨平台特性的Java技术就成为目前在手机、PDA等嵌入式系统中越来越受欢迎的热门软件平台。但是手机与PDA等诸如此类的嵌入式设备,本身的硬件运算能力不高且系统资源受限,而我们常见的Java版本例如J2SE、J2EE,体积过于庞大且有各式各样在这些嵌入式设备上所用不到的功能。因此为了满足嵌入式市场的需求,SUN公司推出了Java 2袖珍版——J2ME。但是J2ME的核心KVM大多归国外公司所有,而我国自己相应的商业化产品很少:且KVM的实现技术中仍有值得进一步研究和改进之处。基于以上原因,本文针对KVM的关键技术进行了深入的研究,为开发自主版本的高性能KVM奠定基础。本文在对用于嵌入式系统的现行实时调度算法和内存管理机制进行深入研究、分析和比较后,针对KVM的两个核心模块,线程调度和内存管理,提出了改进算法。这一改进措施有效的提高了系统的实时性能和调度的效率,并在很大程度上避免了原内存垃圾回收算法所带来的长“停顿”,更符合资源受限的嵌入式设备的应用要求。最后通过性能测试,验证了算法是切实可行的,且对系统性能有很大的改进。作者所做的主要工作有:1.对分块进行预处理,并相应改进了KVM里的线程调度算法以提高调度效率。在预审核器中增加方法引用属性和对象引用属性,将其扩展成预处理器,在分块到达之前先对分块进行预处理,以此来减轻KVM的负担;并与之对应提出一种基于抢占式的调度算法,将静态最优调度算法RMS和时间片轮转算法结合起来,以提高虚拟机的调度效率,增强其实时性能。2.在内存管理中,根据自适应的思想,引入了分代算法。由于对象的生命期不同,针对young代和old代中对象的不同特点,而采取不同的分配方法和垃圾回收算法。为了提高分配效率,在old代中划分了小对象区和大对象区,以节省分配时间。3.分代垃圾回收中,对young代和old代采取不同回收算法。在young代中,采用拷贝算法,并且在from子堆和to子堆的基础上,添加了eden子堆,以减小垃圾回收频率;old代中,引入增量收集算法中的三色标记算法,更好的避免了长“停顿”的问题。