CN106095601B - 一种多进程并发解算差分服务器系统及其实现方法 - Google Patents

一种多进程并发解算差分服务器系统及其实现方法 Download PDF

Info

Publication number
CN106095601B
CN106095601B CN201610429217.3A CN201610429217A CN106095601B CN 106095601 B CN106095601 B CN 106095601B CN 201610429217 A CN201610429217 A CN 201610429217A CN 106095601 B CN106095601 B CN 106095601B
Authority
CN
China
Prior art keywords
server
data
python
resolving
resolves
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.)
Expired - Fee Related
Application number
CN201610429217.3A
Other languages
English (en)
Other versions
CN106095601A (zh
Inventor
王峰
张智金
杨春媚
梅琪
朱海波
黎博渊
袁林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong University of Technology
Original Assignee
Guangdong University of Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangdong University of Technology filed Critical Guangdong University of Technology
Priority to CN201610429217.3A priority Critical patent/CN106095601B/zh
Publication of CN106095601A publication Critical patent/CN106095601A/zh
Application granted granted Critical
Publication of CN106095601B publication Critical patent/CN106095601B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Stored Programmes (AREA)
  • Multi Processors (AREA)

Abstract

本发明公开一种多进程并发解算差分服务器系统及其实现方法,所述差分解算服务器系统采用Python编写网络服务器软件,在网络连接到来时,利用Python的子进程接口函数生成差分数据解算进程等待网络导航数据到来,解算进程调用C/C++编写生成的动态链接库进行解算服务。在导航数据到来时,利用Python和Linux的内存共享函数进行数据共享,从而将数据传输至解算进程,通过Linux下的信号机制进行数据的同步,同时所有进程维护一个状态表格,同样通过内存共享方法发送到父进程,使得父进程能够合理的维护各个子进程的状态。本发明实现了Python做网络服务器,调用C/C++封装的动态链接库进行多进程差分数据解算的服务器系统。

Description

一种多进程并发解算差分服务器系统及其实现方法
技术领域
本发明是一种多进程并发解算差分服务器系统及其实现方法,更具体的,涉及一种Python与C/C++混合编程的多进程并发解算差分服务器系统及其实现方法。
背景技术
Python是一种面向对象,解释性计算机设计语言,第一个公开发行版发行于1991年,Python遵循GPL协议,是一款开源并强大的胶水语言,提供丰富的库供用户使用,由于Python底层用C语言编写,因此能够把C/C++的模块联结到一起,现已成为最受欢迎的语言之一,由于Python语言的简洁,易读和扩展性,Python做科学计算研究的机构和个人越来越多,并且结合图形处理模块和网络模型,做到零部署服务器。
普通的TCP/IP服务器常用模型包括:循环服务器(在同一时刻,响应一个客户请求),多进程服务器(每个客户fork出一个子进程,处理请求),预先派生子进程服务器(在启动时,预先fork出一些子进程),多线程并发服务器(每个客户请求,创建线程处理)等,其中循环服务器由于等待时间长,效率低下,在大多应用已经不使用了,多线程和多进程各有优点,进程服务器在每个连接生成单独的程序空间,隔离度较好,但时间耗费较长,而多线程服务器在生成新线程时的时间开销较小,但各个线程之间相互影响。
Twisted是用Python实现的基于事件驱动的网络引擎模块,其作者致力于开发一种可拓展的,基于事件驱动,跨平台的网络框架,Twisted对于大多数网络协议,都有客户端和服务器实现,为了消除多进程/多线程服务器的相互干扰问题,利用Python中对流式对象(比如socket,pipe)进行多路I/O的select模块,快速搭建服务器原型,这迅速降低了程序复杂性,比多线程更加可靠。但Twsited服务器架构目前普遍适用于游戏服务器,对于科学计算和解算方面,应用尚少。
Python从诞生至今,逐渐被广泛应用于服务器编程,Python作为服务器编程主流语言,具有丰富的模块,能够快速部署可靠服务,另一方面,由于大多数算法库是基于C/C++编程的,这就形成了服务器和解算部分分离的情况,如何使得服务器数据流与解算服务交互,成了现实的问题,传统的方法是利用数据库,将数据库作为服务器和解算算法的数据桥梁,实现了数据的交互,但是该方法相当于多增加了一层结构,使系统变得较为复杂,而且对于快速,大量的数据,数据库的效率也大打折扣,并且数据库作为中间层,需要服务器上层和解算底层都调用数据库语言,这给两方面的编程都带来了不小的工作量。
传统的算法库是典型的单线程/多线程模型,也就是解算算法作为算法函数集合,通过主函数调用,这里的主函数也就是程序的主线程,通过调用解算算法函数,进行算法实现,但是对于面向互联网的算法应用,上述的方式进行算法测试和单用户是可行的,而对于面向大量,动态的用户计算,就显得力不从心,需要谋求新的途径,进行并发服务。
传统的差分解算服务主要是服务器和解算分离策略,例如服务器数据流储存在内存,由解算软件读取,或者一台服务器进行数据连接和读取工作,另一台进行解算,这势必使得服务器端和解算端有隔离,本方法可以利用一台服务器,快速搭建可靠的差分服务。
上述差分解算服务的类型目前主要有位置差分,伪距离差分和载波相位差分(RTK),基本上涵盖了目前的主要差分服务方法。
上述的差分服务的信号来源主要是目前的3大导航系统,主要是美国的GPS系统,俄罗斯的GLONASS系统,中国的北斗系统(BDS)和欧洲的伽利略系统。
发明内容
本发明的目的在于提供一种多进程并发解算差分服务器系统。本发明克服现有基于不同语言平台的网络服务器和解算库交互方式繁琐的问题。
本发明的另一目的在于提供一种多进程并发解算差分服务器系统的实现方法。本发明的方法是一种有效的基于网络事件的差分解算库的并发实现方法。
本发明的技术方案是:本发明提供一种多进程并发解算差分服务器系统,包括若干个带有卫星导航接收功能的互联网用户、主解算服务器、各个用户数据流、Python编写的网络连接服务器软件、由Python生成的各解算进程、由C/C++编写的差分解算动态链接库、卫星差分基准站、本地储存器,互联网用户接收到卫星信号,将导航数据流发送到主解算服务器,主解算服务器接收到用户连接请求,建立连接,同时Python生成各个解算进程,各个解算进程在同时接收到互联网用户的导航数据流和基准站的差分数据流,调用由C/C++编写的差分解算动态链接库进行解算,解算后的数据储存在服务器端。
上述互联网用户通过网络设备接入互联网,并且安装带有TCP/IP协议的客户端软件和卫星接收机,能够与服务器建立连接并发送几组导航数据流到服务器端,并且具备连接检查功能,在网络质量不好或者服务器拒绝的情况下,断开重连。
上述主解算服务器接入互联网主干线,处理来自网络客户端的大量导航数据流,同时安装网络连接服务器软件,并连接差分基准站,大部分的解算工作将在此服务器上运行,并且该服务器有计时掉线功能,在客户端网络状态不好的情况下,经过一小段容忍时间,主动断开和客户端的连接,并保存最后解算结果,终止解算。
上述解算进程是计算机的一种资源概念,负责得到计算机资源,并进行相应的数据处理工作,并且这些进程负责调用解算函数库,同时每个进程维护一个状态表格,用来进行状态的表示和判断,在进程准备就绪的时候,主进程负责将数据流导入,解算进程5同时接收来到来自互联网上的导航数据流和来自的基准站数据流,调用解算库进行差分解算。
上述Python生成解算进程的过程中,利用的是Python提供的进程接口模块,是使用subprocess.Popen()函数进行操作,在解算过程中的进程和进程之间的数据传递是通过linux的mmap()内存共享映射进行的,同时数据的同步工作是用过Linux的信号同步机制完成的;上述编写的动态库是指操作系统下可以共享的一种程序接口文件,具体到Linux下面,就是通常所说的.SO文件,该文件广泛用于进行接口封装操作,这里我们将解算函数的接口导出,通过编写Makefile文件,将C/C++解算函数集编译并链接,生成可以被Python调用的.SO文件,并且该动态库可以被重复利用,大大节省计算机资源;所述的Ptyhon调用动态库,是通过Python的ctypes模块进行导入的,具体方法是在生成解算进程5,由5导入该模块,将生成的动态库6导入到进程空间,直接有Python调用。
本发明多进程并发解算差分服务器系统的实现方法,包括以下步骤:
S1: 带有导航接收功能的互联网终端,在接收到导航数据的同时,通过互联网,发送导航数据到差分网络服务器;
S2: 用Python语言易构建的特点,快速搭建性能强健的差分网络服务器系统,跟踪终端连 接数,快速建立连接进程;
S3: 利用Python底层用C语言编写的特点,完成对C/C++语言编写的差分解算库的装载, 并生成解算进程,等待数据到来;
S4:Python编写的网络服务器接收到有效导航网络数据,利用Python的信号库,向子进程 发送数据到来信号,同时向对应的子进程的文件映射共享内存数据;
S5:解算子进程收到信号量,开始映射共享内存数据,读取导航数据,调用C/C++编译生成的差分解算库,进行差分解算工作;
S6:子进程维护一个状态列表,同样通过文件映射方式将数据共享到服务器进程,以便于服务器进程维护自己的所有子进程。
用Python编写网络数据服务器,用C/C++语言编写生成解算的算法库函数;所述Python编写的数据服务器是采用Twisted等Python流行网络架构编写的TCP/IP服务器;所述C/C++语言编写的解算算法是指用C/C++语言编写的解算算法并封装成动态链接库。
差分解算进程是多进程的,根据连接数的数量(用户的数量)决定了解算进程的数量;所述解算进程是由网络服务器进程生成的,连接数数量是由网络连接数决定的,网络连接有几个,就动态生成几个解算进程;所述的一种Python与C/C++混合编程的多进程并发解算差分服务器系统,其特征在于,Python语言写的服务器进程和C/C++语言编写的解算进程是通过文件映射方式共享数据的;所述文件映射是指在Linux下面的用户空间和内核空间的数据交互的一种方式,主要由Mmap函数完成,所述Phthon的映射方法是Python的mmap模块,所述C/C++语言解算进程的映射方法是指标准Linux下的mmap接口。
服务器进程和解算进程之间的数据同步方式是通过Linux下的信号量进行的;所述的数据同步方式,是指服务器送数据同时,解算进程需要明确服务器发数据这一消息;所述信号量同步,是指服务器发送数据后,同时发送信号到解算进程,使得解算进程接收并处理该同步信号;每个解算进程对信号的处理,是通过自己同时生成一个信号处理线程进行处理的;所述信号,是指服务器进程发送给解算进程的数据到来信号,所述信号处理线程,是在解算进程里面生成的一个线程,该线程函数专门捕捉发送给自己的信号并进行处理。
每个解算子进程,维护了自己的一个状态表格,使得父进程可以探测自己子进程的状态;所述状态表格,是指解算子进程在正常运行时,定时更新的一种数据结构;所述父进程探测该状态表格,也是通过Linux中的mmap函数更新到内存并由服务器进程读取的;该服务器系统提供一种快捷,高效的导航差分服务方法;所述的导航差分服务,指目前导航流动站在接收到导航信号,发送导航信息到差分服务器,服务器通过比对流动站信息和基准站信息,解算出流动站误差,为流动站提供精准的导航服务。
本发明利用现阶段网络编程较多的Python语言的特点,结合通用的C/C++语言解算库,提供一种通用的并发服务器解算模型。可以通过现有的互联网为相应的客户端提供并发的差分解算服务,在不改动网络架构和用户软件的情况下,利用本发明的多进程并发解算差分服务器系统,快速部署,满足客户解算需求,具有向前兼容,部署方便的特点,本发明的多进程并发解算差分服务器系统的实现方法在GPS载波相位差分服务器的方案中成功部署,表明该方法不仅具有一定的可行性,也有一定的成熟度和稳定性。
附图说明
图1是本发明的原理图;
图2是本发明的核心技术;
图3是本发明在具体实践中的一种应用。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。而且本发明图3的具体实施方法仅仅是特殊的一种应用于工程实践的方法,仅用于解释本发明,而不能解释为对本发明的限制,对于其他卫星导航系统以及其他差分服务方法,本发明同样适用。
本发明的原理图如图1所示,本发明的一种Python与C/C++混合编程的多进程并发解算差分服务器系统,包括若干个带有卫星导航接收功能的互联网用户1、主解算服务器2、各个用户数据流3、Python编写的网络连接服务器软件4、由Python生成的各解算进程5、由C/C++编写的差分解算动态链接库6、卫星差分基准站7、本地储存器8,互联网用户接收到卫星信号,将导航数据流发送到主解算服务器,主解算服务器接收到用户连接请求,建立连接,同时Python生成各个解算进程,各个解算进程在同时接收到互联网用户的导航数据流和基准站的差分数据流,调用6进行解算,解算后的数据储存在服务器端8.
上述互联网用户1通过网络设备接入互联网,并且安装带有TCP/IP协议的客户端软件和卫星接收机,能够与服务器1建立连接并发送几组导航数据流到服务器端。并且具备连接检查功能,在网络质量不好或者服务器拒绝的情况下,断开重连。
上述主解算服务器2接入互联网主干线,处理来自网络客户端1的大量导航数据流,同时安装网络连接服务器软件3,并连接差分基准站7,大部分的解算工作将在此服务器上运行。并且该服务器有计时掉线功能,在客户端网络状态不好的情况下,经过一小段容忍时间,主动断开和客户端的连接,并保存最后解算结果,终止解算。
上述解算进程5是计算机的一种资源概念,负责得到计算机资源,并进行相应的数据处理工作,并且这些进程负责调用解算函数库6,同时每个进程维护一个状态表格,用来进行状态的表示和判断,在进程准备就绪的时候,主进程负责将数据流导入。解算进程5同时接收来到来自互联网上的导航数据流和来自7的基准站数据流,调用解算库进行差分解算。
在上述Python生成解算进程5的过程中,主要利用的是Python提供的进程接口模块,这里主要是使用subprocess.Popen()函数进行操作。在解算过程中的进程和进程之间的数据传递是通过linux的mmap()内存共享映射进行的。同时数据的同步工作是用过Linux的信号同步机制完成的。
上述编写的动态库是指操作系统下可以共享的一种程序接口文件,具体到Linux下面,就是通常所说的.SO文件,该文件广泛用于进行接口封装操作,这里我们将解算函数的接口导出,通过编写Makefile文件,将C/C++解算函数集编译并链接,生成可以被Python调用的.SO文件,并且该动态库可以被重复利用,大大节省计算机资源。
上述所述的Ptyhon调用动态库,是通过Python的ctypes模块进行导入的,具体方法是在生成解算进程5,由5导入该模块,将生成的动态库6导入到进程空间,直接有Python调用。
本发明的核心技术如图2所示,主要核心包括以下几部分:进行网络连接后,连接分配任务的Python连接软件及其进程空间11、连接进程维护的各个解算进程的进程ID表格12、由连接进程分配出来的各个解算进程13、连接进程将数据传输至各个解算进程的映射机制14、连接进程接收数据,通知解算进程进行数据接收的系统信号15、各个解算进程自己维护的状态表格16、各个解算进程调用的解算库函数17。其中连接进程是由Python编写的一个Twisted异步网络架构,在该架构下,网络以事件的形式触发各个函数,这里我们利用网络连接事件触发解算进程,解算进程运行以后,并不立即进行解算,因为解算数据流并没有同时到达,这里我们生成了解算进程的一个实例,做好一切准备,等待数据流信号。
在解算进程准备好以后,更新状态表格,表明自己准备好,连接进程读取到该表格,从而获取解算进程准备好状态,在下一个数据到来是,通过每个进程ID表格,发送Linux信号量,具体是指Linux信号量(semaphoer)以及Python sys模块的信号函数。通过发送特定的信号量到相应的已经准备好的进程,并同时将数据通过共享内存的方式映射至共享区,具体是通过Linux中的Mmap函数和Python中的mmap模块。
相应进程在接收到连接进程发送的信号后,立即读取相应的映射文件,将文件的数据储存到临时变量,同时将该数据送入解算函数,这里的解算函数是在解算进程准备过程中,装载进自己的进程空间的解算库7中的函数。解算函数运行解算,得到解算结果,储存并反馈给各个互联网用户。
核心技术图2中的各个数据流很大概率同时到达服务器,因此不仅需要连接服务器具有并发功能,同时需要解算具有多个实例,可以从框架8看出,在t1和t2时刻,都是有数据到来的,我们需要每个数据在送到解算进程以后都能得到及时响应,因此需要有异步方法,这里我们采用上述所述,通过信号量加文件映射方式进行了进程之间的异步。由于我们采用多进程方式,从程序整体看,每个时刻都是一条指令在执行,但是通过系统的时间分配,每个进程都有充足的资源完成解算工作。
图2中的程序运行空间有两部分构成,一部分是Python作用域,另一部分是C/C++语言作用域,见图中虚线分隔,其中Python语言作用域主要负责的就是网络导航数据接收和解算进程的启动,C/C++语言负责的是差分的具体解算工作。
图3是具体实践中的应用,是一种GPS载波相位差分导航解算系统的多连接解算系统的工程实践,由以下多部分组成:分布在互联网中的GPS接收机21、连接差分基站的服务器22、Python编写的网络连接服务器23、载波相位差分解算库24、差分解算进程25,该系统要求为互联网用户提供准确的位置信息,具体是指通过载波相位差分技术,解算出用户的定位误差。用户一方面接收到GPS载波相位数据,一方面通过网络将数据传输至基站(解算服务器),解算服务器在接收到用户的数据后,通过与本机同一时刻的基准接收机接收到的载波相位数据进行比对,调用载波相位解算库,算出用户的精确位置。
由于需要提供多个用户的数据服务,因此传统的面向单连接的解算服务已经无法满足系统要求,这里通过一种Python与C/C++混合编程的多进程并发解算差分服务器系统,快速的满足了该差分服务器的系统要求,这里通过编写高效的Python服务器架构3,实现系统面向多连接的需求,同时通过将原有的载波相位差分解算代码的C/C++语言文件,编译生成动态库文件,在网络流动端的GPS载波观测数据到来时,及时生成多解算进程。并通过信号量和文件映射的方式,跨语言完成数据交互,实现了面向大量用户的精准差分系统的快速部署。
在上述系统的部署中,充分利用了现有的软硬件资源,不需要改动任何硬件,在原有的解算算法的基础上,只需要改变编译方式,编译可以被Python调用的动态链接库文件,同时通过成熟的Python网络架构,接收大量多用户数据请求,导入解算进程,即可实现原有的架构无法完成的面向互联网服务的系统实践。实现了成本和效率最大化。

Claims (10)

1.一种多进程并发解算差分服务器系统,包括若干个带有卫星导航接收功能的互联网用户、主解算服务器、各个用户数据流、Python编写的网络连接服务器软件、由Python生成的各解算进程、由C/C++编写的差分解算动态链接库、卫星差分基准站、本地储存器,互联网用户接收到卫星信号,将导航数据流发送到主解算服务器,主解算服务器接收到用户连接请求,建立连接,同时Python生成各个解算进程,各个解算进程在同时接收到互联网用户的导航数据流和基准站的差分数据流,调用由C/C++编写的差分解算动态链接库进行解算,解算后的数据储存在服务器端。
2.根据权利要求1所述的多进程并发解算差分服务器系统,其特征在于,上述互联网用户通过网络设备接入互联网,并且安装带有TCP/IP协议的客户端软件和卫星接收机,能够与服务器建立连接并发送导航数据流到服务器端,并且具备连接检查功能,在网络质量不好或者服务器拒绝的情况下,断开重连。
3.根据权利要求1所述的多进程并发解算差分服务器系统,其特征在于,上述主解算服务器接入互联网主干线,处理来自网络客户端的大量导航数据流,同时安装网络连接服务器软件,并连接差分基准站,大部分解算工作将在此服务器上运行,并且该服务器有计时掉线功能,在客户端网络状态不好的情况下,经过一小段容忍时间,主动断开和客户端的连接,并保存最后解算结果,终止解算。
4.根据权利要求1所述的多进程并发解算差分服务器系统,其特征在于,上述解算进程是计算机的一种资源概念,负责得到计算机资源,并进行相应的数据处理工作,并且这些进程负责调用解算函数库,同时每个进程维护一个状态表格,用来进行状态的表示和判断,在进程准备就绪的时候,主进程负责将数据流导入,解算进程同时接收来自互联网上的导航数据流和来自基准站的数据流,调用解算库进行差分解算。
5.根据权利要求1所述的多进程并发解算差分服务器系统,其特征在于,上述Python生成解算进程的过程中,利用的是Python提供的进程接口模块,是使用subprocess.Popen()函数进行操作,在解算过程中的进程和进程之间的数据传递是通过linux的mmap()内存共享映射进行的,同时数据的同步工作是用过Linux的信号同步机制完成的;动态库是指操作系统下可以共享的一种程序接口文件,具体到Linux下面,就是.SO文件,该文件用于进行接口封装操作,这里将解算函数的接口导出,通过编写Makefile文件,将C/C++解算函数集编译并链接,生成被Python调用的.SO文件,并且该动态库被重复利用;所述的Python调用动态库,是通过Python的ctypes模块进行导入的,具体方法是在生成解算进程,由解算进程导入该模块,将生成的动态库导入到进程空间,直接有Python调用。
6.一种多进程并发解算差分服务器系统的实现方法,其特征在于,包括以下步骤:
S1:带有导航接收功能的互联网终端,在接收到导航数据的同时,通过互联网,发送导航数据到差分网络服务器;
S2:用Python语言易构建的特点,快速搭建性能强健的差分网络服务器系统,跟踪终端连接数,快速建立连接进程;
S3:利用Python底层用C语言编写的特点,完成对C/C++语言编写的差分解算库的装载,并生成解算进程,等待数据到来;
S4:Python编写的网络服务器接收到有效导航网络数据,利用Python的信号库,向子进程发送数据到来信号,同时向对应的子进程的文件映射共享内存数据;
S5:解算子进程收到信号量,开始映射共享内存数据,读取导航数据,调用C/C++编译生成的差分解算库,进行差分解算工作;
S6:子进程维护一个状态列表,同样通过文件映射方式将数据共享到服务器进程,以便于服务器进程维护自己的所有子进程。
7.根据权利要求6所述的多进程并发解算差分服务器系统的实现方法,其特征在于用Python编写网络数据服务器,用C/C++语言编写生成解算的算法库函数;所述Python编写的数据服务器是采用Twisted的Python流行网络架构编写的TCP/IP服务器;所述C/C++语言编写的解算算法是指用C/C++语言编写的解算算法并封装成动态链接库。
8.根据权利要求6所述的多进程并发解算差分服务器系统的实现方法,其特征在于差分解算进程是多进程的,根据连接数的数量决定了解算进程的数量;所述解算进程是由网络服务器进程生成的,连接数数量是由网络连接数决定的,网络连接有几个,就动态生成几个解算进程;Python语言写的服务器进程和C/C++语言编写的解算进程是通过文件映射方式共享数据的;所述文件映射是指在Linux下面的用户空间和内核空间的数据交互的一种方式,由Mmap函数完成,Python的映射方法采用Python的mmap模块,所述C/C++语言解算进程的映射方法采用标准Linux下的mmap模块。
9.根据权利要求6所述的多进程并发解算差分服务器系统的实现方法,其特征在于服务器进程和解算进程之间的数据同步方式是通过Linux下的信号量进行的;所述的数据同步方式,是指服务器送数据同时,解算进程需要明确服务器发数据这一消息;信号量同步,是指服务器发送数据后,同时发送信号到解算进程,使得解算进程接收并处理该同步信号;每个解算进程对信号的处理,是通过自己同时生成一个信号处理线程进行处理的;所述信号,是指服务器进程发送给解算进程的数据到来信号,所述信号处理线程,是在解算进程里面生成的一个线程,该线程专门捕捉发送给自己的信号并进行处理。
10.根据权利要求6所述的多进程并发解算差分服务器系统的实现方法,其特征在于每个解算子进程,维护了自己的一个状态表格,使得父进程可以探测自己子进程的状态;所述状态表格,是指解算子进程在正常运行时,定时更新的一种数据结构;所述父进程探测该状态表格,也是通过Linux中的mmap函数更新到内存并由服务器进程读取的;导航差分服务,指目前导航流动站在接收到导航信号,发送导航信息到差分服务器,服务器通过比对流动站信息和基准站信息,解算出流动站误差,为流动站提供精准的导航服务。
CN201610429217.3A 2016-06-16 2016-06-16 一种多进程并发解算差分服务器系统及其实现方法 Expired - Fee Related CN106095601B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610429217.3A CN106095601B (zh) 2016-06-16 2016-06-16 一种多进程并发解算差分服务器系统及其实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610429217.3A CN106095601B (zh) 2016-06-16 2016-06-16 一种多进程并发解算差分服务器系统及其实现方法

Publications (2)

Publication Number Publication Date
CN106095601A CN106095601A (zh) 2016-11-09
CN106095601B true CN106095601B (zh) 2019-08-30

Family

ID=57235288

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610429217.3A Expired - Fee Related CN106095601B (zh) 2016-06-16 2016-06-16 一种多进程并发解算差分服务器系统及其实现方法

Country Status (1)

Country Link
CN (1) CN106095601B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106648932A (zh) * 2016-12-19 2017-05-10 四川长虹电器股份有限公司 基于Python扩展模块的多进程共享系统及方法
CN106844062B (zh) * 2016-12-23 2019-06-18 华南师范大学 一种在C++与Python模块间实现实时双向协助的通信方法
CN107731230A (zh) * 2017-11-10 2018-02-23 北京联华博创科技有限公司 一种庭审笔录系统及方法
CN108289250B (zh) * 2017-12-27 2020-05-12 深圳市九洲电器有限公司 机顶盒操作系统管理方法及系统
CN110907970B (zh) * 2018-09-17 2021-12-28 千寻位置网络有限公司 GNSS云端定位的多Rover基线组建方法
CN111831402B (zh) * 2019-04-15 2024-05-28 戴尔产品有限公司 用于管理软件功能的方法、设备和计算机程序产品
CN111045831B (zh) * 2019-11-04 2023-10-31 航天南湖电子信息技术股份有限公司 一种基于python的雷达实时信号处理方法
CN113138771B (zh) * 2020-01-17 2024-06-21 北京达佳互联信息技术有限公司 数据处理方法、装置、设备及存储介质
CN111651149B (zh) * 2020-07-03 2022-11-22 东软教育科技集团有限公司 一种便于部署的机器学习模型系统及其调用方法
CN113423025B (zh) * 2021-06-22 2024-02-13 烟台东方智能技术有限公司 一种具有人工智能的数据管理终端

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
"A general strategy for differential forensic analysis";Simson Garfinkel等;《Digital Investigation》;20120831;第9卷;第S50-S59页
"基于Python和C/C++的分布式计算架构";高远;《软件导刊》;20120630;第11卷(第6期);第17-18页
"将Python嵌入到C/C++应用程序中的编程方法";何炯;《武汉市经济管理干部学院学报》;20020630;第177-178页
"非标准参数的CCSDS Turbo 码译码器性能仿真";赵琦等;《北京航空航天大学学报》;20141130;第40卷(第11期);第1507-1511页

Also Published As

Publication number Publication date
CN106095601A (zh) 2016-11-09

Similar Documents

Publication Publication Date Title
CN106095601B (zh) 一种多进程并发解算差分服务器系统及其实现方法
CN105793715B (zh) 互连重定时器增强
Nanda et al. Decentralizing execution of composite web services
CN106301829B (zh) 一种网络业务扩容的方法和装置
CN105262837B (zh) 一种基于云计算的三网融合应用终端接入装置及实现方法
US10698711B2 (en) Cloud computing systems
CN110377438A (zh) 跨进程通信接口的路由方法、装置和系统
CN110088737A (zh) 将并发程序转换为可部署在基于fpga的云基础设施上的硬件的综合路径
CN103116520B (zh) 基于tcp/ udp的远程过程调用rpc的方法
CN103617066A (zh) 一种工作流引擎及其实现方法
CN104094232A (zh) 流式数据系统中的处理单元管理
CN110413304A (zh) 基于区块链网络的智能合约热升级方法及装置
CN105550268A (zh) 大数据流程建模分析引擎
CN104239088B (zh) 对分布式计算机网络的节点执行操作
CN107025167A (zh) 在处理器追踪日志中使用编译器类型信息进行数据流分析的方法和设备
CN106385330A (zh) 一种网络功能虚拟化编排器的实现方法及装置
CN106487569A (zh) 一种业务消息处理方法及装置
CN110471664A (zh) 一种基于OSGi框架的异构软件平台统一对接方法
CN104360962B (zh) 匹配于高性能计算机结构的多级嵌套数据传输方法与系统
CN116028233B (zh) 一种ai计算资源的数字对象组织与共享方法和装置
CN103299277A (zh) Gpu系统及其处理方法
CN105144107A (zh) 用于运行可执行代码的方法、处理模块及系统
Syriani et al. Modelling and simulation-based design of a distributed devs simulator
CN102201992A (zh) 面向流处理器并行环境的数据流通信系统及其通信方法
CN112395104A (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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20190830

Termination date: 20200616