一种Linux系统下的PISA管理器实现方式技术方案

技术编号:33088335 阅读:42 留言:0更新日期:2022-04-15 10:56
本发明专利技术公开了一种Linux系统下的PISA管理器实现方式,应用于基于信息技术应用创新平台的开创性的基础设施体系架构,所述PISA管理器用于管理API层跨进程调用SPI层,包括服务句柄管理、服务请求ID管理、内存管理、同步调用实现和异步调用实现管理;每个API层调用SPI层,均生成系统唯一的服务句柄;API每次调用SPI层,均生成系统唯一的服务请求ID;通过文件映射共享内存和跨进程锁,保存PISA管理器生成的服务句柄和服务请求ID、API层的调用进程数和调用进程句柄。本发明专利技术可以支持多进程访问金融自助设备的设备服务。设备的设备服务。设备的设备服务。

【技术实现步骤摘要】
一种Linux系统下的PISA管理器实现方式


[0001]本专利技术属于金融自助设备
,具体涉及一种Linux系统下的PISA管理器实现方式。

技术介绍

[0002]目前,绝大部分金融终端设备,如自助类设备等,均遵循基于Windows操作系统的CEN/XFS(The European Committee for Standardization/Extensions for Financial Services)规范,CEN/XFS规范为欧洲标准化委员会制定的金融服务扩展规范,与Windows系统密切相关,具有较强的操作系统绑定特性,无法直接迁移至其他系统。
[0003]随着Linux系统逐渐应用于越来越多的领域,现已出现了以Linux系统为基础的XFS实现方式,实现大多的都采用直接调用的方式,但这种方式导致设备不能支持多进程访问,而且设备服务跟应用有强的耦合性。因此有必要开发一种Linux系统下的PISA管理器实现方式,用于解决Linux系统下开发设备服务所存在的诸多困难。

技术实现思路

[0004]本专利技术提供一种Linux系统下的PISA管理器实现方式,可以支持多进程访问金融自助设备的设备服务。
[0005]为实现上述技术目的,本专利技术采用如下技术方案:
[0006]一种Linux系统下的PISA管理器实现方式,所述PISA管理器用于管理API层跨进程调用SPI层,包括服务句柄管理、服务请求ID管理、内存管理、同步调用实现和异步调用实现管理;每个API层调用SPI层,均生成系统唯一的服务句柄;API每次调用SPI层,均生成系统唯一的服务请求ID;通过文件映射共享内存和跨进程锁,保存PISA管理器生成的服务句柄和服务请求ID、API层的调用进程数和调用进程句柄。
[0007]进一步地,生成系统唯一的服务句柄和系统唯一的服务请求ID的实现方式为:
[0008]S01:当API层调用SPI层时,API层初始化PISA管理器,PISA管理器映射到共享内存文件中;如果共享内存的文件不存在,执行步骤S02,如果共享内存的文件存在,执行步骤S03;
[0009]S02:生成共享内存文件,文件中包括共享内存跨进程锁、服务句柄、服务请求ID、调用进程数以及调用进程列表,重置调用管理器的进程数为零,并跳转执行步骤S05;
[0010]S03:读取共享内存文件中的共享内存跨进程锁、服务句柄、服务请求ID、调用进程数以及调用进程列表,执行步骤S04;
[0011]S04:轮询共享内存文件中的调用进程列表,判断列表中的进程编号是否有效,如果进程编号无效,则调用进程数减1;执行步骤S05;
[0012]S05:判断调用进程数是否为零,如果为零,则重置服务句柄以及服务请求ID;执行步骤S06;
[0013]S06:共享内存的文件中保存的调用进程数加1,并在调用进程列表中增加节点。
[0014]进一步地,PISA管理器对服务句柄和服务请求ID的管理方法为:
[0015]S11:当API层调用SPI层时,PISA管理器锁定共享内存跨进程锁;
[0016]S12:若API层调用连接建立指令,则执行步骤S13,否则执行步骤S14;
[0017]S13:共享内存文件中的服务句柄数增加1;
[0018]S14:共享内存文件中的服务请求ID增加1;
[0019]S15:释放共享内存跨进程锁。
[0020]进一步地,所述内存管理通过共享内存的方式,即API层与SPI层文件共享同时映射到同一个内存地址,完成跨进程的API层与SPI层通讯;
[0021]其中,跨进程内存操作包括分配、增加、释放三种操作,内存的分配和释放需要跨进程锁互斥内存的分配和释放,并通过链表管理内存分配,采用列表的方式把增加的内存链接在链表中,释放空间直接释放链表上的所有节点;
[0022]内存管理的节点包括:跨进程的锁资源、内存列表的数量、共享内存链表数组、共享内存的地址指针首地址,其中的共享内存链表数组包括:暂用该地址的进程编号、共享内存是否使用、指向共享内存的地址指针、共享内存的大小;
[0023]链表节点包括:本节点内存的长度、内存的初始化方式、指向下一个节点指针和共享内存数组。
[0024]进一步地,进程加载共享内存进行如下操作,完成共享内存的初始化:
[0025]S21:读取指定地址的共享内存的配置文件,获取共享内存的映射地址、共享内存的共享大小、共享内存文件位置;
[0026]S22:判断该共享内存文件是否存在,若不存在则执行步骤S23,若存在则执行步骤S24;
[0027]S23:创建共享文件,并设置文件大小为共享管理的节点加上共享内存块的大小,初始化跨进程锁,执行步骤S25;
[0028]S24:打开共享文件,设置共享内存的大小;
[0029]S25:锁定管理的节点中的跨进程锁;
[0030]S26:若管理的节点的共享内存的指针地址不等于共享内存的地址空间,则执行步骤S27,否则执行步骤S28;
[0031]S27:初始化管理的节点,设置管理的节点中的链表数为1,指针地址指向共享内存地址,并初始化共享内存数组的第一个元素;
[0032]S28:删除管理节点内存数组中无效进程暂用的元素,如果该节点状态为已暂用,并且进程编号为无效进程,则执行删除节点过程;
[0033]S29:释放管理的节点中的跨进程锁。
[0034]进一步地,进程分配共享内存和增加共享内存的执行步骤包括:
[0035]S31:若过程为增加共享内存,则执行步骤S32;若过程为分配共享内存,则执行步骤S33;
[0036]S32:通过父节点地址找到链表中节点指针地址,通过链表找到尾节点;
[0037]S33:申请共享内存地址块为申请内存加上链表节点的空间大小;
[0038]S34:锁定管理的节点中的跨进程锁;
[0039]S35:内存管理节点通过列表数,从共享内存链表数组中找到一块满足申请空间大
小节点;如果链表数大于申请空间的大小,则执行步骤S36,否则执行步骤S37。
[0040]S36:拆分两个节点,内存管理节点链表数加1,原始位置记录申请的空间链表,记录分配空间的进程编号、空间大小、空间首地址,设置已使用标识;共享内存链表数组链表数节点位置增加一个新节点,设置空间未使用和空间首地址,返回空间地址;执行步骤S38;
[0041]S37:设置进程编号以及已使用标识,返回空间地址;
[0042]S38:释放管理的节点中的跨进程锁;
[0043]S39:空间地址初始化;设置空间大小和初始化标志;初始化内存数组;如果是增加共享内存,尾节点链表指向该节点,返回内存数组地址的首地址为分配空间的地址和结果。
[0044]进一步地,释放共享内存的执行步骤包括:
[0045]S41:通过释放内存地址找到链本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种Linux系统下的PISA管理器实现方式,其特征在于,所述PISA管理器用于管理API层跨进程调用SPI层,包括服务句柄管理、服务请求ID管理、内存管理、同步调用实现和异步调用实现管理;每个API层调用SPI层,均生成系统唯一的服务句柄;API每次调用SPI层,均生成系统唯一的服务请求ID;通过文件映射共享内存和跨进程锁,保存PISA管理器生成的服务句柄和服务请求ID、API层的调用进程数和调用进程句柄。2.根据权利要求1所述的实现方式,其特征在于,生成系统唯一的服务句柄和系统唯一的服务请求ID的实现方式为:S01:当API层调用SPI层时,API层初始化PISA管理器,PISA管理器映射到共享内存文件中;如果共享内存的文件不存在,执行步骤S02,如果共享内存的文件存在,执行步骤S03;S02:生成共享内存文件,文件中包括共享内存跨进程锁、服务句柄、服务请求ID、调用进程数以及调用进程列表,重置调用管理器的进程数为零,并跳转执行步骤S05;S03:读取共享内存文件中的共享内存跨进程锁、服务句柄、服务请求ID、调用进程数以及调用进程列表,执行步骤S04;S04:轮询共享内存文件中的调用进程列表,判断列表中的进程编号是否有效,如果进程编号无效,则调用进程数减1;执行步骤S05;S05:判断调用进程数是否为零,如果为零,则重置服务句柄以及服务请求ID;执行步骤S06;S06:共享内存的文件中保存的调用进程数加1,并在调用进程列表中增加节点。3.根据权利要求1所述的实现方式,其特征在于,PISA管理器对服务句柄和服务请求ID的管理方法为:S11:当API层调用SPI层时,PISA管理器锁定共享内存跨进程锁;S12:若API层调用连接建立指令,则执行步骤S13,否则执行步骤S14;S13:共享内存文件中的服务句柄数增加1;S14:共享内存文件中的服务请求ID增加1;S15:释放共享内存跨进程锁。4.根据权利要求1所述的实现方式,其特征在于,所述内存管理通过共享内存的方式,即API层与SPI层文件共享同时映射到同一个内存地址,完成跨进程的API层与SPI层通讯;其中,跨进程内存操作包括分配、增加、释放三种操作,内存的分配和释放需要跨进程锁互斥内存的分配和释放,并通过链表管理内存分配,采用列表的方式把增加的内存链接在链表中,释放空间直接释放链表上的所有节点;内存管理的节点包括:跨进程的锁资源、内存列表的数量、共享内存链表数组、共享内存的地址指针首地址,其中的共享内存链表数组包括:暂用该地址的进程编号、共享内存是否使用、指向共享内存的地址指针、共享内存的大小;链表节点包括:本节点内存的长度、内存的初始化方式、指向下一个节点指针和共享内存数组。5.根据权利要求4所述的实现方式,其特征在于,进程加载共享内存进行如下操作,完成共享内存的初始化:S21:读取指定地址的共享内存的配置文件,获取共享内存的映射地址、共享内存的共享大小、共享内存文件位置;
S22:判断该共享内存文件是否存在,若不存在则执行步骤S23,若存在则执行步骤S24;S23:创建共享文件,并设置文件大小为共享管理的节点加上共享内存块的大小,初始化跨进程锁,执行步骤S25;S24:打开共享文件,...

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

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

1