欢迎来到天天文库
浏览记录
ID:31362370
大小:108.00 KB
页数:7页
时间:2019-01-09
《实时高效的共享内存技术在高速磁浮交通仿真中的应用》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、实时高效的共享内存技术在高速磁浮交通仿真中的应用 摘要:该文论述了一种实施高效的共享内存技术,它可用于高速磁浮交通仿真中仿真计算机或者仿真服务器内部的多进程通信管理和信息传输,并且能够满足磁浮仿真环境中三层硬件架构(顶层工作站、中间层服务器、底层管理计算机)之间的网络通信要求,以完成对磁浮功能软件的测试与验证。在统一的报文格式下,该共享内存技术使用配置文件记录通信节点的起始端口和IP地址等信息,确保了通信进程的独立性和实时性。此外,选取共享内存技术以实现仿真环境中应用层和通信层之间的数据传输,提高仿真环境处理数据的效率,确保高速磁浮交通仿真的传输性能。 关键词:多进程通信;共享内存
2、技术;高速磁浮交通仿真;网络通信 中图分类号:TP311.52文献标识码:A文章编号:1009-3044(2016)26-0248-02 1研究背景7 为了实现高速磁浮交通仿真中仿真计算机或仿真服务器内部的信息传输或者数据传输,以完成对本机所运行的磁浮功能软件进行环境故障注入条件下的系统功能和性能的测试与验证,需要使用一种可在多进程之间切换的高效通信技术。高速磁浮仿真的硬件架构分为三层:底层是子系统仿真管理计算机,中间层是仿真支撑服务器,顶层是工作站仿真计算机。由于仿真环境通过以太网相连,网络中的每一台机器不仅作为一个通信节点与网络进行信息传输,而且需要与多种类的磁浮功能软件进行
3、数据交互。共享内存技术作为最高效的本机进程间通信技术,可以快速地将内存中的数据映射到多个不同的进程中。因此,在磁浮交通仿真环境中使用共享内存技术,不仅可以实现仿真计算机内部的多进程通信,还可以提高仿真环境处理数据的效率,减少信息传递或者故障注入的响应时间,确保高速磁浮交通仿真的传输性能。 2影响因素分析 由于高速磁浮交通仿真的功能特性与通信要求,数据传输的高效性和实时性是通信时的重中之重。而且仿真环境中各个节点的端口信息、数量、IP地址等需要根据通信需求进行改变,因此通过对仿真环境中通信节点的信息传输要求分析,可以得到数据通信需具有以下特点: 1)高速磁浮交通仿真环境中的数据传输
4、是大批量、高频率的,具体的要求要视仿真设备终端采集数据的频率和请求发送的频率而定; 2)数据传输要具有实时性,将仿真设备采集的数据实时传给网络中的通信层,并且对异常或者陈旧数据进行清除; 3)仿真环境中磁浮计算机与通信节点采用“一对多”的关系; 4)通信节点的端口信息、地址等可能改变,需要手动配置通信节点的信息; 5)为了维护磁浮仿真环境的可扩展性,通信节点可能发生增加或删除的情况,需要对通信节点做增删操作。 3方案设计7 在高速磁浮交通仿真环境中,每一台计算机中的软件架构分为通信层与应用层。通信层进程主要负责为应用层和其他通信节点提供通信服务,并且监控网络中的通信状态,定
5、时记录通信日志等;应用层进程即为环境中各个磁浮模块运行的磁浮功能软件,与用户及通信层进程进行交互。为了确保高速磁浮交通仿真的传输性能,本机间进程通过共享内存方式进行通信,并且同时为通信层与应用层提供可读写的共享内存接口,将共享内存技术封装为DLL动态链接库的方式分别提供给通信层与应用层以完成进程间的交互。其次,使用Windows系统的InitializationFile(.ini文件)对可变化的通信节点进行配置和管理。 3.1共享内存技术 高速磁浮交通仿真的共享内存技术采用一种“主―从式”的技术架构。在高速磁浮交通仿真计算机中,共享内存同时提供给计算机中的通信层和应用层,由通信层进
6、行统一地新建和管理,应用层只能发送请求以获得对共享内存的读写权限。共享内存技术主要是通过内存映射文件的方式进行工作,内存映射文件通过将文件内容复制给虚拟地址空间,通过互斥锁管理内存的读写情况,完成多进程之间的通信。当内存映射文件被创建后,需要通信的线程分别将此对象载入自己的地址空间。此过程完成后,对此块内存的读写会实时的反映到另一个使用此共享内存的进程中。7 共享内存技术以DLL动态链接库中函数的形式提供给通信层与应用层。载入动态链接库文件并成功调用相应的初始化函数之后,进程便有了对相应共享内存的读写权限。当有报文到达时,进程将报文传给对应的共享内存块(从对应的共享内存块中取出)。在
7、每一个共享内存块中,使用互斥锁Mutex控制一个进程内多个线程对其的使用权。当某一个线程对共享内存块进行读(写)操作时,将Mutex置为锁状态,使其他调用相同共享内存块的线程置为阻塞状态,直到该读(写)操作结束并且Mutex为解锁状态,再将内存块的使用权交给其他线程。在每一个共享内存块中,使用事件Event实现共享内存的读写同步机制。当某一个“写入”共享内存块的Mutex为解锁状态并且内存内容为空时,则将SetEvent()函数置为挂起状态,等
此文档下载收益归作者所有