编辑:sx_chengl
2016-07-19
这是一篇基于Java技术的监控方法实现异构系统的内容,完全实现了客户方调用请求的透明性,将底层的细节完全屏蔽,并具有很高的可重用性。通过实验,证明该方法是可行的,处理是有效的。
摘要:基于对实时嵌入式系统的分析,提出了一种新的基于CORBA/Java 技术的监控方法。这种新方法利用CORBA/Java技术可很好地实现JAVA论文代写异构系统的监控。该文提出的新方法充分利用了Java语言的跨平台性,实现了异构系统的互操作性。
关键词:实时嵌入式系统;监控;CORBA; Java
实时嵌入式系统(RTOS)是指能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致运行的操作系统。实时嵌入式系统的应用范围非常广泛,包括实验控制、过程控制设备、机器人、空中交通管理、远程通信、军事指挥与控制系统,下一代系统还包括自动驾驶汽车、具有弹性关节的机器人控制器、智能化生产中的系统查找、空间站和海底勘探等。
当今市场上存在着各种各样的实时嵌入式系统,各个系统应用范围各有不同,其应用领域和实现功能也不尽相同。很多情况下,用户需要使用不同的实时嵌入式系统来实现其需求。通常,在实时嵌入式系统的开发和应用过程中,需要对系统的配置、运行状况以及异常等进行监控。通过对系统性能的监控,管理人员可以更好地了解系统的任务状态、CPU负载、内存占用等信息,为更好地利用系统创造条件。通过对系统性能的监控,开发人员还可以根据系统应用状况对系统的运行做出判断、调整,以保证系统在一个高性能的环境中运行、获取最佳的资源配置、优化系统功能的实现,极大地提升系统的应用性能。
针对这些实时嵌入式系统的监控需求,本文介绍一种基于CORBA/Java技术的监控系统的设计和实现。
1系统框架的设计
本系统的目的在于针对不同的实时嵌入式系统提供一套统一的基于CORBA的系统监控和管理方案,为开发人员和管理人员提供监控实时嵌入式系统资源的手段。
本系统的监控管理可以面向一个或多个实时嵌入式系统,监控端程序由Java实现,可以真正实现监控端的平台无关性。而且在信息的表现手法上,可采用直接数据表达结合动态图,静态快照以及表格等多种方式,使用户能清晰直观地对任务运行情况、系统负载、内存占用等项目进行很好的监控。在服务端,由开发人员实现一些供中间件调用的系统API ,这些系统API提供接口给用户,以便监控端能实时地获取必要的系统资源信息。
在本系统中,监控的内容包括系统配置信息、任务信息、消息队列信息、主存负载、任务快照、中断处理、CPU使用率、网络流量、HeartBeat等。
在本系统中,对两个或更多操作系统的监控也将采用一个监控程序来实现,但是在监控项目和具体的实现效果上会略有不同。由于实现的是多个监控端对多个结点进行监控的系统,因此其本身是多个客户端对应多个服务端的CORBA模型,其基本系统结构如图1所示。
在控制台上对不同实时嵌入式系统通过中间件进行监控。从整体上看,各个实时嵌入式系统,即被监控结点作为CORBA服 务的服务器端,监控方则作为CORBA服务的客户端。在监控过程中,客户端通过中间件调用服务器端的系统API来取得所需信息或实现监控功能,然后,再由中间件将获取到的信息或执行结果返回到客户端,用户通过客户端交互界面查看这些系统资源信息。
2 CORBA 与Java技术简介
(1)CORBA简介
通用对象代理体系结构(CORBA)是对象管理组织所定义的用来实现现今大量硬件、软件之间互操作的解决方案,CORBA也是迈向面向对象标准化和互操作的重要一步。简单地说,CORBA允许应用之间相互通信,而不管它们存在于哪里以及是谁设计的。CORBA标 准主要分为3个部分:接口定义语言(IDL )、对象请求代理(ORB) 以及ORB之间的互操作协议IIOP。
ORB 是对象之间建立Client/Server关系的中间件。使用ORB,客户可以透明地调用一个服务对象上的方法,这个服务对象可以在本地,也可以在通过网络连接的其他机器上。这样,ORB在异构分布环境下为不同机器上的应用提供了互操作性,并无缝地集成了多种对象系统。
使用ORB 时,协议是由接口定义语言(IDL)定义的,而IDL是独立于语言的。
图2说明了从客户端到服务器发送一个消息请求的过程,其中客户端可以是一个CORBA对象。
(2)CORBA 与Java的相互关系
CORBA不 仅意味着对象请求代理(ORB),它还是非常全面的分布式对象平台。CORBA 使Java应用可以跨越网络、语言以及操作系统,并为Java提供了一组分布服务,如分布式自我观察、动态发现、事务、关系、安全和命名等。
Java不仅是一种语言,它还是一个动态代码系统,它对运行对象来说是一个可移植的虚拟机(JVM )。Java为开发、管理、发布Client/Server应用提供了更简单的方式。Java 将会使CORBA对象能够运行在从主机、网络计算机到蜂窝电话等各种机器上,并简化了大型CORBA系统的代码发布。对客户和服务对象来说Java是很理想的编程语言,Java内置的多线程、垃圾收集和错误处理使编写健壮的网络对象变得很容易。
这两种对象模型可以很好地相互补充,CORBA处理网络的透明性,Java 处理实现的透明性,CORBA 为Java可移植应用环境提供了一个分布式的结构。
3系统结构和模块实现
在本系统,监控方和被监控方的IP注册过程,监控过程的的流程如图3所示。在整个流程中,被监控接点将至少先后运行3 个线程,分别是Socket服务端线程、用于注册的CORBA客 户端线程、监控的CORBA服务端线程。相应地,监控方也将运行Socket 客户端、用于注册的CORBA服务端、监控的CORBA客户端等线程。
(1) 监控方和被监控方的IP注册过程
根据系统构架的设计,监控方和名字服务可运行于同一台机器上,而服务器即被监控方则可能是运行于同一网段的任何一台机器。
为了使监控系统可以适应这种监控的随意性,避免在程序中指定名字服务的IP地址,在监控方和被监控方之间采取了Socket 通信和CORBA通信相结合的方法来交换彼此的IP。具体过程如下:监控程序定时向整个网段的所有结点发送UDP 数据包,同时有一个CORBA服务器线程一直在运行;被监控方在启动时首先接收UDP数据包,获取名字服务的IP 地址,然后根据该IP 地址再运行一段CORBA的客户端程序,将被监控端的IP地址作为一个字串通过CORBA发送给一直运行于监控端的服务器线程,这时在监控端的程序界面的被监控结点列表就会出现一个图标和相应的IP地址,表示监控方已经检测到了客户端。
传递监控方和被监控方IP 地址的IDL接口定义为
interface HeartBeat{
void registlocal(in string IPaddress);
void sendHeartBeat(in short index);
};
该IDL 接口内有两个操作void registlocal(in stringIPaddress)和void sendHeartBeat(in short index)。在registlocal操作中,参数是一个字符串类型的IP地址,当被监控方开始运行并且客户端程序成功绑定到监控方的CORBA服务器进程后,向监控方报告自己的IP地址,从而使监控方获知被监控结点。在sendHeartBeat操作中,参数设计为被监控结点IP地址的最后一个数字,主要用于心跳监控的实现,其目的是让监控端确知被监控结点运行良好。
(2) 实时嵌入式系统中的控制流程
在实时嵌入式系统中建立一个任务monitor_server,接收客户端发来的控制命令,根据命令设置管理参数,收集实时嵌入式系统资源情况,并将实时嵌入式系统资源情况通过消息传递返回给客户端。1)monitor_server以最高优先级运行,等待外部事件。2)外部事件到来时用int getpacket(void**buf ,int*length)接收命令(buf为 控制命令、length为控制命令长度)。3)函数monitor_make_argv将命令进行分析,通过函数指针分解成不同的功能模块及其参数。4)各功能模块设置监控参数。5)获取信息后,调用int putpacket(void**buf ,int*length)返回监控数据(buf为返回数据,返回值小于零为错误、大于零为返回数据长度)。
(3) 监控过程的IDL接口及服务端的处理过程
监控过程的IDL接口定义为
interface Monitor{
short getConfig(out ConfigInfoList buf_ConfigList);
short getTask(out TaskInfoList buf_TaskList);
short getQueue(out QueueInfoList buf_QueueList);
short getMEMInfo(out MemInfoList buf_MemList);
short getCPUInfo(out CpuInfoList buf_CpuList);
short getNetInfo(out NetInfoList buf_NetInfoList);
short taskPolicy(in CtrlInfolist buf_CtrlList,out ResultInfoList
buf_ResultList);
};
该IDL 接口定义了7个操作,它们实现的功能分别是:查询系统配置、查询任务情况、查询消息队列信息、查询主存负载、获取CPU利用率、查询网络流量、任务控制。这些功能在实现的的具体方法如下:
1)查询系统配置。在服务端,通过调用系统API直接到系统配置表读取系统的配置信息,然后把系统配置信息赋值到输出参数buf_ConfigList 。客户端通过调用定义在IDL中的getConfig操作获取系统配置信息。
2)查询任务情况。在服务端,主要通过对系统中任务控制块(TCB)的搜索,来获取当前系统中的任务信息(如任务ID、优先级、堆栈大小、任务状态等),该操作可以获取所有处于就绪、运行、阻塞、挂起的任务信息,然后把任务信息赋值到输出参数buf_TaskList。客户端通过调用定义在IDL中 的getTask操作获取系统配置信息。
3)查询消息队列信息。消息队列作为一种系统对象,有它本身的消息记录型数据结构消息队列控制块(QCB)。在服务端通过对QCB的搜索来获取消息队列的信息,然后把消息队列信息赋值到输出参数buf_QueueList。客户端通过调用定义在IDL中 的getQueue操作获取消息队列信息。
4)查询主存负载。内存作为一种系统资源,在实时嵌入式系统中是非常珍贵的,一般的实时嵌入式系统都有好几种内存的组织方式,如Partition、 Region等,每一种方式都有一个链表将这些内存块连接起来。服务端通过对链表的搜索来确定内存区域的大小、空闲状况,然后将记录信息赋值到输出参数buf_MemList 。客户端通过调用定义在IDL中的getMEMEInfo操作获取内存记录信息。然后通过对这些内存记录信息的计算,获得内存使用的百分比。
5)获取CPU 利用率。由于CPU的使用情况主要是通过在CPU中运行的任务情况来反映,因此该功能实现的过程必然是对任务运行状况的处理。首先截获在CPU中运行的任务切换时的时间戳,然后通过任务的时间戳来计算出各个任务的运行时间,最后通过空闲任务运行时间在总的任务运行时间中所占的比例来反映出CPU的 使用情况。在截获CPU中运行的任务切换的时间戳时,采用的具体手法是,先申请一个内存环,然后通过利用CPU的用户扩展函数,在任务切换时增加一个HOOK, 不断地将任务切换的信息(切出任务的ID号,切入任务的ID号,切换时的时间戳)写入该内存环中。
客户端通过调用定义在IDL 中的getCPUInfo操作从输出参数buf_CpuList 获取环中存储的任务运行状况。buf_CpuList采取序列的方式组织该结构,这样就可以动态地决定所传数据的长度。CPU使 用率的计算通过公式“CPU使用率=(总时间-idle任务的时间)/总时间”得到。
6)查询网络流量。具体实现时,CORBA服务端首先启动网络流量监控,然后将底层截获的网络流量数据传送给CORBA服务端,之后服务端将网络流量信息赋值到输出参数buf_NetInfoList 。客户端通过调用定义在IDL中的getNetInfo操作获取网络流量信息。
在服务端,网络流量监控的具体实现机理是,以网络驱动接口名为参数,将网络驱动接口映射成具体的网络接口数据结构。然后调用库函数得到该网络接口的具体的IP地址,紧接着分别添加网络输入输出的HOOK程 序inputHook()和outputHook()。HOOK程 序inputHook()是用户自定义的,它负责从网络接口数据结构中截取网络IP地址类型,数据包的源及目标IP 地址,并对目标IP 地址进行判断,若目标IP与本机IP 一致,则将输入的字节数累加入全局变量IlengthSum,将输入的数据包数累加入全局变量RecvCount。类似地,HOOK 程序outputHook()负责从网络接口数据结构中截取网络IP 地址类型,数据报的源及目标IP地址,并将输出的字节数累加入全局变量OlengthSum,将输出的数据包数累加入全局变量SendCount。
7)任务控制。服务端接收客户端通过输入参数buf_CtrlList发来的处理信息,这些信息包括任务的创建、启动、挂起、重启、优先级重置、删除等。然后,服务端根据客户端的请求和相应的参数,执行创建、删除任务等相应操作。任务处理的结果,通过输出参数buf_ResultList返回到客户端。
4结束语
本文阐述了一种基于CORBA/Java的实时嵌入式系统的监控系统,该系统解决了实时嵌入式系统的平台异构性问题。完全实现了客户方调用请求的透明性,将底层的细节完全屏蔽,并具有很高的可重用性。通过实验,证明该方法是可行的,处理是有效的。
参考文献
1 Henning M,Vinoski S.基于C++CORBA高级编程.北京:清华大学出版社,2000-07
2 Orfali R,Harkey D.智能CORBA.北京:电子工业出版社,1999-11
3 Eckerl B.Java编程思想.北京:机械工业出版社,1999-04
4汤子瀛,哲凤屏.计算机操作系统.西安:西安电子科技大学出版社,1998-04
5 Barr M.于志宏译.C/C++嵌入式系统编程.北京:中国电力出版社,2001-03
6 Stallings W.Operating Systems Internals and Design Principles.北京:清华大学出版社,1998-06
网友们,Java技术的监控方法实现异构系统就到此为大家介绍完毕了,祝大家能够获得有用的知识。
相关推荐:
标签:JAVA论文
精品学习网(51edu.com)在建设过程中引用了互联网上的一些信息资源并对有明确来源的信息注明了出处,版权归原作者及原网站所有,如果您对本站信息资源版权的归属问题存有异议,请您致信qinquan#51edu.com(将#换成@),我们会立即做出答复并及时解决。如果您认为本站有侵犯您权益的行为,请通知我们,我们一定根据实际情况及时处理。