CN114327938A - 一种Linux系统下的PISA管理器实现方式 - Google Patents

一种Linux系统下的PISA管理器实现方式 Download PDF

Info

Publication number
CN114327938A
CN114327938A CN202111548601.2A CN202111548601A CN114327938A CN 114327938 A CN114327938 A CN 114327938A CN 202111548601 A CN202111548601 A CN 202111548601A CN 114327938 A CN114327938 A CN 114327938A
Authority
CN
China
Prior art keywords
shared memory
node
memory
address
file
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.)
Pending
Application number
CN202111548601.2A
Other languages
English (en)
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.)
China Electronics Great Wall Changsha Information Technology Co ltd
CCB Finetech Co Ltd
Great Wall Information Co Ltd
Original Assignee
China Electronics Great Wall Changsha Information Technology Co ltd
CCB Finetech Co Ltd
Great Wall Information Co Ltd
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 China Electronics Great Wall Changsha Information Technology Co ltd, CCB Finetech Co Ltd, Great Wall Information Co Ltd filed Critical China Electronics Great Wall Changsha Information Technology Co ltd
Publication of CN114327938A publication Critical patent/CN114327938A/zh
Pending legal-status Critical Current

Links

Images

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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • 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
    • G06F9/526Mutual exclusion algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

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

Description

一种Linux系统下的PISA管理器实现方式
技术领域
本发明属于金融自助设备技术领域,具体涉及一种Linux系统下的PISA管理器实现方式。
背景技术
目前,绝大部分金融终端设备,如自助类设备等,均遵循基于Windows操作系统的CEN/XFS(The European Committee for Standardization/Extensions for FinancialServices)规范,CEN/XFS规范为欧洲标准化委员会制定的金融服务扩展规范,与Windows系统密切相关,具有较强的操作系统绑定特性,无法直接迁移至其他系统。
随着Linux系统逐渐应用于越来越多的领域,现已出现了以Linux系统为基础的XFS实现方式,实现大多的都采用直接调用的方式,但这种方式导致设备不能支持多进程访问,而且设备服务跟应用有强的耦合性。因此有必要开发一种Linux系统下的PISA管理器实现方式,用于解决Linux系统下开发设备服务所存在的诸多困难。
发明内容
本发明提供一种Linux系统下的PISA管理器实现方式,可以支持多进程访问金融自助设备的设备服务。
为实现上述技术目的,本发明采用如下技术方案:
一种Linux系统下的PISA管理器实现方式,所述PISA管理器用于管理API层跨进程调用SPI层,包括服务句柄管理、服务请求ID管理、内存管理、同步调用实现和异步调用实现管理;每个API层调用SPI层,均生成系统唯一的服务句柄;API每次调用SPI层,均生成系统唯一的服务请求ID;通过文件映射共享内存和跨进程锁,保存PISA管理器生成的服务句柄和服务请求ID、API层的调用进程数和调用进程句柄。
进一步地,生成系统唯一的服务句柄和系统唯一的服务请求ID的实现方式为:
S01:当API层调用SPI层时,API层初始化PISA管理器,PISA管理器映射到共享内存文件中;如果共享内存的文件不存在,执行步骤S02,如果共享内存的文件存在,执行步骤S03;
S02:生成共享内存文件,文件中包括共享内存跨进程锁、服务句柄、服务请求ID、调用进程数以及调用进程列表,重置调用管理器的进程数为零,并跳转执行步骤S05;
S03:读取共享内存文件中的共享内存跨进程锁、服务句柄、服务请求ID、调用进程数以及调用进程列表,执行步骤S04;
S04:轮询共享内存文件中的调用进程列表,判断列表中的进程编号是否有效,如果进程编号无效,则调用进程数减1;执行步骤S05;
S05:判断调用进程数是否为零,如果为零,则重置服务句柄以及服务请求ID;执行步骤S06;
S06:共享内存的文件中保存的调用进程数加1,并在调用进程列表中增加节点。
进一步地,PISA管理器对服务句柄和服务请求ID的管理方法为:
S11:当API层调用SPI层时,PISA管理器锁定共享内存跨进程锁;
S12:若API层调用连接建立指令,则执行步骤S13,否则执行步骤S14;
S13:共享内存文件中的服务句柄数增加1;
S14:共享内存文件中的服务请求ID增加1;
S15:释放共享内存跨进程锁。
进一步地,所述内存管理通过共享内存的方式,即API层与SPI层文件共享同时映射到同一个内存地址,完成跨进程的API层与SPI层通讯;
其中,跨进程内存操作包括分配、增加、释放三种操作,内存的分配和释放需要跨进程锁互斥内存的分配和释放,并通过链表管理内存分配,采用列表的方式把增加的内存链接在链表中,释放空间直接释放链表上的所有节点;
内存管理的节点包括:跨进程的锁资源、内存列表的数量、共享内存链表数组、共享内存的地址指针首地址,其中的共享内存链表数组包括:暂用该地址的进程编号、共享内存是否使用、指向共享内存的地址指针、共享内存的大小;
链表节点包括:本节点内存的长度、内存的初始化方式、指向下一个节点指针和共享内存数组。
进一步地,进程加载共享内存进行如下操作,完成共享内存的初始化:
S21:读取指定地址的共享内存的配置文件,获取共享内存的映射地址、共享内存的共享大小、共享内存文件位置;
S22:判断该共享内存文件是否存在,若不存在则执行步骤S23,若存在则执行步骤S24;
S23:创建共享文件,并设置文件大小为共享管理的节点加上共享内存块的大小,初始化跨进程锁,执行步骤S25;
S24:打开共享文件,设置共享内存的大小;
S25:锁定管理的节点中的跨进程锁;
S26:若管理的节点的共享内存的指针地址不等于共享内存的地址空间,则执行步骤S27,否则执行步骤S28;
S27:初始化管理的节点,设置管理的节点中的链表数为1,指针地址指向共享内存地址,并初始化共享内存数组的第一个元素;
S28:删除管理节点内存数组中无效进程暂用的元素,如果该节点状态为已暂用,并且进程编号为无效进程,则执行删除节点过程;
S29:释放管理的节点中的跨进程锁。
进一步地,进程分配共享内存和增加共享内存的执行步骤包括:
S31:若过程为增加共享内存,则执行步骤S32;若过程为分配共享内存,则执行步骤S33;
S32:通过父节点地址找到链表中节点指针地址,通过链表找到尾节点;
S33:申请共享内存地址块为申请内存加上链表节点的空间大小;
S34:锁定管理的节点中的跨进程锁;
S35:内存管理节点通过列表数,从共享内存链表数组中找到一块满足申请空间大小节点;如果链表数大于申请空间的大小,则执行步骤S36,否则执行步骤S37。
S36:拆分两个节点,内存管理节点链表数加1,原始位置记录申请的空间链表,记录分配空间的进程编号、空间大小、空间首地址,设置已使用标识;共享内存链表数组链表数节点位置增加一个新节点,设置空间未使用和空间首地址,返回空间地址;执行步骤S38;
S37:设置进程编号以及已使用标识,返回空间地址;
S38:释放管理的节点中的跨进程锁;
S39:空间地址初始化;设置空间大小和初始化标志;初始化内存数组;如果是增加共享内存,尾节点链表指向该节点,返回内存数组地址的首地址为分配空间的地址和结果。
进一步地,释放共享内存的执行步骤包括:
S41:通过释放内存地址找到链表中节点指针地址;
S42:判断链表的内存分配方式是否合法,如果不合规则返回失败,否则继续;
S43:锁定管理的节点中的跨进程锁;
S44:内存管理节点通过列表数找到链表地址空间;如果未找到,跳转执行步骤S49;
S45:设置数组节点空间未使用,并把数组的最后一个节点移动到该节点位置,内存管理节点链表数减1;
S46:轮询整个数组节点,判断是否可以跟一个未使用的块合并,如果能合并执行步骤S47,否则执行S48;
S47:把首地址联合,共享内存大小合并;执行S49;
S48:数组节点最后一个节点增加这个未使用的块;执行S49;
S49:释放管理的节点中的跨进程锁。
进一步地,异步调用实现方式为:API层通过服务句柄、逻辑名生成一个消息队列名,API层把这个消息队列名直接发送给SPI层;SPI完成指令调度后,会根据消息回调消息队列名,发送完成消息;API层获取到完成消息后,直接处理消息,把消息结果给上层应用。
同步调用实现方式为:API层通过PISA管理器调用同步动作,PISA管理器内部生成一个消息队列名,PISA管理器把消息队列名发送给SPI层,并等待消息队列返回的消息;SPI层执行指定调度后,把消息回调给消息队列名,发送完成消息;PISA管理器接收到完成消息后,直接发消息结果返回给API层。
有益效果
本发明具有以下优点:
1、本发明提供了PISA管理器的内部实现,方便后续开发者完成linux下管理器的开发。
2、本发明提供的跨进程共享内存实现方式,为后续在跨进程共享内存实现提供一种实现思路。
3、本发明提供的跨进程消息通讯的实现方式,为其他跨进程通讯提供了一种思路。
附图说明
图1是本申请实施例中所述的基础设施体系架构PISA的结构模型图;
图2是本申请实施例进程加载共享内存的流程图。
具体实施方式
下面对本发明的实施例作详细说明,本实施例以本发明的技术方案为依据开展,给出了详细的实施方式和具体的操作过程,对本发明的技术方案作进一步解释说明。
本实施例提供一种Linux系统下的PISA管理器实现方式,应用于智能机具标准架构协议(PISA,Protocol for Intelligence terminal Standards Architecture),一种智能终端(包括金融终端)的标准体系架构,主要包括PISA管理器、配置信息和设备服务程序,结构模型见图1。
其中的PISA管理器用于管理API层跨进程调用SPI层,因此PISA管理器实现方式主要包括服务句柄管理、服务请求ID管理、内存管理、同步调用实现和异步调用实现管理。
PISA管理器需要管理API层调用的SPI层请求服务句柄和服务请求编号(即服务请求ID),服务句柄和服务请求ID均需要本系统是唯一的,因此:每个API层调用SPI层,均生成系统唯一的服务句柄;API每次调用SPI层,均生成系统唯一的服务请求ID;通过文件映射共享内存和跨进程锁,保存PISA管理器生成的服务句柄和服务请求ID、API层的调用进程数和调用进程句柄。
生成系统唯一的服务句柄和系统唯一的服务请求ID的实现方式为:
S01:当API层调用SPI层时,API层初始化PISA管理器,PISA管理器映射到共享内存文件中;如果共享内存的文件不存在,执行步骤S02,如果共享内存的文件存在,执行步骤S03;
S02:生成共享内存文件,文件中包括共享内存跨进程锁、服务句柄、服务请求ID、调用进程数以及调用进程列表,重置调用管理器的进程数为零,并跳转执行步骤S05;
S03:读取共享内存文件中的共享内存跨进程锁、服务句柄、服务请求ID、调用进程数以及调用进程列表,执行步骤S04;
S04:轮询共享内存文件中的调用进程列表,判断列表中的进程编号是否有效,如果进程编号无效,则调用进程数减1;执行步骤S05;
S05:判断调用进程数是否为零,如果为零,则重置服务句柄以及服务请求ID;执行步骤S06;
S06:共享内存的文件中保存的调用进程数加1,并在调用进程列表中增加节点。
以上步骤实现服务句柄和服务请求编号在系统调用中的唯一性,同时保证没有调用者的情况下,服务句柄和编号会变重置。
PISA管理器对服务句柄和服务请求ID的管理方法为:
S11:当API层调用SPI层时,PISA管理器锁定共享内存跨进程锁;
S12:若API层调用连接建立指令,则执行步骤S13,否则执行步骤S14;
S13:共享内存文件中的服务句柄数增加1;
S14:共享内存文件中的服务请求ID增加1;
S15:释放共享内存跨进程锁。
内存管理主要要完成跨进程API层跟SPI层通讯的结构体相对复杂,需要通过共享内存的方式完成API和SPI层消息通讯。API层跟SPI通过地址映射的方式共享内存空间。一方申请共享内存,修改内存的地址,并把地址传递给另一层。另一层直接通过地址就可以访问对应的内容。本发明实现的方式是文件共享同时映射到同一个内存地址的方式。
内存地址的分配需要分配、增加、释放三种操作方式,内存分配和释放需要跨进程支持,需要跨进程锁互斥内存的分配和释放。共享内存需要支持增加操作,本发明的处理方式是通过链表管理内存分配。内存管理的节点包含如下内容:跨进程的锁资源、内存列表的数量、共享内存链表数组、共享内存的地址指针首地址。共享内存链表数组包括:暂用该地址的进程编号、共享内存是否使用、指向共享内存的地址指针、共享内存的大小。
共享内存要支持增加功能,所以需要一部分空间来管理分配空间和增加空间节点的内存,本发明采用列表的方式把增加的内存链接在链表中,释放空间直接释放链表上的所有节点即可,链表节点(list)包含如下内容:本节点内存的长度、内存的初始化方式、指向下一个节点指针和共享内存数组。
进程加载共享内存进行如下操作,完成共享内存的初始化:
S21:读取指定地址的共享内存的配置文件,获取共享内存的映射地址、共享内存的共享大小、共享内存文件位置;
S22:判断该共享内存文件是否存在,若不存在则执行步骤S23,若存在则执行步骤S24;
S23:创建共享文件,并设置文件大小为共享管理的节点加上共享内存块的大小,初始化跨进程锁,执行步骤S25;
S24:打开共享文件,设置共享内存的大小;
S25:锁定管理的节点中的跨进程锁;
S26:若管理的节点的共享内存的指针地址不等于共享内存的地址空间,则执行步骤S27,否则执行步骤S28;
S27:初始化管理的节点,设置管理的节点中的链表数为1,指针地址指向共享内存地址,并初始化共享内存数组的第一个元素;
S28:删除管理节点内存数组中无效进程暂用的元素,如果该节点状态为已暂用,并且进程编号为无效进程,则执行删除节点过程;
S29:释放管理的节点中的跨进程锁。
进程分配共享内存和增加共享内存的执行步骤包括:
S31:若过程为增加共享内存,则执行步骤S32;若过程为分配共享内存,则执行步骤S33;
S32:通过父节点地址找到链表中节点指针地址,通过链表找到尾节点;
S33:申请共享内存地址块为申请内存加上链表节点的空间大小;
S34:锁定管理的节点中的跨进程锁;
S35:内存管理节点通过列表数,从共享内存链表数组中找到一块满足申请空间大小节点;如果链表数大于申请空间的大小,则执行步骤S36,否则执行步骤S37。
S36:拆分两个节点,内存管理节点链表数加1,原始位置记录申请的空间链表,记录分配空间的进程编号、空间大小、空间首地址,设置已使用标识;共享内存链表数组链表数节点位置增加一个新节点,设置空间未使用和空间首地址,返回空间地址;执行步骤S38;
S37:设置进程编号以及已使用标识,返回空间地址;
S38:释放管理的节点中的跨进程锁;
S39:空间地址初始化;设置空间大小和初始化标志;初始化内存数组;如果是增加共享内存,尾节点链表指向该节点,返回内存数组地址的首地址为分配空间的地址和结果。
释放共享内存的执行步骤包括:
S41:通过释放内存地址找到链表中节点指针地址;
S42:判断链表的内存分配方式是否合法,如果不合规则返回失败,否则继续;
S43:锁定管理的节点中的跨进程锁;
S44:内存管理节点通过列表数找到链表地址空间;如果未找到,跳转执行步骤S49;
S45:设置数组节点空间未使用,并把数组的最后一个节点移动到该节点位置,内存管理节点链表数减1;
S46:轮询整个数组节点,判断是否可以跟一个未使用的块合并,如果能合并执行步骤S47,否则执行S48;
S47:把首地址联合,共享内存大小合并;执行S49;
S48:数组节点最后一个节点增加这个未使用的块;执行S49;
S49:释放管理的节点中的跨进程锁。
异步调用实现方式为:API层通过服务句柄、逻辑名生成一个消息队列名,API层把这个消息队列名直接发送给SPI层;SPI完成指令调度后,会根据消息回调消息队列名,发送完成消息;API层获取到完成消息后,直接处理消息,把消息结果给上层应用。
同步调用实现方式为:API层通过PISA管理器调用同步动作,PISA管理器内部生成一个消息队列名,PISA管理器把消息队列名发送给SPI层,并等待消息队列返回的消息;SPI层执行指定调度后,把消息回调给消息队列名,发送完成消息;PISA管理器接收到完成消息后,直接发消息结果返回给API层。
以上实施例为本申请的优选实施例,本领域的普通技术人员还可以在此基础上进行各种变换或改进,在不脱离本申请总的构思的前提下,这些变换或改进都应当属于本申请要求保护的范围之内。

Claims (9)

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:打开共享文件,设置共享内存的大小;
S25:锁定管理的节点中的跨进程锁;
S26:若管理的节点的共享内存的指针地址不等于共享内存的地址空间,则执行步骤S27,否则执行步骤S28;
S27:初始化管理的节点,设置管理的节点中的链表数为1,指针地址指向共享内存地址,并初始化共享内存数组的第一个元素;
S28:删除管理节点内存数组中无效进程暂用的元素,如果该节点状态为已暂用,并且进程编号为无效进程,则执行删除节点过程;
S29:释放管理的节点中的跨进程锁。
6.根据权利要求5所述的实现方式,其特征在于,进程分配共享内存和增加共享内存的执行步骤包括:
S31:若过程为增加共享内存,则执行步骤S32;若过程为分配共享内存,则执行步骤S33;
S32:通过父节点地址找到链表中节点指针地址,通过链表找到尾节点;
S33:申请共享内存地址块为申请内存加上链表节点的空间大小;
S34:锁定管理的节点中的跨进程锁;
S35:内存管理节点通过列表数,从共享内存链表数组中找到一块满足申请空间大小节点;如果链表数大于申请空间的大小,则执行步骤S36,否则执行步骤S37。
S36:拆分两个节点,内存管理节点链表数加1,原始位置记录申请的空间链表,记录分配空间的进程编号、空间大小、空间首地址,设置已使用标识;共享内存链表数组链表数节点位置增加一个新节点,设置空间未使用和空间首地址,返回空间地址;执行步骤S38;
S37:设置进程编号以及已使用标识,返回空间地址;
S38:释放管理的节点中的跨进程锁;
S39:空间地址初始化;设置空间大小和初始化标志;初始化内存数组;如果是增加共享内存,尾节点链表指向该节点,返回内存数组地址的首地址为分配空间的地址和结果。
7.根据权利要求5所述的实现方式,其特征在于,释放共享内存的执行步骤包括:
S41:通过释放内存地址找到链表中节点指针地址;
S42:判断链表的内存分配方式是否合法,如果不合规则返回失败,否则继续;
S43:锁定管理的节点中的跨进程锁;
S44:内存管理节点通过列表数找到链表地址空间;如果未找到,跳转执行步骤S49;
S45:设置数组节点空间未使用,并把数组的最后一个节点移动到该节点位置,内存管理节点链表数减1;
S46:轮询整个数组节点,判断是否可以跟一个未使用的块合并,如果能合并执行步骤S47,否则执行S48;
S47:把首地址联合,共享内存大小合并;执行S49;
S48:数组节点最后一个节点增加这个未使用的块;执行S49;
S49:释放管理的节点中的跨进程锁。
8.根据权利要求1所述的实现方式,其特征在于,异步调用实现方式为:API层通过服务句柄、逻辑名生成一个消息队列名,API层把这个消息队列名直接发送给SPI层;SPI完成指令调度后,会根据消息回调消息队列名,发送完成消息;API层获取到完成消息后,直接处理消息,把消息结果给上层应用。
9.根据权利要求1所述的实现方式,其特征在于,同步调用实现方式为:API层通过PISA管理器调用同步动作,PISA管理器内部生成一个消息队列名,PISA管理器把消息队列名发送给SPI层,并等待消息队列返回的消息;SPI层执行指定调度后,把消息回调给消息队列名,发送完成消息;PISA管理器接收到完成消息后,直接发消息结果返回给API层。
CN202111548601.2A 2020-12-18 2021-12-17 一种Linux系统下的PISA管理器实现方式 Pending CN114327938A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202011503627.0A CN112612622A (zh) 2020-12-18 2020-12-18 一种Linux系统下的PISA管理器实现方式
CN2020115036270 2020-12-18

Publications (1)

Publication Number Publication Date
CN114327938A true CN114327938A (zh) 2022-04-12

Family

ID=75241044

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202011503627.0A Withdrawn CN112612622A (zh) 2020-12-18 2020-12-18 一种Linux系统下的PISA管理器实现方式
CN202111548601.2A Pending CN114327938A (zh) 2020-12-18 2021-12-17 一种Linux系统下的PISA管理器实现方式

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202011503627.0A Withdrawn CN112612622A (zh) 2020-12-18 2020-12-18 一种Linux系统下的PISA管理器实现方式

Country Status (1)

Country Link
CN (2) CN112612622A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117201577A (zh) * 2023-11-07 2023-12-08 中电长城(长沙)信息技术有限公司 基于pisa的跨平台api和spi的通讯方法和系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117201577A (zh) * 2023-11-07 2023-12-08 中电长城(长沙)信息技术有限公司 基于pisa的跨平台api和spi的通讯方法和系统
CN117201577B (zh) * 2023-11-07 2024-02-13 中电长城(长沙)信息技术有限公司 基于pisa的跨平台api和spi的通讯方法和系统

Also Published As

Publication number Publication date
CN112612622A (zh) 2021-04-06

Similar Documents

Publication Publication Date Title
US5687373A (en) Communications system for exchanging data between computers in a network and a method of operating such a system in which communications services are defined within a common object class
WO2020228838A1 (zh) 容器化vnf的部署方法和相关设备
US7299320B2 (en) Message based inter-process for high volume data
WO2022143653A1 (zh) 基于微服务的多云接口适配方法、系统及存储介质
WO2020211652A1 (zh) 多租户场景下的租户资源管理方法和装置
CN113032166B (zh) 核间通信的方法、处理器、核间通信系统及计算机可读存储介质
JP2022550402A (ja) ネットワークリソース管理方法、システム、ネットワーク機器と可読記憶媒体
CN114327938A (zh) 一种Linux系统下的PISA管理器实现方式
CN111163140A (zh) 资源获取和分配的方法、装置和计算机可读存储介质
CN109905258B (zh) PaaS的管理方法、装置及存储介质
US20220365822A1 (en) Data Processing Method and Computer Device
US7669202B1 (en) Resource management
CN114911632A (zh) 一种进程间通信的控制方法和系统
CN111770179B (zh) 一种高性能高可用云化联网网关实现方法、介质及终端
CN112015515B (zh) 一种虚拟网络功能的实例化方法及装置
CN113312031A (zh) 一种软件通信体系结构的命名服务接口
US7472174B2 (en) Abstract mechanism for constructing commands for the command pattern
CN110784335A (zh) 一种云场景下的网元资源预留系统
CN111949286A (zh) 一种升级方法、装置、设备及计算机可读存储介质
CN114968497B (zh) 硬件层的调用方法、装置、设备及存储介质
US11442756B2 (en) Common service resource application method, related device, and system
CN114168233B (zh) 一种数据处理方法、装置、服务器及存储介质
KR100594430B1 (ko) 네트워크 환경에서의 비동기적 입출력 처리 방법
US7843935B2 (en) System and method for resource management in a terminal connected to a communication network
WO2018014356A1 (zh) 一种加载方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination