CN105138409A - 基于多进程的铁路列车运行图编制系统及方法 - Google Patents
基于多进程的铁路列车运行图编制系统及方法 Download PDFInfo
- Publication number
- CN105138409A CN105138409A CN201510528288.4A CN201510528288A CN105138409A CN 105138409 A CN105138409 A CN 105138409A CN 201510528288 A CN201510528288 A CN 201510528288A CN 105138409 A CN105138409 A CN 105138409A
- Authority
- CN
- China
- Prior art keywords
- data
- subprocess
- train
- host
- chart
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Train Traffic Observation, Control, And Security (AREA)
Abstract
本发明公开了一种基于多进程的铁路列车运行图编制系统及方法,属于计算机交通应用领域,本发明采用多进程技术建立编图系统的副进程,主进程作为编图客户端在联网模式下运行,主进程按复制方式创建副进程,副进程离线运行,无权限控制,并配置与主进程相同编图、数据处理等功能,主、副进程相对独立,用户在副进程中的操作属离线操作,不会干扰联网编图,主、副进程间通过双向通信机制进行数据交换。本发明克服了原技术方案中,跨局列车运行图方案验证困难、编制繁琐、离线数据提取粒度大、可视化程度低、效率不高的缺点,可在不干扰联网编图工作进程的情况下,进行跨局列车运行图的编制及离线数据的提取,提高列车运行图的编制、数据处理效率。
Description
技术领域
本发明涉及一种基于多进程的铁路列车运行图编制系统及方法,属于计算机交通应用领域。
背景技术
现有铁路列车运行图编制系统基于单进程技术开发实现,系统采用C/S架构,依据管辖区域、业务工种设定编图人员的数据操作权限,编图客户端只运行一个进程,用户所有操作均在此进程中,操作结果实时上传至服务器。
现有铁路列车运行图编制系统基于单进程技术开发实现,有以下缺点:
1.跨局列车运行图编制效率低、难以进行可行性验证:在联网编图工作模式下,编图客户端只有一个进程运行,该进程所有操作实时上传至服务器,有严格的权限控制。编图人员只能对本局管辖范围内的运行线进行编制调整,无法预见方案在其管辖范围外的可行性,跨局列车运行图的编制需经由路局编图人员反复协商调整,效率较低;
2.离线数据提取粒度大、效率低:现有技术方案采用将离线数据文件上传至服务器,服务器执行合并数据功能,在全路库中整体替换上传数据,数据提取粒度大,处理时间长,对联网编图造成了一定干扰。数据提取功能后台运行,可视化程度不高,难以实现用户自定义、小粒度、可视化的数据提取需求。
本发明涉及到的一些相关术语:
1.列车运行图:列车运行图规定了各种列车占用区间的次序,列车在每个车站的到达、出发或通过时刻,列车在各区间的运行时间,列车在车站的停站时间标准,以及机车交路等。它把整个路网的运输生产活动联系成为一个统一的整体,列车运行图是铁路运输工作的综合计划、铁路行车组织的基础,是协调铁路各部门、单位按一定程序进行生产活动的工具。
2.铁路列车运行图编制系统:我国铁路已广泛采用计算机编制列车运行图,构建了集列车运行图数据管理、技术资料管理、列车运行计划、列车运行仿真、车底(动车组)交路计划等相关技术作业计划于一体的列车运行图编制与管理协同一体化信息平台,开发了铁路列车运行图编制系统,实现了基于局域网、铁路广域网的联网编图,实现了基于全路网列车运行图的统一编制管理。
3.列车运行图编制管理模式:目前,我国铁路列车运行图的编制采用两级管理模式,其中,铁路总公司负责确定列车运行图的编制原则、方针及任务,制定直通客车方案图,并领导和组织全路列车运行图的编制工作;铁路局负责拟定具体行动计划,并具体负责完成本局的编图工作。我国铁路列车运行图的编制是应用铁路列车运行图编制系统,在联网条件下,系统依据管辖区域、业务工种设定编图人员的数据操作权限,由多用户协同工作完成运行图编制工作。
4.进程:是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
5.进程通信:进程间通信(IPC,Interprocesscommunication)是一组编程接口,让程序员能够协调不同的程序进程,使之能在一个操作系统里同时运行。这使得一个程序能够在同一时间里处理许多用户的要求。因为即使只有一个用户发出要求,也可能导致一个操作系统中多个进程的运行,进程之间必须互相通话。IPC接口就提供了这种可能性。每个IPC方法均有它自己的优点和局限性,因此,对于单个程序而言使用所有的IPC方法是不常见的。
6.共享内存:共享内存是被多个进程共享的一部分物理内存。
7.线程:线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。
发明内容
针对上述现有技术,本发明提出了一种基于多进程的铁路列车运行图编制系统及方法,旨在解决现有技术跨局列车运行图编制效率低、难以进行可行性验证等问题。
为了解决以上发明目的,本发明采用的技术方案如下,一种基于多进程的铁路列车运行图编制系统,所述系统采用C/S架构,具有一台服务器,至少一台客户端,各客户端终端均包含一个主进程和一个副进程,副进程除不具备与服务器通信功能外,其他功能与主进程完全一致;主进程包含副进程管理模块,实现副进程的调度管理,可创建或销毁副进程;主进程和副进程中均包含运行图内存数据,主进程中的运行图数据从服务器获取,主进程实现列车运行图的网络协同编制,副进程可直接从主进程中复制运行图数据,也可以从本地离线数据中读取运行图数据,副进程中用户操作不受路局管辖范围的限制,用户可在全路范围内编制、验证运行图,将满意结果从副进程发送给主进程,再由主进程上传至运行图服务器;主进程和副进程均包含进程间通信模块、数据交换模块、主副进程间同步与协调模块,以上模块用于主副进程间数据进行通信交换。
为了解决以上发明目的,本发明还采用了如下的技术方案,一种基于多进程的铁路列车运行图编制方法,包括以下步骤:
S1:保持原有C/S网络结构不变,将原应用程序升级至64bit系统;
S2:在原客户端进程中建立副进程管理机制,其中副进程中铁路列车运行图编制相关功能与主进程一致,但不控制操作权限,即用户在副进程中具有最高操作权限;
S3:增加主进程与副进程间的通信功能,并建立主副进程间数据同步协调机制,实现主副进程间运行图数据的交换;
S4:在主进程中建立数据权限管理机制,接收到副进程发送过来的运行图数据后,根据主进程的权限对数据进行处理,将符合权限范围的运行图数据提交至运行图服务器。
作为优选,S2所述副进程由主进程采用复制方式创建,创建过程如下:
S21准备工作:确定副进程的类型,开辟共享内存,创建进程间互斥访问共享内存的Mutex互斥量,并创建进程间通知事件,记录各变量的句柄或名称,根据副进程类型,导出主进程全部内存数据,生成副进程所需的数据文件,或是让用户指定副进程所需加载的列车运行图数据库;
S22创建副进程:调用操作系统功能函数,创建子进程,并传入子进程初始化所需的全部参数;
S23子进程通信初始化:根据传入参数,获取共享内存、Mutex互斥量、通知事件的句柄,保存到本进程通信模块参数中,从而建立进程间通信数据通道和消息体系;
S24子进程数据初始化:根据传入参数,导入主进程生成的数据文件,或加载主进程指定的列车运行图数据库。
作为优选,S3所述主副进程数据同步协调机制建立步骤如下:
S31创建进程信息管理数据结构;
S32创建进程自检:进程创建之初,根据传入的参数信息,确定进程身份信息,并记录于S31所述结构中,主进程的父进程ID号为0,子进程则根据参数信息记录父进程的ID号;
S33创建子进程启动与退出同步机制;
主进程创建子进程之前,首先建好共享内存、Mutex互斥量和通知事件,然后根据副进程类型设置子进程启动参数,调用系统函数启动子进程,同时把各类参数传递到子进程,并记录函数返回信息,生成子进程进程信息节点,记录到子进程信息列表中;
子进程早于主进程退出时,向共享内存写入退出信息,通知主进程,然后立即退出,主进程收到通知后,获取共享内享信息,从子进程列表中删除已相关记录;
主进程早于子进程退出时,同样在共享内存中发出退出命令,然后通过对进程句柄事件的检测,等待子进程退出,如果子进程退出超时,则强制结束子进程,在所有子进程退出后,撤销共享内存、互斥量和通知事件,结束本进程。
S34子进程查询:根据子进程信息列表记录内容,获取所有子进程信息,指定子进程ID或句柄进行查询。
作为优选,S3所述主进程与副进程通信方法如下:
进程启动后,通过创建或参数传递方式获取了共享内存句柄、进程通信Mutex互斥量句柄、进程通知事件句柄,以此建立了进程间通信的基本通道;
在建立了通信通道后,进程中启用专用线程,用以监测通知事件消息,调用WaitForSingleObject()基础API函数,通过睡眠方式,等待全局通知事件消息的触发;当线程被唤醒后,检测系统环境,确保正常时,立即对Mutex互斥量加锁,从共享内存中取数据并复制到私有内存中,然后触锁,将数据交由主线程分析处理。
作为优选,所述启用专用线程,用以监测通知事件消息的监听步骤如下:
步骤1:进入循环,等待“事件”信号触发;
步骤2:收到事件,或是在较长时间的等待后自动唤醒,即时检查系统环境;如果检测到了系统退出标志,则不再继续执行,退出线程;如果是系统环境正常,则进行下一步处理。
步骤3:调用相关处理,读取共享内存中接收到的数据;
步骤4:如果未收取到任何数据,系统睡眠一定时间,然后重新返回到第1步;如果收到数据,则进行下一步处理;
步骤5:简单分析数据头,判断数据类型;如果是控制命令,在本线程中立即分析处理;如果是运行图系统数据,进行下一步处理;
步骤6:开辟缓存,复制数据,将缓存数据发送到主线程,交由相关控制程序自动分析处理;
步骤7:清除共享内存中的过期数据;
步骤8:如果是大数据交换过程,设置应答处理标志;
步骤9:整个处理过程发现异常,则报告或记录异常,否则返回到第1步,进行下一轮等待。
作为优选,S3所述主副进程间运行图数据的交换方法如下:
针对列车数据的特点,将批量数据按每列车的数据进行自然切分,每次只传递一列车的全部信息,逐步传输所有数据,另外加入“处理——应答”机制,即发送进程每发送一次数据,接收进程以明确的方式告之数据被接收,否则发送方将重复发送,或者在人工干预情况下停止数据发送。
本发明的有益效果:本发明采用多进程技术建立编图系统的副进程,主进程作为编图客户端在联网模式下运行,主进程按复制方式创建副进程,副进程离线运行,无权限控制,并配置与主进程相同编图、数据处理等功能(除网络功能外),主、副进程相对独立,用户在副进程中的操作属离线操作,不会干扰联网编图,主、副进程间通过双向通信机制进行数据交换。用户利用副进程,可全国铁路网上进行运行图的编制、方案比选、可行性验证等工作,运行图在副进程编制完成后,用户可选择满意结果发送至主进程,由主进程按权限范围同步至服务器。副进程配置多种数据提取功能,可在图形界面下,采用人机交互方式定义数据提取的种类、范围,将选定数据发送给主进程,由主进程依用户权限同步至编图服务器。
本发明克服了原技术方案中,跨局列车运行图方案验证困难、编制繁琐、离线数据提取粒度大、可视化程度低、效率不高的缺点,可在不干扰联网编图工作进程的情况下,进行跨局列车运行图的编制及离线数据的提取,提高列车运行图的编制、数据处理效率。
技术方案的优点:针对我国铁路编图工作的实际需求,采用进程复用技术,构建基于多进程的铁路列车运行图编制系统架构,只需在现有铁路列车运行图编制系统中加入进程管理、进程通信、数据交换等功能模块,简单易于实施,系统改造工作量小,可实际运用于我国铁路列车运行图编制工作中,具有很好的操作性、通用性。
附图说明
图1为本发明系统架构示意图;
图2为副进程创建过程流程图;
图3为主副进程同步协调机制示意图;
图4为进程间通信流程示意图;
图5为主副进程间数据交换流程图。
具体实施方式
下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。
本发明基于多进程技术设计了铁路列车运行图编制系统架构方案,采用进程复用的方式建立列车运行图副进程,通过“发送+接收”进程通信方式建立主副进程间双向通信机制,基于“共享内存”技术设计实现了主副进程间数据交换方法。主要技术方案如下:
1.系统总体架构
本发明主要针对现有技术方案的不足,重点解决在联网模式下客户端路局用户仅具备本局管辖范围权限,想要实现全路范围的优化试编存在困难,实现全局优化困难;解决路局用户提取离线数据困难的问题。本发明提出采用基于多进程的技术方案,建立编图系统的副进程,通过副进程进行无权限限制的方案试编、比对、离线数据提取等,然后副进程将选定编制结果发送至主进程,由主进程同步至运行图服务器。为实现上述功能,本发明采用如下工艺步骤实现目标:
第一步:保持原有C/S网络结构不变,将原应用程序升级至64bit系统,使得应用程序可以分配更高内存;
第二步:在原客户端进程中增加副进程管理机制,可以调度管理副进程,副进程中运行图编制相关功能与主进程一致,但不控制操作权限,用户在副进程中具有最高操作权限;
第三步:增加主进程与副进程间的通信功能,并建立主副进程间数据同步协调机制,实现主副进程间运行图数据的交换;
第四步:在主进程中建立数据权限管理机制,接收到副进程发送过来的运行图数据后,根据主进程的权限对数据进行处理,将符合权限范围的运行图数据提交至运行图服务器。
如图1所示为本发明的系统架构图,系统描述如下:
(1)系统采用C/S架构,具有一台服务器,多台客户端,各客户端用户为各路局列车运行图编制人员,包括运输、客运、机务、车辆部门,各部门之间通过网络进行列车运行图协同编制工作;
(2)本发明支持局域网和广域网下的网络通信,视实际条件,可在会议室组建局域网集中进行全路列车运行图编制(同地),也可以支持各编图人员在各自办公室通过广域网网络通信进行全路列车运行图编制(异地);
(3)本发明为分布式系统,各终端应用程序功能相同,运行图编制过程中的逻辑运算均在各终端进行,仅将运算结果发送至服务器,服务器负责数据的统一协调和控制,由服务器完成各客户端列车运行图数据的同步;
(4)本发明各终端均包含一个主进程和一个副进程(可选,副进程可不启动,最多启动一个副进程),副进程除不具备与服务器通信功能外,其他功能与主进程完全一致;
(5)主进程包含副进程管理模块,实现副进程的调度管理,可创建或销毁副进程;
(6)主进程和副进程中均包含运行图内存数据,主进程中的运行图数据从服务器获取,主进程实现列车运行图的网络协同编制,副进程可直接从主进程中复制运行图数据,也可以从本地离线数据中读取运行图数据,副进程中用户操作不受路局管辖范围的限制,用户可在全路范围内编制、验证运行图,将满意结果从副进程发送给主进程,再由主进程上传至运行图服务器;
(7)主进程和副进程均包含进程间通信模块、数据交换模块、主副进程间同步与协调模块,通过这几个部分实现主副进程间数据稳定、可靠的进行通信交换;
通过本发明完成全路列车运行图编制流程如下:
(1)启动列车运行图服务器,加载全路列车运行图数据;
(2)各路局列车运行图编制人员启动客户端主进程,连接服务器,实现全路列车运行图数据的分布式加载,编制人员通过客户端主进程完成其管辖范围内的列车运行图编制,编制结果由客户端主进程提交给服务器,服务器进行所有客户端主进程数据的同步控制;
(3)若某客户端需要通过副进程来进行运行图的预铺、方案比对,则在主进程菜单中选择从主进程创建副进程,将主进程数据拷贝至副进程,主副进程具有相同的数据,编制人员在副进程中完成运行图的预铺、比对,如果确定结果可行,则通过主副进程间的通信机制将副进程中的数据发送至主进程,客户端主进程再将数据提交至服务器,列车运行图编制结果生效;
(4)若某客户端需要通过副进程提取本局离线数据,则通过主进程启动副进程,在副进程中读取离线数据,选择运行图及相关数据提交给客户端主进程,再由客户端主进程提交给服务器。
2.副进程创建
副进程由主进程采用复制方式创建,创建过程如下:
(1)准备工作:确定副进程的类型(作用),开辟共享内存,创建进程间互斥访问共享内存的Mutex互斥量,并创建进程间通知事件,记录各变量的句柄或名称。根据副进程类型,导出主进程全部内存数据,生成副进程所需的数据文件,或是让用户指定副进程所需加载的列车运行图数据库。
(2)创建副进程:调用操作系统功能函数,创建子进程,并传入子进程初始化所需的全部参数。
(3)子进程通信初始化:根据传入参数,获取共享内存、Mutex互斥量、通知事件的句柄,保存到本进程通信模块参数中,从而建立进程间通信数据通道和消息体系。
(4)子进程数据初始化:根据传入参数,导入主进程生成的数据文件,或加载主进程指定的列车运行图数据库。
3.主副进程数据同步协调
主副进程间数据通信过程中要严格保证数据的一致性,要对数据进行同步协调管理,主要包括主副进程自检、子进程启动与退出同步机制、子进程信息查询等关键功能,通过这些功能来保证主副进程间的数据同步。
(1)进程信息管理数据结构
(2)进程自检
进程创建之初,根据传入的参数信息,确定进程身份信息,并记录于上述结构中。主进程的父进程ID号为0,子进程则根据参数信息记录父进程的ID号。
(3)子进程启动与退出同步机制
主进程创建子进程之前,首先建好共享内存、Mutex互斥量和通知事件,然后根据副进程类型设置子进程启动参数,调用系统函数启动子进程,同时把各类参数传递到子进程,并记录函数返回信息,生成子进程CYxtProcessInfo(进程信息)节点,记录到m_ChildrenProcess(子进程信息列表)中。
子进程早于主进程退出时,向共享内存写入退出信息,通知主进程,然后立即退出。主进程收到通知后,获取共享内享信息,从子进程列表中删除已相关记录。
主进程早于子进程退出时,同样在共享内存中发出退出命令,然后通过对进程句柄事件的检测,等待子进程退出。如果子进程退出超时,则强制结束子进程。在所有子进程退出后,撤销共享内存、互斥量和通知事件,结束本进程。
(4)子进程查询:根据m_ChildrenProcess(子进程信息列表)记录内容,获取所有子进程信息。可指定子进程ID或句柄进行查询。
4.主进程与副进程通信
(1)通信方式的选择
计算机进程间通信通常有三种方式:共享内存、管道和文件。
共享内存实现相对较容易,传输速度快,但缺点是存储量不能大;
管道能实现数据流化传输,易于存取,但数据界线不明确,需加工处理;
文件既能格式化读写,也可以流化处理,并且存储量大,但缺点是速度慢、效率相对较低。
运行图系统在实现副系统与主系统同步工作时,除批量传输列车数据外,其它交互数据的特点是:量小、规格化、高效率,故而采用共享内存最为合适。对批量列车数据传递采用了特殊的处理办法。
(2)通信实现技术
进程启动后,通过创建或参数传递方式获取了共享内存句柄、进程通信Mutex互斥量句柄、进程通知事件句柄,以此建立了进程间通信的基本通道。
为了不影响进程正常事务处理,进程间通信采用异步消息通知方式。在建立了通信通道后,进程中启用专用线程,用以监测通知事件消息。调用WaitForSingleObject()基础API函数,通过睡眠方式,等待全局通知事件消息的触发。当线程被唤醒后,检测系统环境,确保正常时,立即对Mutex互斥量加锁,从共享内存中取数据并复制到私有内存中,然后触锁,将数据交由主线程分析处理。
(3)数据同步与互斥
根据运行图系统多进程数据交换的需求,结合进程通信各种方式的优缺点,运行图系统采用共享内存方式实现主副进程间的通信机制。实际就是将命令或数据写入共享内存,通知其它进程收取数据的过程。
在实现通信过程中,为保证数据完整性,需要各进程对共享内存进行独占式访问,因而引入进程间的通信旗语,具体采用了Mutext信号量,做为共享内存独占访问的互斥锁变量。任何进程在发送或接收进程消息时,必须检测互斥信号量的加锁状态,发现被锁即睡眠等待,直到解锁。这一机制是由操作系统实现的调度控制,可有效保证共享内存的数据安全。
数据写入共享内存后,需要通知接收进程取数据,因此引入可在进程间产生消息的“事件”信号量,实现进程取数据的同步机制。
进程间的通信过程,可简单概括为“加锁——写数据——解锁——通知”和“加锁——读数据——解锁”两过程,是对共享内存、Mutex信号量、事件信号量的综合应用。
(4)主副进程通信协调方法
为保证进程通信正常畅通,防止因进程死锁或异常中止造成进程间通信异常,以及防止数据重复接收,采用了以下几种方法保障通信:
·清空旧数据。接收进程收到数据后,自动清除共享缓冲区里的旧数据。除非该数据不只是发给本进程的,则不清空。
·强制睡眠。接收进程如果没接收到任何数据,则强制接收数据的线程进行睡眠,为发送进程占用共享内存让出时间片。
·建立接收数据缓冲区。新收到的数据与缓存数据进行二进制匹配,发现是相同数据,则丢弃,不重复处理。
·针对大数据交换,建立“处理——应答”机制,即数据发送方在发送完数据后,等待接收方回复应答消息。通过专用的“事件”信号量,由进程双方来改变“事件”的状态,从而传递状态信息,实现应答机制。发送进程必须等待接收方回复以后,才能继续下一次发送。如果接收方长时间未回复,则进入相应的应急处理流程。
(5)监听线程
监听线程专用于接收“数据到达”的通知事件的线程。该线程负责从共享内存中取出数据,根据数据内容,执行相应命令,或是把数据转交给主线程分析处理。其具体流程是:
步骤1:进入循环,等待“事件”信号触发。
步骤2:收到事件,或是在较长时间的等待后自动唤醒,即时检查系统环境。如果检测到了系统退出标志,则不再继续执行,退出线程;如果是系统环境正常,则进行下一步处理。
步骤3:调用相关处理,读取共享内存中接收到的数据。
步骤4:如果未收取到任何数据,系统睡眠一定时间,然后重新返回到第1步;如果收到数据,则进行下一步处理。
步骤5:简单分析数据头,判断数据类型。如果是控制命令,在本线程中立即分析处理;如果是运行图系统数据,进行下一步处理。
步骤6:开辟缓存,复制数据,将缓存数据发送到主线程,交由相关控制程序自动分析处理。
步骤7:清除共享内存中的过期数据。
步骤8:如果是大数据交换过程,设置应答处理标志。
步骤9:整个处理过程发现异常,则报告或记录异常,否则返回到第1步,进行下一轮等待。
5.主副进程数据交换方法
(1)数据交换方式的选择
数据交换方式一般采用数据报和数据流两种方式。
数据报文方式具有固定的格式、特定的长度,以事件完整的描述为一个信息单元,整体打包发送和接收;数据流方式则较为灵活,无固定格式,没有发送次数和字节数的限制,只管将发送方的信息全部递交到接收方,由接收方组合、提取、解析和处理。
数据报文方式实现简单,并且逻辑清晰,但生成数据包比较耗时,并且不节省空间;数据流形式效率高、空间省,但解析数据比较耗时。
运行图系统内部采用的是具有严格定义的规格化数据结构,而发送进程通常是用户正在操作的运行图编制系统,而用户对计算机事务级的处理延时并不敏感,故而将数据转换过程放置在发送进程端更为合理。
根据以上特点,运行图系统数据交换格式选择报文方式。
(2)数据交换的实现
针对运行图数据的特点,设计以下数据报文结构:
nRecvProcessID:接收进程ID,0表示所有进程均可接收。
nSendProcessID:发送进程ID,0表示主进程发送。
iProgrammerID:程序员权限ID(内部控制信息)。
iCmd:命令代码。
nLen:数据长度,指后续Data所包含的数据长度。
Data:实际数据缓冲区,大小由nLen指定。
发送进程按上述格式将待发送的数据转换为数据包,写入共享内享,由接收进程解析并处理。
(3)大数据量数据交换的实现技术
运行图系统大数据交换,实现是批量列车数据传递。由于共享内存具有数据包大小的限制,所以不能一次性将批量列车数据全部发送到其它进程。
针对列车数据的特点,将批量数据按每列车的数据进行自然切分,每次只传递一列车的全部信息,逐步传输所有数据。为了保证数据全部被传输,加入了“处理——应答”机制,即发送进程每发送一次数据,接收进程以明确的方式告之数据被接收,否则发送方将重复发送,或者在人工干预情况下停止数据发送。
Claims (7)
1.一种基于多进程的铁路列车运行图编制方法,其特征在于,步骤如下:
S1:保持原有C/S网络结构不变,将原应用程序升级至64bit系统;
S2:在原客户端进程中建立副进程管理机制,其中副进程中铁路列车运行图编制相关功能与主进程一致,但不控制操作权限,即用户在副进程中具有最高操作权限;
S3:增加主进程与副进程间的通信功能,并建立主副进程间数据同步协调机制,实现主副进程间运行图数据的交换;
S4:在主进程中建立数据权限管理机制,接收到副进程发送过来的运行图数据后,根据主进程的权限对数据进行处理,将符合权限范围的运行图数据提交至运行图服务器。
2.根据权利要求1所述的一种基于多进程的铁路列车运行图编制方法,其特征在于,S2所述副进程由主进程采用复制方式创建,创建过程如下:
S21准备工作:确定副进程的类型,开辟共享内存,创建进程间互斥访问共享内存的Mutex互斥量,并创建进程间通知事件,记录各变量的句柄或名称,根据副进程类型,导出主进程全部内存数据,生成副进程所需的数据文件,或是让用户指定副进程所需加载的列车运行图数据库;
S22创建副进程:调用操作系统功能函数,创建子进程,并传入子进程初始化所需的全部参数;
S23子进程通信初始化:根据传入参数,获取共享内存、Mutex互斥量、通知事件的句柄,保存到本进程通信模块参数中,从而建立进程间通信数据通道和消息体系;
S24子进程数据初始化:根据传入参数,导入主进程生成的数据文件,或加载主进程指定的列车运行图数据库。
3.根据权利要求1或2所述的一种基于多进程的铁路列车运行图编制方法,其特征在于,S3所述主副进程数据同步协调机制建立步骤如下:
S31创建进程信息管理数据结构;
S32创建进程自检:进程创建之初,根据传入的参数信息,确定进程身份信息,并记录于S31所述结构中,主进程的父进程ID号为0,子进程则根据参数信息记录父进程的ID号;
S33创建子进程启动与退出同步机制;
主进程创建子进程之前,首先建好共享内存、Mutex互斥量和通知事件,然后根据副进程类型设置子进程启动参数,调用系统函数启动子进程,同时把各类参数传递到子进程,并记录函数返回信息,生成子进程进程信息节点,记录到子进程信息列表中;
子进程早于主进程退出时,向共享内存写入退出信息,通知主进程,然后立即退出,主进程收到通知后,获取共享内享信息,从子进程列表中删除已相关记录;
主进程早于子进程退出时,同样在共享内存中发出退出命令,然后通过对进程句柄事件的检测,等待子进程退出,如果子进程退出超时,则强制结束子进程,在所有子进程退出后,撤销共享内存、互斥量和通知事件,结束本进程。
S34子进程查询:根据子进程信息列表记录内容,获取所有子进程信息,指定子进程ID或句柄进行查询。
4.根据权利要求3所述的一种基于多进程的铁路列车运行图编制方法,其特征在于,S3所述主进程与副进程通信方法如下:
进程启动后,通过创建或参数传递方式获取了共享内存句柄、进程通信Mutex互斥量句柄、进程通知事件句柄,以此建立了进程间通信的基本通道;
在建立了通信通道后,进程中启用专用线程,用以监测通知事件消息,调用WaitForSingleObject()基础API函数,通过睡眠方式,等待全局通知事件消息的触发;当线程被唤醒后,检测系统环境,确保正常时,立即对Mutex互斥量加锁,从共享内存中取数据并复制到私有内存中,然后触锁,将数据交由主线程分析处理。
5.根据权利要求4所述的一种基于多进程的铁路列车运行图编制方法,其特征在于,所述启用专用线程,用以监测通知事件消息的监听步骤如下:
步骤1:进入循环,等待“事件”信号触发;
步骤2:收到事件,或是在较长时间的等待后自动唤醒,即时检查系统环境;如果检测到了系统退出标志,则不再继续执行,退出线程;如果是系统环境正常,则进行下一步处理。
步骤3:调用相关处理,读取共享内存中接收到的数据;
步骤4:如果未收取到任何数据,系统睡眠一定时间,然后重新返回到第1步;如果收到数据,则进行下一步处理;
步骤5:简单分析数据头,判断数据类型;如果是控制命令,在本线程中立即分析处理;如果是运行图系统数据,进行下一步处理;
步骤6:开辟缓存,复制数据,将缓存数据发送到主线程,交由相关控制程序自动分析处理;
步骤7:清除共享内存中的过期数据;
步骤8:如果是大数据交换过程,设置应答处理标志;
步骤9:整个处理过程发现异常,则报告或记录异常,否则返回到第1步,进行下一轮等待。
6.根据权利要求5所述的一种基于多进程的铁路列车运行图编制方法,其特征在于,S3所述主副进程间运行图数据的交换方法如下:
针对列车数据的特点,将批量数据按每列车的数据进行自然切分,每次只传递一列车的全部信息,逐步传输所有数据,另外加入“处理——应答”机制,即发送进程每发送一次数据,接收进程以明确的方式告之数据被接收,否则发送方将重复发送,或者在人工干预情况下停止数据发送。
7.一种基于多进程的铁路列车运行图编制系统,其特征在于,所述系统采用C/S架构,具有一台服务器,至少一台客户端,各客户端终端均包含一个主进程和一个副进程,副进程除不具备与服务器通信功能外,其他功能与主进程完全一致;主进程包含副进程管理模块,实现副进程的调度管理,可创建或销毁副进程;主进程和副进程中均包含运行图内存数据,主进程中的运行图数据从服务器获取,主进程实现列车运行图的网络协同编制,副进程可直接从主进程中复制运行图数据,也可以从本地离线数据中读取运行图数据,副进程中用户操作不受路局管辖范围的限制,用户可在全路范围内编制、验证运行图,将满意结果从副进程发送给主进程,再由主进程上传至运行图服务器;主进程和副进程均包含进程间通信模块、数据交换模块、主副进程间同步与协调模块,以上模块用于主副进程间数据进行通信交换。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510528288.4A CN105138409B (zh) | 2015-08-25 | 2015-08-25 | 基于多进程的铁路列车运行图编制系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510528288.4A CN105138409B (zh) | 2015-08-25 | 2015-08-25 | 基于多进程的铁路列车运行图编制系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105138409A true CN105138409A (zh) | 2015-12-09 |
CN105138409B CN105138409B (zh) | 2019-03-05 |
Family
ID=54723765
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510528288.4A Active CN105138409B (zh) | 2015-08-25 | 2015-08-25 | 基于多进程的铁路列车运行图编制系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105138409B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106095451A (zh) * | 2016-06-13 | 2016-11-09 | 中国科学院等离子体物理研究所 | 一种基于主从结构的实时控制软件框架构建方法 |
CN107230020A (zh) * | 2017-05-27 | 2017-10-03 | 西南交通大学 | 评测高铁调度员工作组织效率的方法及其相关方法和系统 |
CN107688502A (zh) * | 2017-08-18 | 2018-02-13 | 苏州科达特种视讯有限公司 | 进程间通信方法及装置 |
CN107985349A (zh) * | 2017-10-24 | 2018-05-04 | 北京全路通信信号研究设计院集团有限公司 | 单硬件多软件的实现方法及装置、计算机存储介质 |
CN109606431A (zh) * | 2018-11-14 | 2019-04-12 | 浙江众合科技股份有限公司 | 基于资源白板的车车通信行车资源管理方法 |
CN109823374A (zh) * | 2018-12-27 | 2019-05-31 | 卡斯柯信号有限公司 | 基于ctc系统的列车运行图调整方法及装置 |
CN111198894A (zh) * | 2020-01-03 | 2020-05-26 | 中国铁道科学研究院集团有限公司通信信号研究所 | 一种实现运行线数据融合与一致性的方法 |
CN112068968A (zh) * | 2019-06-11 | 2020-12-11 | 成都鼎桥通信技术有限公司 | 一种双系统终端的服务访问方法和装置 |
CN112396905A (zh) * | 2020-11-12 | 2021-02-23 | 中国铁路郑州局集团有限公司 | 基于跨网络跨距离的铁路多工种分布式仿真方法及系统 |
CN112441085A (zh) * | 2019-08-30 | 2021-03-05 | 比亚迪股份有限公司 | 车辆运行图编制处理方法、计算机设备及存储介质 |
CN113064748A (zh) * | 2021-04-08 | 2021-07-02 | 中国第一汽车股份有限公司 | 进程接替的方法、装置、电子设备及存储介质 |
CN116627682A (zh) * | 2023-07-25 | 2023-08-22 | 菲特(天津)检测技术有限公司 | 基于共享内存的远程工业信息检测方法及装置 |
CN116714645A (zh) * | 2023-08-03 | 2023-09-08 | 比亚迪股份有限公司 | 列车测试方法、系统、存储介质及电子设备 |
CN117666451A (zh) * | 2024-02-01 | 2024-03-08 | 合肥安迅精密技术有限公司 | 基于多进程的贴片机主控系统、方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101673479A (zh) * | 2009-01-12 | 2010-03-17 | 北京交通大学 | 高速铁路行车调度指挥与列车运行控制网络协同系统 |
CN103192855A (zh) * | 2013-03-25 | 2013-07-10 | 北京交通大学 | 基于站台冗余的列车运行图调整方法和系统 |
US20130212917A1 (en) * | 2012-01-31 | 2013-08-22 | International Business Machines Corporation | Reorganizing display of a railway timetable diagram |
CN103744643A (zh) * | 2014-01-10 | 2014-04-23 | 浪潮(北京)电子信息产业有限公司 | 一种多线程程序下多节点并行架构的方法及装置 |
-
2015
- 2015-08-25 CN CN201510528288.4A patent/CN105138409B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101673479A (zh) * | 2009-01-12 | 2010-03-17 | 北京交通大学 | 高速铁路行车调度指挥与列车运行控制网络协同系统 |
US20130212917A1 (en) * | 2012-01-31 | 2013-08-22 | International Business Machines Corporation | Reorganizing display of a railway timetable diagram |
CN103192855A (zh) * | 2013-03-25 | 2013-07-10 | 北京交通大学 | 基于站台冗余的列车运行图调整方法和系统 |
CN103744643A (zh) * | 2014-01-10 | 2014-04-23 | 浪潮(北京)电子信息产业有限公司 | 一种多线程程序下多节点并行架构的方法及装置 |
Non-Patent Citations (2)
Title |
---|
倪少权 等: ""基于群体协同的铁路列车运行图编制系统并发控制方法研究"", 《中国科技论文在线》 * |
倪少权: ""中国铁路列车运行图编制系统研究"", 《中国博士学位论文全文数据库 工程科技Ⅱ辑》 * |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106095451A (zh) * | 2016-06-13 | 2016-11-09 | 中国科学院等离子体物理研究所 | 一种基于主从结构的实时控制软件框架构建方法 |
CN107230020A (zh) * | 2017-05-27 | 2017-10-03 | 西南交通大学 | 评测高铁调度员工作组织效率的方法及其相关方法和系统 |
CN107230020B (zh) * | 2017-05-27 | 2020-04-28 | 西南交通大学 | 评测高铁调度员工作组织效率的方法及其相关方法和系统 |
CN107688502A (zh) * | 2017-08-18 | 2018-02-13 | 苏州科达特种视讯有限公司 | 进程间通信方法及装置 |
CN107688502B (zh) * | 2017-08-18 | 2021-04-06 | 苏州科达特种视讯有限公司 | 进程间通信方法及装置 |
CN107985349A (zh) * | 2017-10-24 | 2018-05-04 | 北京全路通信信号研究设计院集团有限公司 | 单硬件多软件的实现方法及装置、计算机存储介质 |
CN109606431A (zh) * | 2018-11-14 | 2019-04-12 | 浙江众合科技股份有限公司 | 基于资源白板的车车通信行车资源管理方法 |
CN109823374A (zh) * | 2018-12-27 | 2019-05-31 | 卡斯柯信号有限公司 | 基于ctc系统的列车运行图调整方法及装置 |
CN112068968B (zh) * | 2019-06-11 | 2022-10-18 | 成都鼎桥通信技术有限公司 | 一种双系统终端的服务访问方法和装置 |
CN112068968A (zh) * | 2019-06-11 | 2020-12-11 | 成都鼎桥通信技术有限公司 | 一种双系统终端的服务访问方法和装置 |
CN112441085A (zh) * | 2019-08-30 | 2021-03-05 | 比亚迪股份有限公司 | 车辆运行图编制处理方法、计算机设备及存储介质 |
CN111198894A (zh) * | 2020-01-03 | 2020-05-26 | 中国铁道科学研究院集团有限公司通信信号研究所 | 一种实现运行线数据融合与一致性的方法 |
CN111198894B (zh) * | 2020-01-03 | 2023-09-22 | 中国铁道科学研究院集团有限公司通信信号研究所 | 一种实现运行线数据融合与一致性的方法 |
CN112396905A (zh) * | 2020-11-12 | 2021-02-23 | 中国铁路郑州局集团有限公司 | 基于跨网络跨距离的铁路多工种分布式仿真方法及系统 |
CN113064748A (zh) * | 2021-04-08 | 2021-07-02 | 中国第一汽车股份有限公司 | 进程接替的方法、装置、电子设备及存储介质 |
CN116627682A (zh) * | 2023-07-25 | 2023-08-22 | 菲特(天津)检测技术有限公司 | 基于共享内存的远程工业信息检测方法及装置 |
CN116627682B (zh) * | 2023-07-25 | 2023-09-29 | 菲特(天津)检测技术有限公司 | 基于共享内存的远程工业信息检测方法及装置 |
CN116714645A (zh) * | 2023-08-03 | 2023-09-08 | 比亚迪股份有限公司 | 列车测试方法、系统、存储介质及电子设备 |
CN116714645B (zh) * | 2023-08-03 | 2023-11-14 | 比亚迪股份有限公司 | 列车测试方法、系统、存储介质及电子设备 |
CN117666451A (zh) * | 2024-02-01 | 2024-03-08 | 合肥安迅精密技术有限公司 | 基于多进程的贴片机主控系统、方法 |
CN117666451B (zh) * | 2024-02-01 | 2024-05-10 | 合肥安迅精密技术有限公司 | 基于多进程的贴片机主控系统、方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105138409B (zh) | 2019-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105138409A (zh) | 基于多进程的铁路列车运行图编制系统及方法 | |
CN103824233B (zh) | 基于gis的无人机电力线路巡检调度平台及方法 | |
CN100391189C (zh) | 基于互联网的访问和共享远程设备的系统和方法 | |
CN101394106B (zh) | 实现无人值班变电站网络化五防闭锁系统的方法 | |
CN105843182A (zh) | 一种基于oms的电力调度事故预案系统及方法 | |
EP3747727B1 (en) | Data processing system and method | |
CN109478055A (zh) | 在通用、智能系统中使用智能节点用于监测工业过程 | |
CN103049482A (zh) | 一种分布式异构系统中数据融合存储的实现方法 | |
CN102434478A (zh) | 风机远程智能控制系统及其控制方法 | |
CN104991817A (zh) | 一种信息系统可配置集成方法及系统 | |
CN106297461A (zh) | 一种大型养路机械应急预案模拟演练系统 | |
CN105530289A (zh) | 一种无缝集成联营机场异构业务系统的平台及方法 | |
CN108108460A (zh) | 一种标准化作业流程智能管理系统架构及系统 | |
CN107403227A (zh) | 一种跨企业的设备运维协同方法、装置及系统 | |
CN202534028U (zh) | 基于物联网授权id和身份证确认的网络化门禁系统 | |
CN107680222A (zh) | 基于分布式数据库的中央控制门禁系统及方法 | |
Zhu et al. | A study on the challenges and solutions of blockchain interoperability | |
CN110097486A (zh) | 一种移动警务核查核录系统 | |
CN102857553A (zh) | 基于物联网的汽车与工程机械产业链集群协同服务系统 | |
CN112929609A (zh) | 一种基于云平台的视频监测系统 | |
CN117527568A (zh) | 一种数据整合平台的数据接入方法及系统 | |
CN107347090A (zh) | 数据同步方法 | |
CN110083657A (zh) | 数据互通方法、装置、终端及存储介质 | |
Dai et al. | RFID-enable real-time multi-experiment training center management system | |
CN107273219A (zh) | 设备控制方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |