关键词:嵌入式操作系统; Web服务器; 调度算法
1引 言
随着 Internet 技术的发展、信息家电的普及应用以及EOS(Embedded Operating System)的微型化和专业化,EOS 开始从单一的弱功能向高专业化的强功能方向发展。以基于Internet为标志的嵌入式系统,正处在迅速发展的阶段。目前大多数嵌入式系统还孤立于Internet之外,但随着Internet的发展以及Internet技术与信息家电、工业控制技术等结合日益密切,嵌入式设备与Internet的结合将代表着嵌入式技术的真正未来。
本文所研究的嵌入式网络智能终端控制系统,以微处理系统直接与以太网连接的方式,将嵌入式操作系统和Internet 网络有机地结合起来。以下将从嵌入式网络智能控制系统的体系结构、软件系统两部分进行阐述。
2 嵌入式网络智能控制系统的体系结构
嵌入式网络智能控制系统的应用环境与网络拓扑结构如图1所示。图1所示的拓扑结构由嵌入式网络智能终端、调度服务器、Web服务器组[2]、Internet主机组成。嵌入式网络智能终端采用uCLinux操作系统[1],该终端直接与以太网相连,将数据传送到Internet广域网的Web服务器。调度服务器在该系统中起负载调度的作用,不至于Web服务器中的某个服务器负载过重。Web服务器组收集嵌入式网络智能终端系统的数据,应答广域网主机的访问。广域网中的主机可以随机访问Web服务器获取嵌入式网络智能终端的数据,有特定权限的主机并可以直接访问嵌入式网络智能终端。
嵌入式网络智能终端由微处理器、外部接口、网络信息处理、电平转换、扩展存储器等几部分组成,嵌入式网络智能终端的硬件结构如图2所示。
3 软件系统
3.1嵌入式网络智能终端软件体系结构
根据图1所示的环境本文选用uClinux操作系统作为软件系统开发平台,图3显示了软件系统的整体构架。软件系统分为两个部分:受控对象软件部分与嵌入式网络智能终端软件部分。
受控对象软件部分涉及传感器如何收集受控对象的信号,如何驱动受控对象和外设,怎样将信号传送到嵌入式网络智能控制终端。
嵌入式网络智能终端软件部分涉及到内核的修改、操作系统的移植、文件处理、图形用户接口的设计、任务的处理、如何添加应用程序到uClinux中以及嵌入式网络智能控制终端与Web服务器之间信息的交换。
3.2 嵌入式网络智能控制终端与Web服务器之间信息的交换
Web服务器是远程设备导出信息的重要手段,它可以通过公共网关接口(CGI)的表单允许修改设备参数,从而进行远程监控[2]。Web服务器已经成为远程管理,特别是那些没有传统用户界面(如本文设计的嵌入式智能终端)的设备标准。Web浏览器可以与远程设备进行通信,并展示相应的数据。在图1所示的拓扑环境中Web服务器、客户机和嵌入式网络智能终端使用超文本协议[3](HTTP)和网路编程来实现信息的交换和远程管理。
HTTP是一种基于ASCII的协议。HTTP在TCP/IP协议上面使用标准同步请求/应答模式、客户机/服务器结构[4]。当客户机向HTTP服务器提出请求时,需要发送一个HTTP请求报文,该报文的格式如图4所示。
图4显示HTTP请求报文由请求行、可选报头、可选报文报体字段组成。请求行建立后来活动的舞台。可选报头指出客户机请求的协议,以及服务器在应答之前要了解的客户机的信息。
HTTP请求报文包含很少的一些信息,但通过这些信息可以通知服务器它的“能力和偏好”。同样HTTP应答也采用类似的结构,在这里就不再阐述。
3.3 网络数据的提交
实现嵌入式网络智能终端应用程序网络数据提交(图3软件层中的应用程序)时,嵌入式网络智能终端与广域网Web服务器之间的网络通信采用客户/服务器模式方式,即uCLinux操作系统环境下进行网络编程。实现网络编程(信息传输)包括以下五个基本过程:创建套接字:调用socket();绑定套接字:调用bind();创建连接:调用connect();监听连接:调用listen();建立连接:调用accept()。
3.4调度服务器的调度算法
影响图1所示的嵌入式网络智能控制系统可靠性的关键因素是调度服务器的网络性能,合理进行参数计算和映射与负载定位是提升网络性能的关键。
3.4.1 参数的计算和映射
CPU利用率能直接反映服务器的性能,以下给出linux操作系统中获取CPU利用率过程,linux操作系统中通过读取/proc/stat文件,该文件中记录有sys、user、nice和idle变量。计算CPU利用率时只要两次读取这些变量,然后利用公式:
Total_1=user_1+nice_1+sys_1+idel_1;
Total_2=user_2+nice_2+sys_1+idel_2;
IntCpuRate=(int)(((float)((user_2+sys_2+nice_2)-(user_1+sys_1+nice_1))/(float)(total_2-total_1))*100);
其中total_1为第一次读取的参数总和,total_2为第二次读取的参数总和。
对于其他的参数,例如缓冲区的大小,可以通过调用linux操作系统的系统函数ioct1()来获取。
获取对应的参数以后,再将对应的参数映射到负载定位算法中,在参数的转换过程中主要采用的算法是动态阀值算法[5]。该算法的数学模型如下:
上式中B为系统接口缓冲区空间的容量,Qi(t)为第i个Web服务器的队列长度,Q(t)为当前系统总队列长度,T(t)为不再连接会话的阀值参数,α为调节因子。上述公式可知,动态阀值算法根据系统状态动态调整控制阀值,阀值的大小与当前系统中空闲的资源成正比,当某个Web服务器缓冲区空间超过阀值时,将阻塞该Web服务器,不再给该Web服务器分配负载。
3.4.2 负载定位策略
根据前面得到参数,将这些参数传递到调度服务器。调度服务器通过使用加权轮转调度算法[5]来选择合适的服务器,即将负载定位到具体Web服务器上。定位策略的算法描述如下:
假设有一组Web服务器表示为S = {S0, S1, …, Sn-1},W(Si)表示Web服务器 Si的权值,变量 i表示上一次选择的Web服务器,变量cw表示当前调度的权值,max(S)表示集合S中所有Web服务器的最大权值,gcd(S)表示集合S中所有Web服务器权值的最大公约数。变量 i 和cw最初都被初始化为零。算法描述如下:
while (true) {
if (i == 0) {
cw = cw - gcd(S);
if (cw <= 0) {
cw = max(S);
if (cw == 0)
return NULL;
}
} else i = (i + 1) mod n;
if (W(Si) >= cw)
return Si; }
4实验环境和结果
实验拓扑结构采用如图1所示的最简系统。嵌入式网络智能终端采用嵌入uClinux操作系统,并在uClinux操作系统添加相应的网络通信程序。调度服务器采用Linux9.0作为操作系统并实现3.3节的调度算法。Web服务器组、Internet主机为常见的形式。图5是利用Ethereal网络协议分析器获取的数据包的情况,该图表明本文设计的系统和采用的算法有效。
5 结束语
实验表明本文提出的系统结构、负载计算法和调度算法实现了嵌入式网络智能控制终端的远程控制。通过采用加权轮转调度算法和动态阀值算法解决了系统负载调度问题,使得系统具有良好的网络性能和较高的实际应用价值。该系统的实现为进一步进行嵌入式网络远程控制系统服务的研究搭建了一个良好的网络平台。
参考文献
[1] 李晶,张维新. uClinux下实时任务的一种实现方法[J].微计算机信息,2005(1):129-130
[2] 王东滨,方滨兴,云晓春. 基于Web管理的网络监测技术的设计与实[J]. 计算机工程, 2002(10),2003-2004
[3] J. Gettys J. Mogul Hypertext Transfer Protocol —— HTTP/1.1[S] RFC2068
[4] M.tim jones 嵌入式系统TCP/IP应用层协议[M]. 北京:电子工业出版社,2003.91-96.
[5] Hahme E L, Choudhury A K. Dynamic queue length threshold for mulitiple loss priorities. IEEE/ACM Trans Networking[J],2002,10(3):368-380