1.本发明涉及计算机技术领域,具体地,涉及基于国产龙芯处理器的进程间通信 系统,尤其涉及一种基于国产龙芯处理器的进程间通信系统及操作平台。
背景技术:
2.当前,基于国产龙芯处理器以及相应宏内核操作平台也正在许多不同应用领域 逐渐获得了广泛的应用。考虑到国产龙芯处理器是我国研究机构自主研发并维护控 制其设计架构,此类处理器很显然将具有优秀的安全可信度,保证了其应用的灵活 性与广泛性。因此,基于国产龙芯处理器及相应宏内核操作系统平台的计算机将有 能力实现一些项目活动所必需的各种计算功能,包括分布式云计算、多用户云服务、 大规模数据处理以及高性能计算等。
3.然而,由于国产龙芯处理器架构仍然处于新晋开发,并期望在应用测试中逐渐 进行长期迭代完善的平台,其在功能完整性上仍然存在一定的不足与限制。很显然, 这些功能上的限制整体而言主要可以归咎于两方面的原因:一方面是由于硬件设计 的复杂度在支持基础功能以外的扩展功能上存在一定的困难,而另一方面则是由于 软件应用环境的不够成熟,许多支持特殊应用功能的系统软件未能成功移植。
4.由于在国产龙芯处理器的应用领域中,往往具有高效率多任务协作以及并发运 行的服务水平要求和关键系统设计约束。这些要求和约束包括了进程间通信延时, 进程间上下文切换开销等,其原因是相关进程间同步、通信、任务调度对于系统的 整体性能具有重要影响。例如大规模并行计算系统、大数据分析等任务往往会在当 前的计算系统中产生大量的相互关联的进程,并在这些相互关联的进程中并行处理 计算数据,以此提高运算效率。因此,在这种计算环境中,不同进程间需要进行大 量的数据转移来完成计算的并发分配以及任务的流水线式处理。此时进程间的通信 接口就必须确保有足够高的性能以免称为整体系统性能的瓶颈。除此之外,分布式 的、多进程的在线服务计算以及业务处理系统因为必须通过多进程实现分布式部署 以及通过分割进程模块确保系统的鲁棒性和可部署性,进程之间的频繁同步与通信 就必须得到低延迟、低开销的进程间通信接口支持。否则无论是时间延迟还是性能 开销,在高频率的进程间通信过程中,由乘数效应都会成为系统性能的致命缺陷。 因此对于国产龙芯处理器以及其宏内核操作系统而言,低延迟、低开销的进程间通 信接口支持是一项极为关键的技术功能。
5.目前,设计并实现基于国产龙芯处理器及相应宏内核操作系统平台的高性能进 程间通信方法需要面对以下问题:目前基于国产龙芯处理器以及相应宏内核操作系 统平台,针对进程间通信功能,尚无一套高效率的数据共享与临界数据保护机制。
6.公开号为cn110046489a的发明专利,公开了一种基于国产龙芯处理器的可信 访问验证系统,计算机及可读存储介质,bios芯片和外插设备连接端口分别与处理 器连接;处理器通过与bios芯片连接实现对系统所有模块的控制及系统所有数据 信息的获取及发送;处理器通过与外插设备连接端口获取用户插入的口令卡信息, 并对口令卡信息进行验
建新线程,作为通信端构造器;
26.2)进程调用创建发送端/接受端函数,通信端构造器向到组件共享内存写入注册发 送端/接受端命令;
27.3)进程调用创建发送端/接受端完成函数,通信端构造器不断读取到组件共享内存, 直至收到支持组件发送的对应创建完成命令,根据命令中传递的信息在本地初始化发送 端/接受端;
28.4)进程调用进程间通信接口进行进程间通信过程;
29.5)进程调用关闭发送端/接受端函数,通信端构造器向到组件共享内存中写入注销 发送端/接受端命令,删除发送端/接受端;
30.6)进程调用关闭通信端函数,关闭通信端构造器。
31.优选的,所述进程间通信接口模块写入流程包括:
32.a.进程调用写入函数,发送端原子读取当前滑动窗口限制与当前发送队列队尾位置, 队尾位置大于滑动窗口限制时,返回写入失败;
33.b.在当前写入队尾位置到共享内存尾部容量小于所需写入大小时,调用填充过程, 首先将数据大小设为负值,以标志写入未完成;将写入数据头中数据类型设置为填充数 据,填充完成后将数据头中数据大小设为填充数据大小,返回写入失败;
34.c.原子获取增加写入队列队尾位置,写入数据头,写入完成后将数据头中数据大小 设为写入数据大小,标志写入完成,返回写入完成。
35.优选的,所述c步骤中原子获取增加写入队列队尾位置,写入数据头,其中数据类 型设置为传输数据,数据大小设置为负值,使用memcpy写入数据。
36.优选的,所述进程间通信接口模块读取流程包括:
37.a.原子读取当前读取位置,根据当前读取位置获得对应数据块,若数据头中的数据 大小小于等于0,则停止读取;
38.b.若当前数据头中数据类型为填充数据,将读取位置指向下一个数据块,否则,从 当前数据块中使用memcpy读出数据,并原子更新读取位置;
39.c.更新读取位置控制数值,以更新滑动窗口。
40.第二方面,本发明还提供一种操作平台,所述操作平台包括所述的系统。
41.与现有技术相比,本发明具有如下的有益效果:
42.1、基于国产龙芯处理器指令集架构与相应的宏内核操作系统为基础构建原子 读写方法,并使用该方法设计实现进程间通信接口,实现原子临界数据读写保护机 制,避免了数据读写时的锁定过程;
43.2、使用支持服务组件作为支持进程管理进程间通信发送端与接受端的注册、注 销与链路连接,实现对于各通信端的集中管理,与对于共享内存的统一创建与删除, 避免了运行过程中出现大量垃圾;
44.3、通过使用通信端设计与提供通信端通信接口,允许通过共享内存实现易于编 码的进程间通信过程,同时,通信端接口设计为非阻塞的通信机制,避免了写入读 取过程中可能的由阻塞引起的非必要的挂起、等待以及切换等额外开销。
附图说明
45.通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、 目的和优点将会变得更明显:
46.图1为系统平台的内部整体结构详细描述示意图。
具体实施方式
47.下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人 员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技 术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于 本发明的保护范围。
48.本发明实施例提供了一种基于国产龙芯处理器的进程间通信系统,参照图1所 示,该系统具体包括:原子临界数据读写模块、支持服务组件模块、进程间通信端模块 及进程间通信接口模块。
49.其中,原子临界数据读写模块使用国产龙芯处理器提供端原子读写指令与内存屏障 指令实现对于数据的有序写入与读取。
50.支持服务组件模块作为守护进程持续运行在计算环境中,负责接受通信端控制指令, 并创建于管理用于进程间通信的共享内存,同时负责管理不同通信端之间的链路连接。
51.进程间通信端模块运行于实例中需要完成进程间通信端的具体进程中,负责向通信 端发送指令与接收支持组件发送端完成指令,在通信端存储支持组件为通信端创建的共 享内存地址。
52.进程间通信接口模块:在保护临界数据的机制下,向已创建的共享内存中写入或读 取数据。
53.本发明整体结构如图1所示,具体地,在本进程间通信方法解决方案架构中,原子 临界数据读写模块实现如下:
54.原子临界数据读写模块包括:易失读取、顺序写入、易失写入、原子获取增加faa 及比较交换cas;其中,易失读取、顺序写入及易失写入均使用mips64内存屏障指令; 原子获取增加faa和比较交换cas使用mips64 ll/sc指令。
55.在本进程间通信系统解决方案架构中,支持服务组件模块运行流程如下:
56.s1、根据用户输入命令,以特定配置创建并启动支持服务组件;
57.s2、支持服务组件创建并初始化到组件共享内存,作为与各通信端传递命令的通信 接口,各通信端通过写入与读取共享内存连接通信链路;
58.s3、在支持服务组件运行标志位仍为真时,读取到组件共享内存,获取共享内存中 通信端指令,根据指令注册或注销通信端,同时创建或删除到端共享内存用于支持通信 端之间的进程间通信,并更新通信链路,其后向到组件共享内存中写入完成指令;
59.s4、读取到组件共享内存,根据其中的各通信端心跳状态,注销已不再活跃的通信 端,根据连接状态回收共享内存;同时,在共享内存中跟新自身心跳数据,以向各通信 端保证自己的运行状态。
60.s5、根据设定的调度参数闲置,回到s3。
61.在本进程间通信系统解决方案架构中,进程间通信端模块运行流程如下:
62.1)通过context数据结构中储存的配置数据,于需要进程间通信的进程汇总,创 建新线程,作为通信端构造器;
63.2)进程调用创建发送端/接受端函数,通信端构造器向到组件共享内存写入注册发 送端/接受端命令;
64.3)进程调用创建发送端/接受端完成函数,通信端构造器不断读取到组件共享内存, 直至收到支持组件发送的对应创建完成命令,根据命令中传递的信息在本地初始化发送 端/接受端;
65.4)进程调用进程间通信接口进行进程间通信过程;
66.5)进程调用关闭发送端/接受端函数,通信端构造器向到组件共享内存中写入注销 发送端/接受端命令,删除发送端/接受端;
67.6)进程调用关闭通信端函数,关闭通信端构造器。
68.在本进程间通信系统解决方案架构中,进程间通信接口模块写入流程如下:
69.a.进程调用写入函数,发送端原子读取当前滑动窗口限制与当前发送队列队尾位置, 队尾位置大于滑动窗口限制时,返回写入失败;
70.b.在当前写入队尾位置到共享内存尾部容量小于所需写入大小时,调用填充过程, 首先将数据大小设为负值,以标志写入未完成;将写入数据头中数据类型设置为填充数 据,填充完成后将数据头中数据大小设为填充数据大小,返回写入失败;
71.c.原子获取增加写入队列队尾位置,写入数据头,其中数据类型设置为传输数据, 数据大小设置为负值,使用memcpy写入数据,写入完成后将数据头中数据大小设为写 入数据大小,标志写入完成,返回写入完成。
72.在本进程间通信系统解决方案架构中,进程间通信接口模块读取流程如下:
73.a.原子读取当前读取位置,根据当前读取位置获得对应数据块,若数据头中的数据 大小小于等于0,则停止读取;
74.b.若当前数据头中数据类型为填充数据,将读取位置指向下一个数据块,否则,从 当前数据块中使用memcpy读出数据,并原子更新读取位置;
75.c.更新读取位置控制数值,以更新滑动窗口。
76.接下来,对本发明进行更为具体的说明。
77.表1为smaipc进行多进程间管道进程通信的通信时延。
78.表1
79.传输进程数2发送进程+2接受进程2发送进程+2接受进程传输时延/us8.059.03
80.表2为smaipc进行多进程间消息队列进程通信的通信时延。
81.表2
82.传输进程数2发送进程+2接受进程2发送进程+2接受进程传输时延/us8.328.91
83.表3为smaipc进行多进程间互斥信号量进程通信的通信时延。
84.表3
85.传输进程数4进程6进程传输时延/us1.311.59
86.在本实施例中,运行平台的配置确定如下。在硬件上,系统硬件的型号是:
87.(1)平台:龙芯处理器平台4核主机;
88.(2)cpu:龙芯loongson 3a3000处理器4核;
89.(3)内存ram:8gb ddr3内存;
90.(4)存储:机械硬盘容量256gb;
91.而软件系统的设置为:
92.(1)主机平台:loongnix release 1.0;
93.(2)内核:linux 4.19.90;
94.在此处,我们使用在平台上使用类ipc-bench性能测试工具进行进程间通信性能测 试并记录数据。通过记录测试不同进程间通信接口的通信时延,分析进程间通信接口性 能表现。
95.从表1中可以看出使用smaipc管道通信接口传输16k字节数据,在同时存在2个 发送进程与两个接受进程时,进程间通信时延为8.05us,其性能符合要求。同时在同时 进行通信的数量增加时,所体现出的进程间通信时延为9.03us,并未显著增加。
96.从表2中可以看出使用smaipc消息队列通信接口传输16k字节数据,在同时存在 2个发送进程与两个接受进程时,进程间通信时延为8.32us,其性能符合要求。同时在 同时进行通信的数量增加时,所体现出的进程间通信时延为8.91us,并未显著增加。
97.从表3中可以看出使用smaipc互斥信号量接口进行进程间通信,在同时存在4个 进程使用同一信号量进行进程间通信时,进程间通信时延为1.31us,其性能符合要求。 同时在同时进行通信的数量增加时,所体现出的进程间通信时延为1.59us,并未显著增 加。
98.本发明实施例提供了一种基于国产龙芯处理器的进程间通信系统及操作平台, 主要涉及以下发明点:
99.1.基于国产龙芯处理器指令集架构与相应的宏内核操作系统为基础构建原子 读写方法,并使用该方法设计实现进程间通信接口,实现原子临界数据读写保护机 制,避免了数据读写时的锁定过程。
100.2.使用支持服务组件作为支持进程管理进程间通信发送端与接受端的注册、注 销与链路连接,实现对于各通信端的集中管理,与对于共享内存的统一创建与删除, 避免了运行过程中出现大量垃圾。
101.3.通过使用通信端设计与提供通信端通信接口,允许通过共享内存实现易于编 码的进程间通信过程。同时,通信端接口设计为非阻塞的通信机制,避免了写入读 取过程中可能的由阻塞引起的非必要的挂起、等待以及切换等额外开销。
102.通过这三个发明点的共同作用,实现了基于国产龙芯处理器以及相应宏内核操 作系统平台的进程间通信方法,优化系统中多进程协作时并发进程间通信性能。
103.本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及 其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提 供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制 器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装 置、模
块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、 模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、 单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
104.以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上 述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改, 这并不影响本发明的实质内容。在不冲突的情况下,本技术的实施例和实施例中的 特征可以任意相互组合。
技术特征:
1.一种基于国产龙芯处理器的进程间通信系统,其特征在于,包括:原子临界数据读写模块、支持服务组件模块、进程间通信端模块及进程间通信接口模块;其中,原子临界数据读写模块:使用处理器提供端原子读写指令与内存屏障指令实现对于数据的有序写入与读取;支持服务组件模块:作为守护进程持续运行在计算环境中,负责接受通信端控制指令,并创建于管理用于进程间通信的共享内存,同时负责管理不同通信端之间的链路连接;进程间通信端模块:运行于实例中需要完成进程间通信端的具体进程中,负责向通信端发送指令与接收支持组件发送端完成指令,在通信端存储支持组件为通信端创建的共享内存地址;进程间通信接口模块:在保护临界数据的机制下,向已创建的共享内存中写入或读取数据。2.根据权利要求1所述的基于国产龙芯处理器的进程间通信系统,其特征在于,所述原子临界数据读写模块包括:易失读取、顺序写入、易失写入、原子获取增加faa及比较交换cas;其中,易失读取、顺序写入及易失写入均使用mips64内存屏障指令;原子获取增加faa和比较交换cas使用mips64 ll/sc指令。3.根据权利要求1所述的基于国产龙芯处理器的进程间通信系统,其特征在于,所述支持服务组件模块的运行流程包括:s1、根据用户输入命令,以预设配置创建并启动支持服务组件;s2、支持服务组件创建并初始化到组件共享内存,作为与各通信端传递命令的通信接口,各通信端通过写入与读取共享内存连接通信链路;s3、在支持服务组件运行标志位仍为真时,读取到组件共享内存,获取共享内存中通信端指令,根据指令注册或注销通信端,同时创建或删除到端共享内存用于支持通信端之间的进程间通信,并更新通信链路,其后向到组件共享内存中写入完成指令;s4、读取到组件共享内存,根据其中的各通信端心跳状态,注销已不再活跃的通信端,根据连接状态回收共享内存;同时,在共享内存中跟新自身心跳数据,以向各通信端保证自己的运行状态;s5、根据设定的调度参数闲置,回到s3。4.根据权利要求1所述的基于国产龙芯处理器的进程间通信系统,其特征在于,所述进程间通信端模块运行流程包括:1)通过context数据结构中储存的配置数据,于需要进程间通信的进程汇总,创建新线程,作为通信端构造器;2)进程调用创建发送端/接受端函数,通信端构造器向到组件共享内存写入注册发送端/接受端命令;3)进程调用创建发送端/接受端完成函数,通信端构造器不断读取到组件共享内存,直至收到支持组件发送的对应创建完成命令,根据命令中传递的信息在本地初始化发送端/接受端;4)进程调用进程间通信接口进行进程间通信过程;5)进程调用关闭发送端/接受端函数,通信端构造器向到组件共享内存中写入注销发
送端/接受端命令,删除发送端/接受端;6)进程调用关闭通信端函数,关闭通信端构造器。5.根据权利要求1所述的基于国产龙芯处理器的进程间通信系统,其特征在于,所述进程间通信接口模块写入流程包括:a.进程调用写入函数,发送端原子读取当前滑动窗口限制与当前发送队列队尾位置,队尾位置大于滑动窗口限制时,返回写入失败;b.在当前写入队尾位置到共享内存尾部容量小于所需写入大小时,调用填充过程,首先将数据大小设为负值,以标志写入未完成;将写入数据头中数据类型设置为填充数据,填充完成后将数据头中数据大小设为填充数据大小,返回写入失败;c.原子获取增加写入队列队尾位置,写入数据头,写入完成后将数据头中数据大小设为写入数据大小,标志写入完成,返回写入完成。6.根据权利要求5所述的基于国产龙芯处理器的进程间通信系统,其特征在于,所述c步骤中原子获取增加写入队列队尾位置,写入数据头,其中数据类型设置为传输数据,数据大小设置为负值,使用memcpy写入数据。7.根据权利要求1所述的基于处理器的进程间通信系统,其特征在于,所述进程间通信接口模块读取流程包括:a.原子读取当前读取位置,根据当前读取位置获得对应数据块,若数据头中的数据大小小于等于0,则停止读取;b.若当前数据头中数据类型为填充数据,将读取位置指向下一个数据块,否则,从当前数据块中使用memcpy读出数据,并原子更新读取位置;c.更新读取位置控制数值,以更新滑动窗口。8.一种操作平台,其特征在于,所述操作平台包括权利要求1至7中任意一项所述的系统。
技术总结
本发明提供一种基于国产龙芯处理器的进程间通信系统及操作平台,包括:原子临界数据读写模块:使用处理器提供端原子读写指令与内存屏障指令实现对于数据的有序写入与读取;支持服务组件模块:负责接受通信端控制指令,创建于管理用于进程间通信的共享内存,负责管理不同通信端之间的链路连接;进程间通信端模块:运行于实例中需要完成进程间通信端的具体进程中,向通信端发送指令与接收支持组件发送端完成指令,在通信端存储支持组件为通信端创建的共享内存地址;进程间通信接口模块:向已创建的共享内存中写入或读取数据。本发明能够实现基于国产龙芯处理器以及相应宏内核操作系统平台的进程间通信方法,优化系统中多进程协作时并发进程间通信性能。协作时并发进程间通信性能。协作时并发进程间通信性能。
技术研发人员:吕书玉 姚建国 余学俊 吴晨鹏
受保护的技术使用者:中国船舶重工集团公司第七0九研究所
技术研发日:2021.12.03
技术公布日:2022/3/8