图1 混合模式轻量Agent平台
4 轻量Agent在嵌入式环境下部署
4.1 KVM移植
为测试轻量Agent平台,我们将Agent平台移植到基于ARM的嵌入式系统。这种嵌入式系统以三星公司的 S3C2410 芯片(ARM9内核)作为应用处理器,实时操作系统采用 Linux 操作系统。针对嵌入式设备硬件资源有限的事实,CLDC规范定义一个简化版本的JAVA虚拟机,这个虚拟机通常被称为KVM(Kilo-bytes Virtual Machine) [5]。
图2 轻量化的系统结构
图3 编译后的KVM
建立轻量Agent运行的环境,需要在基于ARM与嵌入式操作系统的平台上移植KVM,使JAVA语言能够运行,如图2。而KVM的目的是创造一个尽可能小的且尽可能完整的JAVA虚拟机,使开发者不用像开发C语言一样关心硬件,而通过JAVA语言来进行开发,达到一次编译,各种平台使用的目的。图3表示编译好的KVM可以在ARM上运行。将KVM烧到目标平台上,便可以执行JAVA程序。
4.2 轻量Agent部署
根据改进的轻量Agent框架部署Agent平台,图4所示的JADE安装在运行J2SE的PC机上,Container-1和Container-2对应着轻量Agent运行的不同环境。
图1中的PDA处于无线通信方式,它的Agent平台一旦启动,便会自动创建AMS和DF。同时,PDA上Container-1立即到位于PC机上的JADE平台上注册。图1中的嵌入式设备是基于s3c2410的网络设备,通过网线与邻近的PC机通信。这里的嵌入式设备上软件Agent平台启动后不会创建AMS和DF,为获得相应的服务,嵌入式设备只需创建一个Client Agent,利用这个智能体随时通过网线访问后台即可。图4中Container-1和Container-2里面的所有Agent会注册到Main-Container所在的Agent平台。
完成注册后,各远端Agent与Main-Container所在的Agent平台通信,提供各自的信息,供其它平台上的Agent利用。异构网络环境下,各嵌入式实时设备协同工作就基于这些信息。Container-1中的Agent若要同Container-2中的Agent交互,需要找到临近的主机注册。注册到Main-Container所在的主机上之后,在主平台下与已经注册了的Container-2中的Agent 交互信息。
并不是所有的Container都能够提供注册服务,Container-2就是如此。提供注册与注销服务的平台,一般运行在资源丰富的PC机上,这样为嵌入式设备上运行的软件Agent减少了相应的服务,也减少了代码。
图 4 Agent的注册与部署结果
5 结论
JADE-LEAP框架下,位于资源有限设备上的Agent不具有AMS与DF创建的功能,为实现这一功能只有通过网络远程访问。在有线的网络环境下,实现这些功能并不难,可是一旦处于无线环境这种平台就不稳定了。KDDIAP作为对LEAP这种原有的轻量化平台的改进,解决了无线环境下实时获得Agent服务的问题,这是以增加代码量和平台启动时间为代价的。混合模式的轻量Agent平台结合了两种轻量平台的优点,保证了Agent平台轻量化、灵活性。
本文创新点:目前国内外使用的多代理系统开发平台很多,但是适合于嵌入式系统平台却不多。主要原因在于嵌入式系统资源受限、工作环境多变、原有代理开发平台代码量大。本文对原有的开发平台进行轻量化改进,使其适合嵌入式系统,并以S3C2410为例,研究了系统的构建方法。