KVM在基于构件的嵌入式操作系统上的移植和研究.pdf
《KVM在基于构件的嵌入式操作系统上的移植和研究.pdf》由会员分享,可在线阅读,更多相关《KVM在基于构件的嵌入式操作系统上的移植和研究.pdf(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、收稿日期:2004-09-02;修返日期:2004-10-16基金项目:国家“863”计划资助项目(2001AA113400)KVM 在基于构件的嵌入式操作系统上的移植和研究*叶 磊1,陈 榕2,赵岳松1(1.武汉理工大学 计算机科学与技术学院,湖北 武汉 430070;2.上海科泰世纪科技有限公司,上海 201203)摘 要:新信息家电时代的到来,嵌入式操作系统已经发挥了重要的作用,目的就是在资源有限的移动设备和家电产品上提供给用户稳定而丰富的使用功能。特别在目前手机移动开发上,Java 技术提供给用户多种应用服务,所以发展空间比较大。介绍在中国自主知识产权的基于 CAR 构件技术的智能手机
2、操作系统 EiaME(EiastosMobiie Edition)上,嵌入式 Java 虚拟机的移植和研究,考虑如何实现 KVM 的本地接口和图形界面等。关键词:KVM;构件;CAR 技术;嵌入式操作系统;移植中图法分类号:TP314 文献标识码:A 文章编号:1001-3695(2005)09-0025-03Porting and Research of KVM on Component-based Embedded Operating SystemYE Lei1,CHEN Rong2,ZHAO Yue-song1(1.Dept.of Computer Science&Technology,
3、Wuhan Uniuersity of Science&Technology,Wuhan Hubei 430070,China;2.Shanghai KoretideCorporation,Shanghai 201203,China)Abstract:With the advent of new information appiiance times,embedded operating systems have graduaiiy become signifi-cant.The embedded operating systems,which run on the resource-iimi
4、ted mobiie devices and appiiance,provide and supportvarious appiications for the consumers.Especiaiiy in the mobiie phone deveiopment,the Java technigue offers the users manykinds of appiication services.This trend is stiii going on,which wiii make Java the genuine network ianguage running on aiithe
5、 devices.This paper introduces the CAR(Component Appiication Runtime)based mobiie phone operating system EiaME(Eiastos Mobiie Edition),and discusses the KVM porting on the EiaME.It focuses on the impiementation of KVM porting,such as native interfaces,GUI,and etc.Key words:KVM(Kiio bytes Virtuai Mac
6、hine);Component;CAR Technigue;Embedded Operating System;Porting 在目前的移动信息设备市场上,特别是以发展最快的手机为代表,各个厂商都推出了具有特色功能和服务的产品。在无线通信技术由 2.5G 走向 3G 的时代,智能手机操作系统发展迅速,更进一步推动了移动通信的发展。智能手机不光再是基本的通信功能,更重要的在于强大的个性化服务和“多合一”式的应用组合,如支持 Java、BREW、MMS、WAP、GPS、电子词典、电子地图、Office、视频点播、电视等多种功能。现在 Java 技术十分流行,发展势头强劲,而且在 SUN 公司推出了
7、 J2ME 平台后,众多移动式系统都纷纷支持 Java 应用程序。由于 Java 已经成为了业界公认的通用网络语言,具有超强的跨平台性,所以 Java 这种 Write once,run anywhere on any-thing safeiy 特性被目前几乎所有的手机系统开发商所承认并运用。无一例外,当今的智能手机操作系统都支持 KJava 技术。为了保证手机操作系统支持运行 Java 程序,需要将 Java虚拟机移植到手机操作系统上。由于手机这种移动式信息设备采用都是小容量的 Fiash 和 RAM,所以就要求虚拟机体积更小,实时效率更高,故而这种 Java 虚拟机被称为 KVM。由于 J
8、2ME 是以消费性产品为目标而设计的 Java 运行环境,专门针对移动电话、数字机顶盒和汽车导航系统,因而影响力巨大,就连现在刚研制的 ARM10 内核 RISC 处理器都专门针对 Java 字节码的执行采用了 Jazeiie 加速技术和 SoC 片上解释Java 字节码,所以在嵌入式操作系统一级移植 KVM 就是必然的趋势。本文将根据科泰世纪公司的 EiaME 智能手机操作系统,来分析研究 KVM 的原理和移植中采取的方法,以及如何使基于构件的 EiaME 和 KVM 协调工作。1 ElaME 手机操作系统和 CAR 技术简介EiaMe 智能手机操作系统是科泰世纪公司在 2004 年 8 月
9、完成并推出的一款具有中国自主知识产权的嵌入式操作系统。它是在 Eiastos(中文名为“和欣”)嵌入式操作系统上对文件系统、内核、图形系统和基于 ARM 开发的 BSP 部分以及功能应用方面进行了修改和强化后,得到的一个面向移动手机的智能操作系统。EiaME 是一个完全面向构件技术的操作系统,它基于灵活内核,具有多进程、多线程、抢占式、基于线程的多优先级任务调度等特性。它支持 NOR Fiash 和 NAND Fiash 作为存储器设备,采用了 ktfs 和 yaffs 文件系统,全面兼容 FAT。众所周知,在当今世界智能手机操作系统领域,主要有Symbian OS,Paim OS,Windo
10、ws CE 和新兴的 Linux。那么EiaME相对这些操作系统来说,最大的优势就在于自身是完全面向CAR 构件的。CAR 构件技术就是一种面向构件编程的编程模型,其中规定了一组构件间相互调用的标准,使得二进制构件能够自描述,能够在运行时动态链接。更重要的是 CAR 完全52第 9 期叶 磊等:KVM 在基于构件的嵌入式操作系统上的移植和研究 兼容微软的 COM,但是和 COM 相比删除了 COM 中过时的约定,禁止用户定义 COM 的非自描述接口,完备了构件及接口的自描述功能,实现了对 COM 的扩展。CAR 技术支持了软件的二进制复用,可以说整个 EiaME 就是众多构件拼装在一起的功能整
11、体。在 EiaME 中集成了 CAR 运行环境,能够对软件构件进行充分的支持,使得内核具有伸缩性和灵活性。因此,在移植KVM 时,可更加方便地利用操作系统提供的一组动态链接构件库,如图形系统构件库、网络系统构件库等,来完成 KVM 内部机制、本地接口、图形界面及多媒体应用等功能。2 KVM 的原理和工作机制KVM 是一个很适合在移动掌上设备上使用的虚拟机。最早的 KVM 实例是在 Paim OS 上实现的,当时 SUN 公司刚刚推出 JZME,Paim OS 就首先尝试了这个新技术,使得很多的 Java程序(Spotiet)在上运行。现在,很多移动设备都将 KVM 放置到了自身的产品中。其实
12、KVM 就是 JZME 的实例,是包括了Configuration 和 Profiie 等规定而形成的虚拟机。JZME 的结构是专门针对多样化的嵌入设备和消费电子设备而设计的,由配置(Configuration)、简档(Profiie)和可选包(Optionai Package)三要素构成。Configuration 是一个规范,定义了这类设备的共同 Java 平台,定义与设备无关的 Java 虚拟机和核心库,是平台相容性的基础。Profiie 是一组 API,在某一 Configuration 的基础上扩展了针对设备特定功能的 API。在目前的手机操作系统上,都采用由 Configurati
13、on 定义的 Java 虚拟机运行于设备的宿主操作系统之上,构成整个平台的基础。通过 Profiie 提供针对设备的特殊功能 API 和扩展类库,来支持Java 程序顺畅地运行在智能移动手机上。在向 EiaME 上移植KVM 时,Configuration 采用了 CLDC l.l(Connected Limited De-vice Configuration),Profiie 选用了 MIDP Z.0(Mobiie InformationDevice Profiie),这也是目前众多手机操作系统所采用的方案。一方面 JZME 规范发展强劲,Java 程序员只需透过 SUN 制定的MIDP 应
14、用程序设计接口来撰写手机的程序便可以达到跨平台的目的,而这一切的功能都由底层 KVM 来处理;另一方面,KVM 的原始程序代码是免费的,从而可以降低开发成本,而且KVM 移植成功的例子很多,借鉴的经验也不少。图 l 是 KVM和 EiaME 智能手机操作系统的整体结构示意图。为了严格控制 KVM 的体积,CLDCl.l 仅仅提供了一个核心类函数库,包括 Java.iang.*,Java.io.*,Java.utii.*,以及一个 JZME 开发包 Javax.microedition.*。通常,KVM 会占用系统 RAM 中的 lS0KB 左右,其中大部分用作 Java 堆,来保存全局的类信息
15、、字符串信息和动态执行栈信息。EiaME 操作系统是一个 3Z 位的嵌入式操作系统,而 Java 堆的最小组成单位是 Ceii,是 4 个字节,这样恰好是系统中的一个字,在移植时就不用考虑字节、半字和字的转换问题。由于在目前的手机上采用的 ARM 处理器主频都在 Z00MHZ 400MHZ 之间,而且系统中内存和 ROM 容量都极其有限,如果按照 PC 上 Java 虚拟机的执行流程显然是行不通的。所以对嵌入式 Java 虚拟机进行必要的裁剪是非常必要的,移植后所追求的目标也就是高效、稳定、资源消耗小。一方面,KVM 本身剔除了复杂而耗资源的Java 字节码审核器,取而代之的是一个简单的、轻量
16、级审核器,而把原来的大部分工作放到 PC 端来处理,从而减轻了移动设备的负担;另一方面,通过利用大量的 KVM 本地接口 KNI 来直接调用 EiaME 操作系统的系统调用,可以提升 KVM 的运行速度。这些方面在移植过程中,都进行了非常细致的考虑。图Z 就是 KVM 运行过程的示意图。从图 Z 可以看出,KVM 的工作原理基本与传统的虚拟机相同,负责解释字节流的 ciass 文件,调用相关系统接口来执行Java 程序,但在效率上进行了比较多的改进和考虑。正如前面介绍的,EiaME 是基于 CAR 构件技术,直接支持构件(DLL 文件的形式)在操作系统上运行。而现在 KVM 移植到 EiaME
17、上,在下层与操作系统有关的交互部分仍然可以直接使用系统构件库中提供的软构件,仅仅只需将构件(DLL 文件的形式)加入到移植代码中,这样可以利用构件和 EiaME 灵活内核的特性来优化和提升 KVM 的性能。虽然 KVM 并不是遵循 CAR模型的,这里称为“异形构件”,但仍然可以在移植代码中利用CAR 构件,使得这个异形构件也能运行在 EiaME 上,从而使操作系统自始至终控制程序运行的主动权,保证了系统稳定和安全,这也是 KVM 移植过程中需要注意的问题。3 KVM 移植的实现3.1 KVM 移植的框架设计根据 SUN 公司的报告,KVM 几乎可以运行在任何操作系统平台上。虽然获得了原始的程序
18、代码,但结合 EiaME 的特性还是必须进行有效的修改。由于 EiaME 是基于 CAR 构件技术的,所以在很多地方都可以运用构件,从而避免了复杂的程序编写。总的来说,KVM 的移植主要有系统一级和应用一级两个层面,分别对应于 CLDC 和 MIDP 的移植。在 KVM 移植中,有一些具体的问题,如浮点数的支持、大小头的问题、线程管理、时钟管理、内存管理支持、图形用户界面、语言问题等。目前,像其他的智能手机操作系统一样,EiaME 主要运行在ARM 上,这也是今后的发展方向,所以对于浮点数的支持、大小头的问题就比较容易解决。ARM 处理器本身支持大头和小头两种数据结构,只需对 CPU 进行一些
19、设置这就可以了,而且ARM 的协处理器可以支持浮点运算,即使没有这些功能,Ei-aME 底层也会通过软件模拟的方式用整数运算来做浮点运算,因此浮点运算的问题也迎刃而解。而且,EiaME 提供了大量的函数方法,如智能指针、Eiastos API 和 CRT(C Run-TimeLibrary)等,还有系统的构件库,这些在线程管理、时钟管理、内存管理支持、图形用户界面、语言问题等方面发挥了重要的作用。图 3 是 KVM 移植到 EiaME 上的整体框架设计图。3.2 KVM 中 CLDC 移植的实现CLDC 是整个 KVM 的基础和核心,负责调度虚拟机来正常工作,处理执行 Java 字节码。KVM
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- KVM 基于 构件 嵌入式 操作系统 移植 研究
限制150内