一种基于L4微内核的轻量级手机中间软件
2010-08-29朱建新赵亚辉
朱建新,赵亚辉
华中科技大学,湖北武汉 430074
0 引言
现在,随着手机硬件功能的快速增强,为了给手机提供灵活的应用执行环境,我们需要开发各种各样的手机操作系统和软件平台。本世纪初,手机WAP浏览器平台被用来访问WAP网页、图片和下载手机铃声。之后,一些应用平台也被用来提供手机的应用执行环境,比如移动虚拟机(Java、BREW、WIPI等)。但是多数移动虚拟机只提供子自己特定的执行环境,其应用程序不兼容其它平台。另外,多数手机应用程序是用有平台依赖性的API函数和库编写的,而且编译的方式也不同。由于最初手机硬件的限制,比如有限的CPU功能和内存空间,多数手机只包含一个单一的应用执行平台。但是,随着手机硬件的发展,在手机中应用复杂的软件架构也越来越容易,比如Android、Symbian OS、Windows Mobile等。
为了在单个设备上运行多重虚拟机,每个虚拟机都必须是像一个拥有分层软件模块的可执行目标一样可移植。另外考虑到手机设备的硬件资源有限的特征,为了减少程序执行的时间,手机设备中的软件系统必须是轻量级的。根据上面所述的需求,我们设计了一个基于L4微内核的轻量级手机中间软件。
1 相关研究
1.1 L4微内核
L4微内核是德国科学家Jochen Liedtke设计的第二代微内核中的一个族。它包含操作系统基本的服务,如进程控制、内存管理和进程间通信等。其进程间通信功能优于先前第一代微内核。优于其轻量级的体积和良好的性能,L4微内核适用于在嵌入式平台上实现虚级化。
在基于L4微内核的虚拟机系统架构中,虚拟化的操作系统和设备驱动分别作为一个服务进程运行在L4微内核上面,从而实现了虚拟化的用户操作系统内核与其它用户操作系统或设备驱动之间的隔离。每个系统调用都被转换成调用进程和目标服务间的进程间通信(IPC)消息。基于微内核架构的虚拟机的系统结构如图1所示。
图1 基于微内核架构的虚拟机的系统结构
图2 NICTA:Pistachio-embedded 系统架构
澳大利亚国家信息与通信技术中心(NICTA)的嵌入式实时操作系统研究小组以嵌入式系统为目标对卡尔斯鲁尔大学研发的L4Ka:Pistachio进行了扩展实现了一个嵌入式操作系统NICTA::Pistachio-embedded,其系统架构如图2所示。
这个操作系统的内核选用Iguana提供大多数系统都需要的基本服务,如内存管理和进程调度。在Iguana上面运行着一个完全虚拟化的用户态Linux内核Wombat。Wombat是高度轻量级的而且可以运行在ARM等多种不同的硬件平台上,它的性能和标准的Linux非常相近,甚至在一些性能指标上超过了Linux。
1.2 高通公司的MSM芯片架构和L4微内核
美国高通公司把L4微内核应用到了他们最新研制的拥有双CPU核(ARM9和ARM11)的MSM7000芯片上。在这个架构中,为了提高移动手持终端的处理性能和稳定性,操作系统被划分为应用操作系统和通信操作系统,且每个操作系统都运行在自己独立的CPU核上,这意味着系统同时在L4微内核上加载了两个操作系统。在应用操作系统一端,可以加载提供应用服务功能的Windows mobile或其它手机操作系统,在通信操作系统一端加载提供通信服务功能的L4/Iguana的REX实时操作系统。
1.3 传统的移动虚拟平台
Sun公司的J2ME平台、高通公司的BREW(Binary Runtime Environment for Wireless)[3]和 韩 国 TTA 公 司的 WIPI(Wireless Internet Platform for Inter-operability)[4]都是典型的支持动态安装应用程序的移动应用平台,它们可以在手机硬件平台上作为一个虚拟机运行,为许多不同的手机硬件平台提供通用的执行环境。传统的手机系统软件架构如图3所示。
图3 传统的手持设备软件架构图
图4 总体系统架构图
2 系统架构
我们提出的这种基于L4微内核的轻量级可移植中间软件可以在多种手机平台上运行应用程序。
2.1 总体系统架构
与前面讲述的高通公司的最新软件架构不同,我们的系统运行的目标平台是单处理器的嵌入式设备。在这个架构中,有一个主控制操作系统或进程运行在L4微内核上面,它把每个虚拟机都当作一个应用程序来执行。它们之间依靠进程间通信机制(IPC)实现通信,如图4所示。
2.2 支持多种虚拟机
大多数应用平台有着相似的架构和运行方式,在这些平台上运行应用程序时,需要向应用程序开发者提供一套应用程序接口(API),并把它们映射到系统的硬件抽象层。因此,我们设计一种在单个设备中同时支持多种虚拟机的通用硬件抽象层,就像第二部分提出的基于微内核架构的虚拟机的系统结构一样,每个虚拟机都作为一个服务运行在我们的系统中,它可以独立运行并下载自己的应用程序。
2.3 通用的硬件抽象层
大多数虚拟机都有各自支持的各种设备的硬件抽象层,同时又有相同的API函数,所以每种合适不同硬件平台的应用程序代码都是相似的。例如,BREW平台中,在嵌入式文件系统中处理一个文件,BREW的应用程序可以调用API函数IFILWEMGR_OpenFile()去调用在硬件抽象层中的函数OEMFS_Open()。同样的,在WIPI平台中,API函数MS_fsOpen()也为WIPI应用程序开发者提供调用相应的硬件抽象层函数的功能。
考虑到这些相似之处,为了支持系统顶层的应用软件层,我们设计了一个通用的硬件抽象层,它可以支持多种硬件平台,提供的服务由这些设备的具有代表性的功能组成。
为了将这个通用硬件抽象层应用到我们的手机中间软件中,它必须符合下面3个需求:
1)代码轻量级。传统上,大多数虚拟机需要它自己的硬件抽象层,其中实现一个接口函数就要数百行的代码。我们提出的这个通用硬件抽象层架构继承了一般的可调用函数,可以减少虚拟机的这些代码;
2)简单和灵活的移植性。由于我们封装了一般的可调用函数,在移植一个新的虚拟机时,每个接口都可以被简化;
3)可维护性和调试。在这个通用硬件抽象层架构中,函数调用都被集中管理并被简化,这样就可以减少对系统维护和调试的投入。
3 原型实现
1)主控制任务。它是一个守护进程任务,可以初始化和结束虚拟机。它同时用一个链表结构记录虚拟机运行信息。用这个任务提供的方法,系统可以获取虚拟机的一个句柄,用这个句柄可以控制虚拟机,并可避免重复执行虚拟机;
2)设备驱动服务(DDS)。它适合于各个设备驱动,比如LCD显示器、键盘、串行口和Flash驱动。每个设备驱动作为一个独立的服务运行,并在系统启动时被初始化。我们实现了四个设备驱动服务(LCD、键盘、串行口和文件系统),其它设备驱动如MSM6100芯片集中的射频设备驱动包含在高通公司的提供的函数库,并且在没有得到证书的情况下是被禁止使用的;
3)通用硬件抽象层服务(GPHAL)。是一个面向多种虚拟机的通用服务层,它可以为各种各样的虚拟机提供具体的API。每个虚拟机可以调用GPHAL应用程序接口去处理目标设备驱动。用这个层,可以减少为新建虚拟机调用抽象的API函数进行的移植包修改工作。
4 平台应用
尽管我们提出的这种中间软件是为拥有轻量级软件架构的手机系统设计的,不过它也可以适用于其它嵌入式设备。L4微内核是一个带有小TCB的轻量级内核,包含我们的中间软件层也只需要小于1M的存储空间,它也可以嵌入到感测器设备或感测网络中的一个感应服务中。另外,我们的平台有独立的设备驱动和通用硬件抽象层,可以为感测网络提供了灵活的软件执行环境。
5 结论
本文提出一个一个基于L4微内核的轻量级手机中间软件,它可以为多种虚拟机提供运行环境,并可以为在可移动设备和感测系统中的各种虚拟机提供灵活的软件架构。利用这个中间软件平台,为各种虚拟机开发的应用程序可以不加修改便可运行在同一款手机上。因此,这个轻量级的手机中间软件为各种智能手机提供独立的应用程序执行环境,并且使应用程序的移植和重用变得容易。
[1]Ben Leslie,Carl Van Schaik and Gernot Heiser。Wombat:a portable user-mode Linux for embedded systems。 In Proceedings of the 6th Linux。Conf.Au,Canberra,April,2005.
[2]Sun Microsystems。The Java ME Platform-Most Ubiquitous Application Platform for Mobile Devices.
[3]Qualcomm Inc。BREWapiTM OEM Porting Guide for MSMTM Platforms,2003.
[4]TTA,Wireless Internet Platform for Interoperability TTAS.KO06.0036/R3,2004,6.