CN43—1258/TP
ISSN 1007—130X
计算机工程与科学
C_k)MPUTER ENGINEERING & SCIENCE
2005年第 27卷第 8期
Vo1.27,No.8,2005
文章编号:1007—130X(2005)08—0078—03
基于 Unix共享内存的实时信息发送模型
A Model for Sending Real-Time
Data Based on the Unix Shared Memory
陈传波。黎 兰。宋荆汉
a}mN Chmqm-bo。LI Lan。SONG Jing-~
(华中科技大学计算机科学与技术学院。湖北 武汉 430074)
(School ofComputerScience andTechnology。HuazhongUniversityofScience andTechnology。Wuhan430074。China)
摘 要:本文提出了一种在不同平台下利用通信的方式将数据快速传递到实时信息发布系统中的
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
模型,详细阐述
了这种模型的设计思想及实现方法,并与传统的读取数据库的方式进行比较。在实际应用中验证了这种模型的可行性与
发送数据快的 突出优点 。
Abstract:This paper presents a model,which can send data on different platfonTIS to real-time publication systems
through communications,and also gives the design ideas an d realization methods in detail. Compared 也 the common
methods,which get data from the database directly,the quality of this model is shown in applications,an d the feasibility of
this method gets validated.
关键词:数据通信;共享内存;实时信息;XML数据解析
Key words:data communication;shared memory;real-tim e information;XML parser
中图分类号:TP311 文献标识码:A
1 引言
实时信息发布系统是指能将服务器或其他终端产生的
实时数据快速地向用户发布的系统。这种系统正越来越多
地应用到各个领域。实时信息发布系统对信息发布的刷新
速度要求很高,系统设计的关键就是如何快速地得到发布
所需的数据。
目前,很多实时信息系统所需的数据存放于大型的
Unix平台上,面向用户所开发的信息发布系统则一般采用
Windows系统。一般数据处理器平 台出于安全性和稳定
性的需要 ,用户系统不能轻易使用。因此,用户系统和数据
处理器系统的接口就是数据库,获取数据采用的最普通的
方法是直接从数据库中读取数据。数据处理器用于收集数
据更新的消息,同时更新数据库。数据库的数据是不断更
新的,从而系统发布所用的信息也是不断更新的。然而,读
取数据库大量数据所需的时间或许都达到 1O秒以上,这个
时间往往远远高于实时信息发布系统所能承受的最长时
限,也就达不到实时信息发布的实时性这个关键的
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
。
本文提出了一种模型,在数据处理器和用户实时信息
发布系统中间加入了一个中间数据处理的层次,这个层次
所起的主要作用是解析和传输数据。这种方法采用通信的
方式传递数据,避免读取数据库中的数据,极大地提高了用
户发布系统实时信息的刷新速度。
2 实时信息发送模型设计思想
2.1 数据传输模型图
在不同平台下,实时信息发布系统采用的一般模式如
图 1所示。
图 1 数据传输一般模式
这种方式采用的是直接读取数据库的方式,流程比较
简单明了;缺点是读取数据库耗时较长,而且读取数据库类
型不同,每种数据库都有自己特定的数据
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示格式,用户系
霎暑羿 饕袤 舅 ;篙;聂 授,博士生导师,研究方向为计算机网络与信息工程、图像处理与模式识别;黎兰, 裴耋墓 箬蒿 葬 爵窖驽 警 鬓 粤 蒜璃 襁晕鸳暑簋呈 、图像处理与模式识别 黎兰’
誓轰鑫窭蠢 襄 霞 缚皋舌 錾孽 古墓 l 室 璺裳 ll 通讯地址:43OO74湖北省武汉市华中科技大学计算机科学与技术学院;E_mail:lanlydy@21饥com
—
Address:School of Computer Science and Technology,Huazhong University of Science and Technology,W uhan,Hubei 430074,P.
维普资讯 http://www.cqvip.com
统中需要进行不同的数据解析,增加了用户系统的负担。
本文设计的模型在数据处理器与客户端两个层次上增 3 模型具体实现
加一个中间数据处理机的层次,具体模型如图2所示。
竺喜 箬 图z模型结构图 器与用户系统隔离开来,有效 。。 。⋯⋯
地保护了数据处理器的安全性;中间层专门用来进行数据
传输处理,减轻了用户系统的负担,同时避免了读取数据库
中的数据,加快了数据传输的速度。
数据从数据处理器发送到中间数据处理机,从中间数
据处理机传送到用户系统,都可以通过通信的方式来进行。
为了进一步加强三台主机功能的独立性和程序执行的无关
性,模型采用了一种新的数据传输方式:利用 Unix共享内
存作为高速缓存,将数据处理器上存放的数据和内存 中的
数据发送到 Unix共享内存,中间数据处理机直接从共享
内存中取得数据。这种方式充分利用了 UniX平台共享内
存的特点,具有数据通信所没有的优点。
2.2 Unix共享内存原理
共享内存 (Shared Memory)是 Unix下多进程之间的
通信方法。进程的虚拟地址可以映射到任何物理地址,如
果两个进程的虚拟地址映射到同一物理地址,两个进程就
可以利用这一虚拟地址进行通信。共享内存区是最快的可
用 IPC(InterProcess Communication,简称 IPC)形式,它占
用资源小,实现速度快。一旦这样的内存区映射到共享其
进程的地址空间,这些进程间数据的传递就不再涉及内核。
这种方法通常用于一个程序的多进程间通信,多个程序间
也可以通过共享内存来传递信息。
本文所提及的利用共享内存来传输数据的方法就是利
用了多个程序可以通过共享内存来传递信息这个重要特
性。数据处理器程序一:数据处理器将数据传送到中间数
据处理层主机的共享内存;中间数据处理机程序二:中间数
据处理机从共享内存区中读取数据然后发送。两个程序利
用的是同一个共享内存区,有效地实现了信息的共享和传
递。更重要的是,这两个程序分处于不同的主机上,互相独
立,不需要同步运行。数据处理器只需提供一个本机操作
共享内存的接口,向共享内存中发送更新的数据,其余的中
间数据处理操作与数据处理器无关,大大减轻了数据处理
器的负担,保障了服务器数据的安全性。在这个步骤中,共
享内存实际上为数据处理器和中间数据处理层提供了一个
高速缓存,进一步加快了数据传输的速度。
综上所述,整个模型的数据传输流程可以用图 3描述
出来。 ’
图3 模型数据流图
3.1 Unix共享内存数据的存取
Unix系统提供了许多对共享内存进行操作的接 口函
数,运用这些接口函数就可以方便地对共享内存进行存取
操作。首先指定一个名字参数调用 shm—open(),创建一
个新的共享内存区,或打开一个已经存在的共享内存区对
象;然后调用 mmap()把这个共享内存 区映射到调用进程
的地址空间。进行这两步操作,就可实现内存区到调用进
程的地址挂接,对内存区进行读写操作。
3.2 数据的解析部分
实时信息发布系统所需的数据在数据库中是以记录的
形式出现的,发送到 Unix共享 内存中的数据也是以结构
体的形式出现的。然而,数据的接收端使用的是不同于数
据处理器的平台,处理数据所用的开发工具也不同,不同平
台下的数据结构不能互相识别,如何将数据进行统一格式
转换就成为中间数据处理层主机首先要解决的问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
。解决
这种问题的通常方法是,自己定义一套特定的数据格式,将
数据处理器中的数据先 以自己的格式卸载出来,然后再将
这些数据加载到目的系统中。这种方法没有统一的标准,
同时,为了迅速完成自己的任务,对数据格式的定义通常是
不规范的,基本上没有可重用性。针对这种情况,中间数据
处理机采用目前流行的XML语言规范化数据格式,完成
各种不同数据格式的统一。XML允许开发人员定义各种
标记来描述文档中的数据,用简单的嵌套和引用来表示元
素间的关系。利用文档解析器完成对 XML文档的操作,
解析器检验 XML文档的合法性,将文档中的内容分解成
一 个个可以识别的对象。XML解析器可以使用编程的方
法来载入一个 XML文档,当这个文档被载入以后就可以
通过 XML DOM (文档对象模型 )来获取和操纵整个文档
的信息。文档对象模型同样要将 XML文档中的对象分解
成一个个可以直接操作的节点对象,然后将这些对象以树
状结构表示,实现节点的增加、删除及移动等操作。
中间数据 处理层所
要完成的解析任务就是将
共享内存中的结构体数据
读出,运用 XML编辑 器
将不同的数据格式转换成
纯文本 的 xML文档,然
后利用底层的通信机制将
xML文档发送 到客户系
统中,客户系统利用 xML
主
口 0
匾亟圈
图4 数据转换流程
解析器完成数据的解析,然后发布。
数据格式转换流程如图 4所示,利用这种方式就可以
解决不同平台下异构数据不能互相识别的问题。
3.3 数据发送的控制部分
实时信息发布系统是长时间面向用户开放的。因此,
两台主机之间的数据传输也需要长时间不问断地进行 ,即
使遇到意外情况,连接中断,通信程序也应能够自行启动。
在中间数据处理机发送数据的过程中,创建进程,子进
79
用 分 主 能
.=分厶口叻 一 埔舰 一 懈 的 的的 模世=不各 髂 系位负 白 九
一 一8一
维普资讯 http://www.cqvip.com
程负责发送数据,父进程负责监控子进程的运行情况,如子
进程运行正常,父进程阻塞;一旦子进程中止,父进程即被
唤醒,重新创建子进程建立连接,继续数据的发送。为了数
据的准确发送和接收,主机之间建立 TCP连接。实践证
明,采用 TCP方式建立连接,建立一次连接发送的字符数
目不是无限的。因此,发送一定次数的数据之后,必须关闭
之前的连接后重新建立,继续发送。
发送数据的流程如图5所示。图中设置每发送 100次
数据连接重启一次,Sendnum 的值是根据每次发送数据量
的实际情况而设置的。
在数据接收端即用户实时发布系统所在的主机上,用
户系统可能接收到多个客户端建立连接的请求 ,或者一个
客户端多次建立连接的请求。为了解决多客户多连接请求
的问题,可以利用线程池技术,即应用进程在启动或运行过
程中创建一定数量的线程放人到一个“池子”中。当有客户
请求到达时,不是新创建一个线程,而是从“池子”中选择一
个空闲的线程为新的客户请求服务。服务完毕后,线程进
入空闲线程池中。利用线程池,创建线程的开销几乎可以
忽略不计,加快了服务器的响应时间,同时防止了当客户太
多时服务器应用程序可能崩溃的现象发生。
在中间数据处理层中的
一 台处理机向客户端不停地
发送实时数据,发送一次后,
共享内存刷新,接 着再 次发
送数据。实时发布系统采用
线程池技术,为每次数据处
理机上发送的数据创建不同
的进程,一次发送完成,线程
池回收线程,创建新的线程
图5 数据发送流程
接收新的数据 。利用线程池技术调度线程,处理多个或多
次连接,用户系统接收数据部分就能有条不紊地进行下去。
4 结束语
本文所述方法在给某大型电力公司开发的电力图形参
数系统中得到了实现。在该参数系统中,进行发布的数据存
放于Unix服务器平台。以前参数系统进行实时数据发送
时,数据都从数据库中读出,由于数据量大,信息发布的刷新
间隔达到了 15秒。运用本文模型所述的方式,加上每次数
据传输中间设置的间隔,信息发布的刷新间隔也没有超过5
秒。这种方法传输数据快的优点得到了充分的验证。
参考文献:
E1] 沈军,顾冠群.基于Java的XML解析器设计与实现D].小型
微型计算机系统,2002,23(12):1449—1451.
[2] 任庆东,苏斐,李井辉.利用 XML实现异源数据库中的数据
交换口].计算机应用研究,2001,18(12):129—130.
[3] 欧昌华 ,李炳法.线程池在网络服务器程序中的应用口].信
息技术,2002,(5):11-14.
[4] 郭学礼,高世杰.Unix System V IPC及共享内存机制
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
D].计算机应用研究,2001,18(4):39—40.
[5] L0 D Molesky,Krithi Rarnamritham.Effident Locking for
Shared Memory Database Systems[R].Technical Report
80
UM -CS-1994-010,University oi Massachusetts,1994.
(上接第 75页)
[3] A Michalewicz.Genetic Algorithms+Da ta Structure=Evo-
lutionary Algorithm s[M].Berlin:Springer-Verlag,1994.
[4] J Branke- Evolutionary Approaches to Dynamic Optimization
Problem s:A Survey[A].Proc of GEC_~D Workshop on Evo-
1utionary Algorithms for Dynamic Op timization Problems
[C].1999.134—137.
[5] J Branke- Evolutionary Approaches to Dynamic Op timization
Problems—Updated Survey[A].Proc of GECf_~ Workshop
on Evolutionary Algorithm s for Dynamic Op timization Prob-
lems[C].2001.27—30.
[6] R W Morrison,A Kenneth,De Jong.Triggered Hypermuta-
tion Revisited[A].Proc of the Congress on Evolutionary
Computation(CEC2OOO)[c].2000.1025—1032.
[7] J Grefenstette-Genetic Algorithms for Chan~ng Environ-
ments[A].Proe Parallel Problem Solving from Nature-2[c].
1 992.137-144.
[8] J Branke-Memory Enhanced Evolutionary Algorithms for
Changing Op timization Problems[A].Proc of the Congress of
Evolutionary Computation.V.o1 3[C].1999.
[9] D E Goldberg,R E Smith.Nonstationary Function Op timiza—
tion Using Genetic Al gorithms with Domi nance and Diploidy
[A].Proc of the 2nd hat’1 Conf on Genetic Algorithm s[C].
1987.56—58.
[1O]K P Ng,K C Wong A New Diploid Scheme and Dominance
Change Mechanism for Non-Stationary Function Optimization
of Genetic Algorithm s[A].Proc of the 5th Int’1 Cord on Ge-
netic Algorithm s[C].1995.
El1]J Lewis,E Hart,G Ritchle- A Comparison of Dominance
M echan ism and Simple Mutation on Non-Stationary Problems
[A].Parallel Problem Solving from Nature.LNCS 1498[C].
1998.139-148.
[12]K Tmjanowski,Z Michalewica,J Xiao.Adding Mem ory to the
Evolutionary Planner/Navigator[A].IEEE hat’1 Conf on Ev-
olutionary Computation[C].1997.483-487.
[13]C N Bendtsen,T Krink.Dynamic Mem ory Model for Non-
Stationary Op timization[A].Proc of the Congress of Evolu-
tionary Computation[c].2002.145—150.
[14]J Eggermont,T Lenaerts.Non-Stationary Function Op timiza-
tionUsing EvolutionaryAl gorithmswith aCase-Based M em -
ory [R].Technical Report TR 2001-11,2001.
[15]S J Louis,J Johnson.Solving Similar Pmblerns Using Ge netic
Algorithm s and Case-Based Mem ory [A].Proe of the 17th
Int’1 Conf on Genetic Algorithm s[C].1997.283-290.
[16]H G Cobb.An Investigation into the Use of HypewMutafion as
an Adaptive Operator inGeneticAlgorithms HavingContinuous,
Tune Dependent Non-Stationary Environments[R].Technical
Report AIC-90-001,Naval Research Laboratory,1990.
[17]R W Morrison,K A D Jong.A Test Problem Ge nerator for
Non-Stationary Environments[J].Proc of the CEC’99[c].
1999.2047-2053.
[18]DPThrishantha,KWatanabe,KKiguchi,et a1.AdaptiveOp ti—
mization in a Class of 啦 c Environments Using an Evolution—
ary Approac}I[J].Evolutionary Computation,1999,7(1).
维普资讯 http://www.cqvip.com