一种PISA管理器跨进程内存映射的实现方法技术

技术编号:33088346 阅读:10 留言:0更新日期:2022-04-15 10:56
本发明专利技术公开了一种PISA管理器跨进程内存映射的实现方法,其中方法包括:步骤1,消息发送进程把本地的内存分配的链表序列化,得到内存链式列表并发送给PISA管理器;步骤2,消息接收进程调用PISA管理器接收消息,PISA管理器对内存链表反序列化,生成一个内存地址并发送给消息接收进程;步骤3,消息接收进程直接访问PISA管理器反序列化生成的内存地址,来处理消息发送进程所发送的结构体。本发明专利技术在消息发送进程与消息接收进程之间不需要通过共享内存地址,即可实现跨进程内存空间的映射。即可实现跨进程内存空间的映射。即可实现跨进程内存空间的映射。

【技术实现步骤摘要】
一种PISA管理器跨进程内存映射的实现方法


[0001]本专利技术涉及金融自助设备
,特别是在PISA协议在金融自助设备
跨进程内存映射的实现方法

技术介绍

[0002]在PISA协议(智能机具标准架构协议Protocol for Intelligence terminal Standards Architecture(PISA),一种智能终端的标准体系架构)中,要求其管理器的内存管理分配需要应用层跟设备服务层映射到同一物理地址,设备服务通过内存管理器,把共享内存映射到同一个地址。在共享内存地址上分配和追加内存的方式,应用层和设备服务层通过共享内存的地址共享数据,并通过消息通讯的方式把内存管理器分配的地址指针发送给应用层,应用层直接访问这个指针地址就可以获取到设备服务层发送过来的结构结构体。但是这种内存分配的方式在进程使用了地址空间随机化(Address Space Randomization)技术,就会出现进程映射到指定地址失败的情况,最终导致程序内存分配时不能映射到指定地址的情况,最后内存分配失效的情况。

技术实现思路

[0003]本专利技术提供一种PISA管理器跨进程内存映射的实现方法,在消息发送进程与消息接收进程之间不需要通过共享内存地址,即可实现跨进程内存空间的映射。
[0004]为实现上述技术目的,本专利技术采用如下技术方案:
[0005]一种PISA管理器跨进程内存映射的实现方法,包括:
[0006]步骤1,消息发送进程把本地的内存分配的链表序列化,得到内存链式列表并发送给PISA管理器;
[0007]步骤2,消息接收进程调用PISA管理器接收消息,PISA管理器对内存链表反序列化,生成一个内存地址并发送给消息接收进程;
[0008]步骤3,消息接收进程直接访问PISA管理器反序列化生成的内存地址,来处理消息发送进程所发送的结构体。
[0009]在更优的技术方案中,消息发送进程的本地内存分配方法为:消息发送进程通过PISA管理器进行首次内存分配和若干次追加内存分配;其中,每次分配的内存均包括链表头和给消息发送进程使用的内存块,利用所有分配内存的链表头构成消息发送进程的内存链表。
[0010]在更优的技术方案中,消息发送进程通过PISA管理器进行首次内存分配的方法为:消息发送进程通过PISA管理器调用内存分配接口分配一块内存,这块内存生成一个链表头和给消息发送进程使用的内存块,链表头中包括:指向这块内存地址的指针地址、本内存地址的首地址、本内存块的大小、指向下个链表的指针地址;其中所述指向这块内存的指针地址,对应PISA管理器内存分配的首地址。
[0011]在更优的技术方案中,消息发送进程每次通过PISA管理器追加内存分配的方法
为:消息发送进程调用PISA管理器的内存追加接口分配一块内存,这块内存生成一个链表头和消息发送进程追加的内存块,链表头中包括:指向内存地址的指针地址、指向这块内存地址的指针地址、本内存地址的首地址、本内存块的大小、指向下个链表的指针地址;其中,所述指向这块内存的指针地址,对应PISA管理器内存分配的首地址;通过追加地址找到链表的表头,并把最后追加的内存地址添加到链表的尾部。
[0012]在更优的技术方案中,步骤1具体为:PISA管理器接收消息发送进程的发送事件消息,根据消息发送进程分配的内存地址找到对应的内存链表,并对内存链表进行序列化形成多个内存块的数据块;PISA管理器根据事件接收者把事件类型和多个内存块发送给消息接收进程。
[0013]在更优的技术方案中,步骤3包括:
[0014]步骤3.1,消息接收进程按照内存块的个数,依次调用PISA管理器进行首次内存分配和追加内存分配,并对每次分配的内存进行还原处理;
[0015]步骤3.2,消息接收进程接收到消息回调或者直接获取到新的事件,获取消息事件类型以及指向反序列化的内存地址;
[0016]步骤3.3,消息接收进程直接访问内存地址中的数据,并调用释放PISA管理器的释放接口以释放内存地址。
[0017]在更优的技术方案中,步骤3.1的具体过程为:
[0018]步骤3.1.1,按照第一个内存块的数据块调用PISA管理器的内存还原接口,首先还原对应内存块的链表表头数据;其中,链表头中包括:指向这块内存地址的指针地址、本内存地址的首地址、本内存块的大小、指向下个链表的指针地址;且所述指向这块内存的指针地址,对应PISA管理器内存分配的首地址;然后拷贝内存块的数据部分拷贝到还原内存块的数据;记录原始内存块首地址跟新内存地址的首地址的对应关系,保存到列表中;如果内存块还有未还原的则进行步骤3.1.2,否则跳出步骤3.1并执行步骤3.2;
[0019]步骤3.1.2,调用PISA管理器的内存追加还原接口,首先按照要还原的内存块的大小,在接收进程中申请对应大小的内存空间;然后还原对应内存块的链表表头数据;其中链表头中指向内存地址的指针地址对应PISA管理器内存分配首地址、指向这块内存地址的指针地址、本内存地址的首地址、本内存块的大小、指向下个链表的指针地址;并通过追加地址找到链表的表头,把最后追加的内存地址添加到链表的尾部;将原始内存块中的数据拷贝到根据原始内存块首地址跟新内存地址的首地址对应关系中查找到这个原始内存块的首地址对应的新内存地址;根据原分配的首地址跟执行原始内存地址的指针地址的差值加上新的内存地址的的地址,并赋值这个地址的指向新的内存地址;把新的内存分配的首地址跟原始内存地址的对应关系追加到对应关系列表中;如果内存块还有未还原的进行步骤3.1.2,否则跳出步骤3.1并执行步骤3.2。
[0020]在更优的技术方案中,所述消息发送进程为设备服务进程,所述消息进程为应用处理进程。
[0021]有益效果
[0022]本专利技术基于PISA协议框架,提供了跨进程内存映射方法,具有的技术效果为:对于在进程使用了地址空间随机化(Address Space Randomization)的技术上,本专利技术不会因为内存不能映射到相同的地址而导致内存分配失败的问题,对于不同进程通过不同的物理
机器调用PISA管理器也可以完成内存映射和访问。
附图说明
[0023]图1是本申请实施例中应用服务进程、消息服务进程、设备服务进程三者之间的关系图;
[0024]图2是本申请实施例中应用服务进程的首次内存分配的过程图;
[0025]图3是本申请实施例中应用服务进程的追加内存分配的过程图;
[0026]图4是本申请实施例对链表反序列化流程得到内存块一的步骤图;
[0027]图5是本申请实施例对链表反序列化流程得到内存块二的步骤图一;
[0028]图6是本申请实施例对链表反序列化流程得到内存块二的步骤图二;
[0029]图7是本申请实施例对链表反序列化流程得到内存块二的步骤图三。
具体实施方式
[0030]下面对本专利技术的实施例作详细说明,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种PISA管理器跨进程内存映射的实现方法,其特征在于,包括:步骤1,消息发送进程把本地的内存分配的链表序列化,得到内存链式列表并发送给PISA管理器;步骤2,消息接收进程调用PISA管理器接收消息,PISA管理器对内存链表反序列化,生成一个内存地址并发送给消息接收进程;步骤3,消息接收进程直接访问PISA管理器反序列化生成的内存地址,来处理消息发送进程所发送的结构体。2.根据权利要求1所述的方法,其特征在于,消息发送进程的本地内存分配方法为:消息发送进程通过PISA管理器进行首次内存分配和若干次追加内存分配;其中,每次分配的内存均包括链表头和给消息发送进程使用的内存块,利用所有分配内存的链表头构成消息发送进程的内存链表。3.根据权利要求2所述的方法,其特征在于,消息发送进程通过PISA管理器进行首次内存分配的方法为:消息发送进程通过PISA管理器调用内存分配接口分配一块内存,这块内存生成一个链表头和给消息发送进程使用的内存块,链表头中包括:指向这块内存地址的指针地址、本内存地址的首地址、本内存块的大小、指向下个链表的指针地址;其中所述指向这块内存的指针地址,对应PISA管理器内存分配的首地址。4.根据权利要求2所述的方法,其特征在于,消息发送进程每次通过PISA管理器追加内存分配的方法为:消息发送进程调用PISA管理器的内存追加接口分配一块内存,这块内存生成一个链表头和消息发送进程追加的内存块,链表头中包括:指向内存地址的指针地址、指向这块内存地址的指针地址、本内存地址的首地址、本内存块的大小、指向下个链表的指针地址;其中,所述指向这块内存的指针地址,对应PISA管理器内存分配的首地址;通过追加地址找到链表的表头,并把最后追加的内存地址添加到链表的尾部。5.根据权利要求2所述的方法,其特征在于,步骤1具体为:PISA管理器接收消息发送进程的发送事件消息,根据消息发送进程分配的内存地址找到对应的内存链表,并对内存链表进行序列化形成多个内存块的数据块;PISA管理器根据事件接收者把事件类型和多个内存块发送给消息接收进程。6.根据权利要求1所述的方法,其...

【专利技术属性】
技术研发人员:唐超陶圣清赵建青刘艳兰
申请(专利权)人:中电长城长沙信息技术有限公司建信金融科技有限责任公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1