随着数据通信的发展和无线网络的完善,无线数据通信的速度也不断提高。因此,为们对于手机的要求已不只是具有语音能力,要求提供良好数据服务的呼声越来越高。无线信息设备(wirless information device)就是在这种形式下产生的一种集手机和PDA功能为一体的新型手持设备。它不仅具有移动电话的全部特点,而且支持PDA的功能,如文件处理、电子邮件、与PC机数据同步、记事本以及多媒体等。这类设备型号多样,更新迅速,既能接入公用无线通信网,又可与其他设备互联,满足了各层次用户的不同需要,是未来几年无线信息产品的发展趋势。
无线信息设备的内存、电池和CPU计算能力都比较有限,因此,对于所采用的操作系统具有特殊的要求:操作系统占用内存要尽量少,并且支持高效的多任务及进程间通信机制;具有有效的电源管理功能,适合利用电池供电;采用面向对象的设计方法,软件程序代码具有良好的可重用性;提供友好的图形用户界面;确保用户数据安全可靠地存储;支持多种标准通信协议,以便接入国际互联网和与其他设备互连;最好能提供开放的应用程序平台,便于第三方软件开发商提供多样的应用程序。
为开发一种适用于无线信息设备的通用操作系统,诺基亚、爱立信、摩托罗拉和Psion公司在1998年成立了一个联合企业Symbian,而后又有松下、西门子、三洋等公司加入。EPOC是1999年由Symbian宣布的32位操作系统,并在其后得到不断完善。现在,许多商用无线信息设备都采用EPOC作为操作系统,如诺基亚的9210以及爱立信的R380、MC218等。
一、EPOC操作系统简介
EPOC采用基于静态优先级的抢先式多任务机制并且配合时间片轮转,构成简捷、高效的核心,支持强大的通信及多媒体功能。Symbian公司在提供EPOC操作系统的同时, 针对无线信息设备的不同市场需求还推出两类设备参考模型(device family reference design)[1];Communicator和Smartphone。前者是以数据处理为主,以传统话务功能为辅;后者则恰好相反。Communicator包括Crystal和Quartz两种模型,Smartphone只有一种模型Pearl,如图1所示。由于每种模型都包括了基本的硬件和常用的应用程序软件,因此,无线信息设备厂商可以在此基础上集中精力开发附加的特有软硬件,从而缩短产品开发周期,加快成品推向市场的速度。
EPOC操作系统的主要特点:
*高可靠性。具有高效电源管理机,而且即使在电池耗尽的情况下,也能确保不丢失任何用户数据。由于采用特殊的编程规范,可以有效地管理系统内存资源的分配和回收,不会壬内存的泄漏。因此,以EPOC为操作系统的设备可连续运行多年而不需重新启动,这也是对无线信息设备的基本要求。
*采用面向对象的设计和编程,程序代码具有很好的可重用性。EPOC提供各种常用的32位应用程序接口函数,而且具有图形用户界面编程框架,可以方便地创建用户应用程序。系统支持Unicode,容易进行本地化。
*提供多种通信协议。支持标准的国际互联网通信协议(TCP/IP、PPP、Telnel、HTTP),电子邮件协议(POP3、SMTP、IMAP4);提供GPRS、WAP等标准协议栈;具有蓝牙协议模块,增强了与其他设备的互连性;可以通过电缆或红外与PC机相连,进行数据同步和备份。
*参考模型的硬件配置充分考虑了无线信息设备的未来需求。采用ARM系列RISC处理器,具有较强的处理能力。利用ROM进行永久程序存储,并可通过外加快闪存储卡来扩展系统存储量。支持高分辨率彩色显示、触摸屏和笔输入,具有多媒体功能。
二、EPOC系统结构
EPOC操作系统采用模块化分层结构,其系统由许多模块组成。不同模块完成不同的功能,大的模块又分为几个组件。这种模块在保证整体结构紧凑的基础上,减弱了不同软件模块之间的依赖性,使得系统易于扩充。
EPOC系统有4个最主要的组成部分,如图2所示。
1.内核
内核是整个操作系统的核心部分,在处理器特权级执行,其他模块运行在用户级。内核还包括硬件设备驱动,负责最基本的操作系统功能,包括电源管理、内存管理、进程管理和必需的文件管理。内核通过底层函数库为执行在用户级的应用程序提供服务。由于采用ARM系列RISC处理器,EPOC利用二级页表机制进行寻址,为每个应用程序提供虚拟地址空间,以加快上下文切换速度。抢先式多任务机制允许多个自己的线程,同一进程中的多个线程能共享内存资源。系统调试时高优先级进程比优先级进程先得到CPU资源,相同优先级的进程按时间片轮转法分享CPU资源。
2.应用程序
应用程序可以直接和用户进行交互。每个应用程序是单独的进程,拥有自己的虚拟地址空间。
3.管理程序
EPOC系统采用客户/服务器形式来简化并获得高效的进程间通信。管理程序是不直接与用户交互的程序。它管理一个或多个系统资源,执行服务器的功能,通过API函数为客户提供服务。其客户可以是应用程序或其他的管理器。
文件管理器、窗口管理器和通信管理器是EPOC系统中最主要的管理程序。文件管理器负责文件处理,窗口管理器是EPOC高效率事件处理机制的核心,通信管理器提供了对多种通信协议的支持。在EPOC系统中,每个应用程序和管理程序都是独立的事件处理线程。窗口管理器负责提供用户、用户程序和操作系统内核间的事件传递。按键、笔等输入事件先传给窗口管理器,由它将事件发送给应用程序。应用程序完成相应的事件处理后,通知窗口管理器,并由窗口管理器负责处理应用程序的屏幕重画请求。事件处理过程如图3所示。通信管理器分为串行通信管理器、管道管理器和电话应用管理器三个部分。串行通信器提供串行通信的支持;管道管理器利用通用的管理机制支持TCP/IP、短信息数据包、红外数据接口;电话应用管理器提供与GSM电话及调制解调器相关的接口功能。
4.引擎
引擎是应用程序的一部分,负责应用程序数据的后台处理,而不与用户直接交互。EPOC操作系统中的程序均可分为应用程序和引擎两部分。引擎可以是单独的源文件模块、独立的动态链接库(DLL)或多个动态链接库。操作系统提供了一些常用的引擎,用户可以针对特殊的需要开发专用引擎。
三、EPOC应用程序开发设计
EPOC支持多种编程语言,为开发者提供了充分的选择空间,其中C++和Java应用得最为广泛。EPOC开发工具套件中提供了集成有EPOC内核的模拟器,可运行在Win9x和WinNT上,并通过调用Windows系统的设备驱动程序,对EPOC的目标机硬件进行仿真,实现EPOC程序的模拟运行。EPOC应用程序开发的大致过程如图4所示[2]。先利用Visual C++编译器将EPOC源程序编译成x86的可执行代码,采用模拟器在PC机上进行调试;而后经GNUC++把源程序重新编译成目标机的可执行代码,并拷贝到EPOC设备上,进行实现测试。模拟器的采用使得在目标机硬件不具备时就可进行高层软件的开发,因此加快了程序开发的进程,节省了开发时间。应用程序在模拟调试后,一般都能在目标机上正常运行;但是模拟器不能模拟真正目标机的硬件时序,因此,不适合用模拟方法开发需要严格时序逻辑的程序,也不支持多个任务的同时调试。
由于EPOC操作系统本身是由C++编写的,因此,用C++去开发应用可以获得操作系统最充分的支持,使应用软件更加灵活。EPOC C++编程分为两种;E32编程和Uikon编程。前者采用较为传统的方法进行编程,通过调用系统API函数来完成各种功能,能灵活地实现各种底层操作。因此,系统中的硬件驱动程序以及后台应用程序一般采用此类编程。Uikon是一套完整的应用程序框架,主要用于开基于图形用户界面的应用程序。该框架一般由应用程序(application)、应用程序界面(AppUI)、文档(document)、视图(view)四个类构成。EPOC具有完善的类继承体体系,提供了丰富的类库,可以方便快捷地创建应用程序。
鉴于无线信息设备的特殊性,EPOC编程具有一些独到之处,形成了自己的规范。
首先,提供了与内存分配相关的出错处理机制。如果应用程序有一系列内存申请的连续操作,其中任何一些出现内存分配失败,都需要在出错处理程序中释放所有在这些之前已成功分配的内存,以确保系统内存的正确回收。因此,编程为员在开发出错处理程序时,要充分考虑应用程序中的内存使用状况,防止内存泄漏的发生。为了更有效地管理内存的分配和回收,简化编程工作,EPOC提供了Eleave标识和Cleanup栈。从堆中分配指针的,以Eleave作为指针标识,指针分配成功后将其压入Cleanup栈。如果此指针指向的对象在程序后续处理中出现申请内存的失败,系统会自动释放栈中指针指向的所有内存,并在程序调用PopAndDestroy函数时删除此指针,保证内存的有效回收。
其次,类的两步构造。标准的C++构造函数是在类的对象实例创建时自动调用的,因此,不可靠将其中申请的指针入入Cleanup栈中。如果类创建失败,在构造函数中分配的内存也就无法被操作系统回收。由于无线信息设备是常年连续运行而不重新启动的,因此内存的泄漏会不断积累,最终导致严重的后果。为解决这一问题,EPOC提出类的创建分两步进行:第一步是按照C++本身的特性自动运行构造函数,但是在构造函数中,不进行从堆中申请内存的操作;第二步是调用含有内存请求的类创建函数ConstructL,在ConstructL中采用EPOC的内存分配出错处理机制。这样的设计可以增强系统的稳定性。
最后,采用资源定义文件。EPOC将系统及应用程序菜单、按钮、对话框等的定义放在资源定义文件中。这样做有两个好处:第一,开发过程中如果只改变菜单等的显示字符串,而不修改资源文件的结构,系统无需进行重新编译,若省时间;第二,有利于本地化。EPOC支持Unicode,在进行本地化时无需在源程序中搜索并修改显示字符串,而只需翻译资源定义文件即可。这样不仅简化了本地化的工作量,而且可以避免修改源程序时可以造成的其他部分代码的无意破坏。
结束语
以上从系统构成及应用程序设计开发角度介绍了EPOC操作系统,说明它具有高效的内核处理机制、高度的可靠性、灵活的程序开发方法、丰富的通信协议支持,充分满足了无线信号设备的特定要求。随着无线通信从第2代向2.5代的过渡,以及第3代移动通信的最终实现,无线信息设备必将拥有广阔的市场前景。EPOC作为为其量身定制的操作系统也一定会得到广泛的应用。