G06F9/50 G06F12/02
1.一种金融终端的内存分配方法,其特征在于,所述金融终端的内存包括占用空间和 连续空闲空间,所述占用空间和所述连续空闲空间分别包括预设节点空间,所述连续空闲 空间还包括分配空间,所述节点空间包括下一空间开始位置的地址、空间状态和上一空间 开始位置的地址,所述金融终端的内存分配方法包括以下步骤:
接收外部设备发送的内存申请指令;
根据所述内存申请指令和预设节点空间中的信息从所述内存中查能够满足所述内 存申请的需求的连续空闲空间;
若查到分配空间能够满足所述内存申请需求的连续空闲空间,则根据所述内存申请 指令分配所述连续空闲空间中对应的分配空间,并修改所述连续空闲空间的预设节点空间 中下一空间开始位置的地址和空间状态。
2.如权利要求1所述的内存分配方法,其特征在于,所述金融终端的内存中设置有快速 切入口,所述快速切入口设置在一连续空闲空间的开始位置,所述根据所述内存申请指令 和预设节点空间中的信息从所述内存中查能够满足所述内存申请的需求的连续空闲空 间的步骤包括:
根据所述内存申请指令和预设节点空间中的信息从所述快速切入口所在的连续空闲 空间开始查能够满足所述内存申请需求的连续空闲空间;
若查到分配空间能够满足所述内存申请需求的连续空闲空间,则根据所述内存申请 指令分配所述连续空闲空间中对应的分配空间的步骤包括:
将所述快速切入口调整到下一连续空闲空间中预设节点空间的开始位置。
3.如权利要求2所述的内存分配方法,其特征在于,所述根据所述内存申请指令和预设 节点空间中的信息从所述快速切入口所在的连续空闲空间开始查能够满足所述内存申 请需求的连续空闲空间的步骤包括:
判断所述快速切入口所在的连续空闲空间中的分配空间是否能够满足所述内存申请 的需求;
若所述快速切入口所在的连续空闲空间中的分配空间不能满足所述内存申请需求,则 根据节点空间包括下一空间开始位置的地址判断下一连续空闲空间是否能够满足所述内 存申请的需求,直至查到查到能够满足所述内存申请需求的连续空闲空间。
4.如权利要求2所述的内存分配方法,其特征在于,所述金融终端的内存分配方法还包 括:
判断占用空间中的数据是否已经被使用;
若所述占用空间的中数据已被使用,则释放所述占用空间。
5.如权利要求4所述的内存分配方法,其特征在于,所述若所述占用空间中的数据已被 使用,则释放所述占用空间的步骤包括:
获取数据已被使用的占用空间的指针;
对所述指针进行映射,获取所述占用空间中预设节点空间的开始位置的地址;
根据所述开始位置的地址,将所述占用空间的预设节点空间中的空间状态设置为空 闲。
6.如权利要求5所述的内存分配方法,其特征在于,将释放的占用空间定义为释放空 间,所述金融终端的内存分配方法还包括:
判断与所述释放空间相邻的下一内存空间的预设节点空间中的空间状态是否为空闲;
若与所述释放空间相邻的下一内存空间的预设节点空间中的空间状态为空闲,则将所 述释放空间中的分配空间、与所述释放空间相邻的下一内存空间的预设节点空间和与所述 释放空间相邻的下一内存空间合并,并修改所述释放空间的预设节点空间中的下一空间开 始位置的地址和空间状态和与所述释放空间相邻的下一空间中上一空间开始位置的地址;
判断与所述释放空间相邻的上一内存空间的预设节点空间中的空间状态是否为空闲;
若与所述释放空间相邻的上一内存空间的预设节点空间中的空间状态为空闲,则将所 述释放空间中的预设节点空间、分配空间,以及与所述释放空间相邻的上一内存空间的分 配空间合并,并修改与所述释放空间相邻的上一内存空间的预设节点空间中的下一空间开 始位置的地址和与所述释放空间相邻的下一空间中上一空间开始位置的地址。
7.一种金融终端的内存分配方法,其特征在于,所述金融终端的内存包括快速切入口, 所述快速切入口设置在所述金融终端的内存中一连续空闲空间的开始位置,所述金融终端 的内存分配方法包括以下步骤:
接收外部设备发送的内存申请指令;
判断所述快速切入口所在的连续空闲空间是否满足所述内存申请的需求;
若所述快速切入口所在的连续空闲空间满足所述内存申请的需求,则将所述快速切入 口所在的连续空闲空间进行分配,并在分配完成时,将所述快速切入口调整到下一连续空 闲空间的开始位置。
8.如权利要求7所述的内存分配方法,其特征在于,所述金融终端的内存还包括占用空 间,所述占用空间和连续空闲空间包括预设节点空间,所述连续空闲空间还包括分配空间, 所述节点空间包括下一空间开始位置的地址、空间状态和上一空间开始位置的地址,所述 判断所述快速切入口所在的连续空闲空间是否满足所述内存申请的需求的步骤包括:
根据所述内存申请指令判断所述快速切入口所在的连续空闲空间中的分配空间是否 满足所述内存申请的需求;
若所述快速切入口所在的连续空闲空间满足所述内存申请的需求,则将所述快速切入 口所在的连续空闲空间进行分配的步骤包括:
若所述快速切入口所在的连续空闲空间中的分配空间满足所述内存申请的需求,则根 据所述内存申请指令分配所述快速切入口所在的连续空闲空间中的分配空间,并修改所述 快速切入口所在的连续空闲空间的预设节点空间中下一空间开始位置的地址和空间状态;
将所述快速切入口调整到下一连续空闲空间的预设节点空间的开始位置。
9.如权利要求8所述的内存分配方法,其特征在于,所述根据所述内存申请指令判断所 述快速切入口所在的连续空闲空间中的分配空间是否满足所述内存申请的需求的步骤之 后还包括:
若所述快速切入口所在的连续空闲空间中的分配空间不满足所述内存申请的需求,则 通过所述快速切入口所在的连续空闲空间的预设节点空间中的下一空间开始位置的地址 查下一连续空闲空间;
若所述下一连续空闲空间中的分配空间满足所述内存申请需求,则执行步骤:根据所 述内存申请指令分配所述连续空闲空间中的分配空间,并修改所述连续空闲空间的预设节 点空间中下一空间开始位置的地址和空间状态;
若所述下一连续空闲空间中的分配空间不能满足所述内存申请需求,则继续查下一 连续空闲空间,直至查到查到能够满足所述内存申请需求的连续空闲空间。
10.如权利要求8所述的内存分配方法,其特征在于,所述金融终端的内存分配方法还 包括:
判断占用空间中的数据是否已经被使用;
若所述占用空间中的数据已被使用,则释放所述占用空间。
11.如权利要求10所述的内存分配方法,其特征在于,所述若所述占用空间的数据已被 使用,则释放所述占用空间的步骤包括:
获取占用空间的指针;
对所述指针进行映射,获取所述占用空间中预设节点空间的开始位置的地址;
根据所述开始位置的地址,将所述占用空间的预设节点空间中的空间状态设置为空 闲。
12.如权利要求10所述的内存分配方法,其特征在于,将释放的占用空间定义为释放空 间,所述金融终端的内存分配方法还包括:
判断与释放空间相邻的下一内存空间的预设节点空间中的空间状态是否为空闲;
若与所述释放空间相邻的下一内存空间的预设节点空间中的空间状态为空闲,则将所 述释放空间中的分配空间、与所述释放空间相邻的下一内存空间的预设节点空间和与所述 释放空间相邻的下一内存空间连接合并,并修改所述释放空间的预设节点空间中的下一空 间开始位置的地址和与所述释放空间相邻的下一空间中上一空间开始位置的地址;
判断与所述释放空间相邻的上一内存空间的预设节点空间中的空间状态是否为空闲;
若与所述释放空间相邻的上一内存空间的预设节点空间中的空间状态为空闲,则将所 述释放空间中的预设节点空间、分配空间,以及与所述空闲空间相邻的上一内存空间的分 配空间连接合并,并修改与所述释放空间相邻的上一内存空间的预设节点空间中的下一空 间开始位置的地址和与所述释放空间相邻的下一空间中上一空间开始位置的地址。
13.一种金融终端的内存分配装置,其特征在于,所述金融终端的内存包括占用空间和 连续空闲空间,所述占用空间和所述连续空闲空间分别包括预设节点空间,所述连续空闲 空间还包括分配空间,所述节点空间包括下一空间开始位置的地址、空间状态和上一空间 开始位置的地址,所述内存分配装置包括:
第一接收模块,用于接收外部设备发送的内存申请指令;
第一查模块,用于根据所述内存申请指令和预设节点空间中的信息从所述内存中查 能够满足所述内存申请的需求的连续空闲空间;
第一分配模块,用于若查到分配空间能够满足所述内存申请需求的连续空闲空间, 则根据所述内存申请指令分配所述连续空闲空间中对应的分配空间,并修改所述连续空闲 空间的预设节点空间中下一空间开始位置的地址和空间状态。
14.如权利要求13所述的内存分配装置,其特征在于,所述金融终端的内存中设置有快 速切入口,所述快速切入口设置在一连续空闲空间的开始位置,所述第一查模块还用于 根据所述内存申请指令和预设节点空间中的信息从所述快速切入口所在的连续空闲空间 开始查能够满足所述内存申请需求的连续空闲空间;
所述第一分配模块还用于将所述快速切入口调整到下一连续空闲空间中预设节点空 间的开始位置。
15.如权利要求14所述的内存分配装置,其特征在于,所述第一查模块包括:
第一判断单元,用于判断所述快速切入口所在的连续空闲空间中的分配空间是否能够 满足所述内存申请的需求;
第一查单元,用于若所述快速切入口所在的连续空闲空间中的分配空间不能满足所 述内存申请需求,则根据节点空间包括下一空间开始位置的地址判断下一连续空闲空间是 否能够满足所述内存申请的需求,直至查到查到能够满足所述内存申请需求的连续空闲 空间。
16.如权利要求14所述的内存分配装置,其特征在于,所述内存分配装置还包括:
第一判断模块,用于判断占用空间中的数据是否已经被使用;
第一释放模块,用于若所述占用空间的中数据已被使用,则释放所述占用空间。
17.如权利要求16所述的内存分配装置,其特征在于,所述第一释放模块包括:
第一获取单元,用于获取数据已被使用的占用空间的指针;
第一映射单元,用于对所述指针进行映射,获取所述占用空间中预设节点空间的开始 位置的地址;
第一释放单元,用于根据所述开始位置的地址,将所述占用空间的预设节点空间中的 空间状态设置为空闲。
18.如权利要求17所述的内存分配装置,其特征在于,将释放的占用空间定义为释放空 间,所述内存分配装置还包括:
第二判断模块,用于判断与所述释放空间相邻的下一内存空间的预设节点空间中的空 间状态是否为空闲;
第一合并模块,用于若与所述释放空间相邻的下一内存空间的预设节点空间中的空间 状态为空闲,则将所述释放空间中的分配空间、与所述释放空间相邻的下一内存空间的预 设节点空间和与所述释放空间相邻的下一内存空间合并,并修改所述释放空间的预设节点 空间中的下一空间开始位置的地址和与所述释放空间相邻的下一空间中上一空间开始位 置的地址;
第三判断模块,用于判断与所述释放空间相邻的上一内存空间的预设节点空间中的空 间状态是否为空闲;
第二合并模块,用于若与所述释放空间相邻的上一内存空间的预设节点空间中的空间 状态为空闲,则将所述释放空间中的预设节点空间、分配空间,以及与所述释放空间相邻的 上一内存空间的分配空间合并,并修改与所述释放空间相邻的上一内存空间的预设节点空 间中的下一空间开始位置的地址和与所述释放空间相邻的下一空间中上一空间开始位置 的地址。
19.一种金融终端的内存分配装置,其特征在于,所述金融终端的内存包括快速切入 口,所述快速切入口设置在所述金融终端的内存中一连续空闲空间的开始位置,所述金融 终端的内存分配装置包括:
第二接收模块,用于接收外部设备发送的内存申请指令;
第四判断模块,用于判断位于所述内存中包括所述快速切入口所在的连续空闲空间是 否满足所述内存申请的需求;
第二分配模块,用于若所述快速切入口所在的连续空闲空间满足所述内存申请的需 求,则将所述快速切入口所在的连续空闲空间进行分配,并将所述快速切入口调整到下一 连续空闲空间的开始位置。
20.如权利要求19所述的内存分配装置,其特征在于,所述金融终端的内存还包括占用 空间,所述占用空间和连续空闲空间包括预设节点空间,所述连续空闲空间还包括分配空 间,所述节点空间包括下一空间开始位置的地址、空间状态和上一空间开始位置的地址,
所述第四判断模块还用于根据所述内存申请指令判断所述快速切入口所在的连续空 闲空间中的分配空间是否满足所述内存申请的需求;
所述第二分配模块还用于若所述快速切入口所在的连续空闲空间中的分配空间满足 所述内存申请的需求,则根据所述内存申请指令分配所述快速切入口所在的连续空闲空间 中的分配空间,并修改所述快速切入口所在的连续空闲空间的预设节点空间中下一空间开 始位置的地址和空间状态;将所述快速切入口调整到下一连续空闲空间的预设节点空间的 开始位置。
21.如权利要求20所述的内存分配装置,其特征在于,所述内存分配装置还包括:
第二查模块,用于若所述快速切入口所在的连续空闲空间中的分配空间不满足所述 内存申请的需求,则通过所述快速切入口所在的连续空闲空间的预设节点空间中的下一空 间开始位置的地址查下一连续空闲空间;
所述第二分配模块还用于若所述下一连续空闲空间中的分配空间满足所述内存申请 需求,则执行步骤:根据所述内存申请指令分配所述连续空闲空间中的分配空间,并修改所 述连续空闲空间的预设节点空间中下一空间开始位置的地址和空间状态;
所述第二查模块还用于若所述下一连续空闲空间中的分配空间不能满足所述内存 申请需求,则继续查下一连续空闲空间,直至查到查到能够满足所述内存申请需求的 连续空闲空间。
22.如权利要求21所述的内存分配装置,其特征在于,所述金融终端的内存分配装置还 包括:
第五判断模块,用于判断被占用的内存空间的数据是否已经被使用;
第二释放模块,用于若所述被占用的内存空间的数据已被使用,则释放被占用的内存 空间。
23.如权利要求21所述的内存分配装置,其特征在于,所述第二释放模块包括:
第二获取单元,用于获取被占用的内存空间的指针;
第二映射单元,用于对所述指针进行映射,获取所述占用空间中预设节点空间的开始 位置的地址;
第二释放单元,用于根据所述开始位置的地址,将所述占用空间的预设节点空间中的 空间状态设置为空闲。
24.如权利要求21所述的内存分配装置,其特征在于,将释放的占用空间定义为释放空 间,所述金融终端的内存分配装置还包括:
第六判断模块,用于判断与释放空间相邻的下一内存空间的预设节点空间中的空间状 态是否为空闲;
第三合并模块,用于若与所述释放空间相邻的下一内存空间的预设节点空间中的空间 状态为空闲,则将所述释放空间中的分配空间、与所述释放空间相邻的下一内存空间的预 设节点空间和与所述释放空间相邻的下一内存空间连接合并,并修改所述释放空间的预设 节点空间中的下一空间开始位置的地址和与所述释放空间相邻的下一空间中上一空间开 始位置的地址;
第七判断模块,用于判断与所述释放空间相邻的上一内存空间的预设节点空间中的空 间状态是否为空闲;
第四合并模块,用于若与所述释放空间相邻的上一内存空间的预设节点空间中的空间 状态为空闲,则将所述释放空间中的预设节点空间、分配空间,以及与所述空闲空间相邻的 上一内存空间的分配空间连接合并,并修改与所述释放空间相邻的上一内存空间的预设节 点空间中的下一空间开始位置的地址和与所述释放空间相邻的下一空间中上一空间开始 位置的地址。
本发明涉及计算机科学技术领域,尤其涉及一种金融终端的内存分配方法及装 置。
目前,金融终端一般会与平台发生交互,因此金融终端数据的处理也需要与平台 的数据发生交互,但是平台与终端发生数据交互时,交互的数据没有定长,金融终端数据和 平台数据的范围相差很大。在金融终端上预设空间的时候,该预设的空间需要被设置得很 大,会加大内存的需求。
现有的内存管理技术为了降低内存的需求,大多以位标记表示内存的存储情况。 如果单个位标记表示的内存太少时,则需要用到的标记位太多,这会造成空间的浪费,而单 个位标记表示的内存太大时,单次申请的内存空间利用率则会比较低,同时,在内存申请和 内存释放过程中需要进行多次位移计算和多次位与运算,需要消耗较长的时间,因此采用 位标记表示内存的存储情况时,内存空间的利用率会比较低,同时数据的处理速率也会较 慢。
本发明的主要目的在于提出一种金融终端的内存分配方法及装置,旨在实现提高 内存的利用率,提高数据的处理速率,降低金融终端的内存需求。
为实现上述目的,本发明提供的一种金融终端的内存分配方法,所述金融终端的 内存包括占用空间和连续空闲空间,所述占用空间和所述连续空闲空间分别包括预设节点 空间,所述连续空闲空间还包括分配空间,所述节点空间包括下一空间开始位置的地址、空 间状态和上一空间开始位置的地址,所述金融终端的内存分配方法包括以下步骤:
接收外部设备发送的内存申请指令;
根据所述内存申请指令和预设节点空间中的信息从所述内存中查能够满足所 述内存申请的需求的连续空闲空间;
若查到分配空间能够满足所述内存申请需求的连续空闲空间,则根据所述内存 申请指令分配所述连续空闲空间中对应的分配空间,并修改所述连续空闲空间的预设节点 空间中下一空间开始位置的地址和空间状态。
可选地,所述金融终端的内存中设置有快速切入口,所述快速切入口设置在一连 续空闲空间的开始位置,所述根据所述内存申请指令和预设节点空间中的信息从所述内存 中查能够满足所述内存申请的需求的连续空闲空间的步骤包括:
根据所述内存申请指令和预设节点空间中的信息从所述快速切入口所在的连续 空闲空间开始查能够满足所述内存申请需求的连续空闲空间;
若查到分配空间能够满足所述内存申请需求的连续空闲空间,则根据所述内存 申请指令分配所述连续空闲空间中对应的分配空间的步骤包括:
将所述快速切入口调整到下一连续空闲空间中预设节点空间的开始位置。
可选地,所述根据所述内存申请指令和预设节点空间中的信息从所述快速切入口 所在的连续空闲空间开始查能够满足所述内存申请需求的连续空闲空间的步骤包括:
判断所述快速切入口所在的连续空闲空间中的分配空间是否能够满足所述内存 申请的需求;
若所述快速切入口所在的连续空闲空间中的分配空间不能满足所述内存申请需 求,则根据节点空间包括下一空间开始位置的地址判断下一连续空闲空间是否能够满足所 述内存申请的需求,直至查到查到能够满足所述内存申请需求的连续空闲空间。
可选地,所述金融终端的内存分配方法还包括:
判断占用空间中的数据是否已经被使用;
若所述占用空间的中数据已被使用,则释放所述占用空间。
可选地,所述若所述占用空间中的数据已被使用,则释放所述占用空间的步骤包 括:
获取数据已被使用的占用空间的指针;
对所述指针进行映射,获取所述占用空间中预设节点空间的开始位置的地址;
根据所述开始位置的地址,将所述占用空间的预设节点空间中的空间状态设置为 空闲。
可选地,将释放的占用空间定义为释放空间,所述金融终端的内存分配方法还包 括:
判断与所述释放空间相邻的下一内存空间的预设节点空间中的空间状态是否为 空闲;
若与所述释放空间相邻的下一内存空间的预设节点空间中的空间状态为空闲,则 将所述释放空间中的分配空间、与所述释放空间相邻的下一内存空间的预设节点空间和与 所述释放空间相邻的下一内存空间合并,并修改所述释放空间的预设节点空间中的下一空 间开始位置的地址与所述释放空间相邻的下一空间中上一空间开始位置的地址;
判断与所述释放空间相邻的上一内存空间的预设节点空间中的空间状态是否为 空闲;
若与所述释放空间相邻的上一内存空间的预设节点空间中的空间状态为空闲,则 将所述释放空间中的预设节点空间、分配空间,以及与所述释放空间相邻的上一内存空间 的分配空间合并,并修改与所述释放空间相邻的上一内存空间的预设节点空间中的下一空 间开始位置的地址与所述释放空间相邻的下一空间中上一空间开始位置的地址。
此外,为实现上述目的,本发明还提供一种金融终端的内存分配方法,所述金融终 端的内存包括快速切入口,所述快速切入口设置在所述金融终端的内存中一连续空闲空间 的开始位置,所述金融终端的内存分配方法包括以下步骤:
接收外部设备发送的内存申请指令;
判断所述快速切入口所在的连续空闲空间是否满足所述内存申请的需求;
若所述快速切入口所在的连续空闲空间满足所述内存申请的需求,则将所述快速 切入口所在的连续空闲空间进行分配,并在分配完成时,将所述快速切入口调整到下一连 续空闲空间的开始位置。
可选地,所述金融终端的内存还包括占用空间,所述占用空间和连续空闲空间包 括预设节点空间,所述连续空闲空间还包括分配空间,所述节点空间包括下一空间开始位 置的地址、空间状态和上一空间开始位置的地址,所述判断所述快速切入口所在的连续空 闲空间是否满足所述内存申请的需求的步骤包括:
根据所述内存申请指令判断所述快速切入口所在的连续空闲空间中的分配空间 是否满足所述内存申请的需求;
若所述快速切入口所在的连续空闲空间满足所述内存申请的需求,则将所述快速 切入口所在的连续空闲空间进行分配的步骤包括:
若所述快速切入口所在的连续空闲空间中的分配空间满足所述内存申请的需求, 则根据所述内存申请指令分配所述快速切入口所在的连续空闲空间中的分配空间,并修改 所述快速切入口所在的连续空闲空间的预设节点空间中下一空间开始位置的地址和空间 状态;
将所述快速切入口调整到下一连续空闲空间的预设节点空间的开始位置。
可选地,所述根据所述内存申请指令判断所述快速切入口所在的连续空闲空间中 的分配空间是否满足所述内存申请的需求的步骤之后还包括:
若所述快速切入口所在的连续空闲空间中的分配空间不满足所述内存申请的需 求,则通过所述快速切入口所在的连续空闲空间的预设节点空间中的下一空间开始位置的 地址查下一连续空闲空间;
若所述下一连续空闲空间中的分配空间满足所述内存申请需求,则执行步骤:根 据所述内存申请指令分配所述连续空闲空间中的分配空间,并修改所述连续空闲空间的预 设节点空间中下一空间开始位置的地址和空间状态;
若所述下一连续空闲空间中的分配空间不能满足所述内存申请需求,则继续查 下一连续空闲空间,直至查到查到能够满足所述内存申请需求的连续空闲空间。
可选地,所述金融终端的内存分配方法还包括:
判断占用空间中的数据是否已经被使用;
若所述占用空间中的数据已被使用,则释放所述占用空间。
可选地,所述若所述占用空间的数据已被使用,则释放所述占用空间的步骤包括:
获取占用空间的指针;
对所述指针进行映射,获取所述占用空间中预设节点空间的开始位置的地址;
根据所述开始位置的地址,将所述占用空间的预设节点空间中的空间状态设置为 空闲。
可选地,将释放的占用空间定义为释放空间,所述金融终端的内存分配方法还包 括:
判断与释放空间相邻的下一内存空间的预设节点空间中的空间状态是否为空闲;
若与所述释放空间相邻的下一内存空间的预设节点空间中的空间状态为空闲,则 将所述释放空间中的分配空间、与所述释放空间相邻的下一内存空间的预设节点空间和与 所述释放空间相邻的下一内存空间连接合并,并修改所述释放空间的预设节点空间中的下 一空间开始位置的地址和与所述释放空间相邻的下一空间中上一空间开始位置的地址;
判断与所述释放空间相邻的上一内存空间的预设节点空间中的空间状态是否为 空闲;
若与所述释放空间相邻的上一内存空间的预设节点空间中的空间状态为空闲,则 将所述释放空间中的预设节点空间、分配空间,以及与所述空闲空间相邻的上一内存空间 的分配空间连接合并,并修改与所述释放空间相邻的上一内存空间的预设节点空间中的下 一空间开始位置的地址和与所述释放空间相邻的下一空间中上一空间开始位置的地址。
此外,为实现上述目的,本发明还提供一种金融终端的内存分配装置,所述金融终 端的内存包括占用空间和连续空闲空间,所述占用空间和所述连续空闲空间分别包括预设 节点空间,所述连续空闲空间还包括分配空间,所述节点空间包括下一空间开始位置的地 址、空间状态和上一空间开始位置的地址,所述内存分配装置包括:
第一接收模块,用于接收外部设备发送的内存申请指令;
第一查模块,用于根据所述内存申请指令和预设节点空间中的信息从所述内存 中查能够满足所述内存申请的需求的连续空闲空间;
第一分配模块,用于若查到分配空间能够满足所述内存申请需求的连续空闲空 间,则根据所述内存申请指令分配所述连续空闲空间中对应的分配空间,并修改所述连续 空闲空间的预设节点空间中下一空间开始位置的地址和空间状态。
可选地,所述金融终端的内存中设置有快速切入口,所述快速切入口设置在一连 续空闲空间的开始位置,所述第一查模块还用于根据所述内存申请指令和预设节点空间 中的信息从所述快速切入口所在的连续空闲空间开始查能够满足所述内存申请需求的 连续空闲空间;
所述第一分配模块还用于将所述快速切入口调整到下一连续空闲空间中预设节 点空间的开始位置。
可选地,所述第一查模块包括:
第一判断单元,用于判断所述快速切入口所在的连续空闲空间中的分配空间是否 能够满足所述内存申请的需求;
第一查单元,用于若所述快速切入口所在的连续空闲空间中的分配空间不能满 足所述内存申请需求,则根据节点空间包括下一空间开始位置的地址判断下一连续空闲空 间是否能够满足所述内存申请的需求,直至查到查到能够满足所述内存申请需求的连续 空闲空间。
可选地,所述内存分配装置还包括:
第一判断模块,用于判断占用空间中的数据是否已经被使用;
第一释放模块,用于若所述占用空间的中数据已被使用,则释放所述占用空间。
可选地,所述第一释放模块包括:
第一获取单元,用于获取数据已被使用的占用空间的指针;
第一映射单元,用于对所述指针进行映射,获取所述占用空间中预设节点空间的 开始位置的地址;
第一释放单元,用于根据所述开始位置的地址,将所述占用空间的预设节点空间 中的空间状态设置为空闲。
可选地,将释放的占用空间定义为释放空间,所述内存分配装置还包括:
第二判断模块,用于判断与所述释放空间相邻的下一内存空间的预设节点空间中 的空间状态是否为空闲;
第一合并模块,用于若与所述释放空间相邻的下一内存空间的预设节点空间中的 空间状态为空闲,则将所述释放空间中的分配空间、与所述释放空间相邻的下一内存空间 的预设节点空间和与所述释放空间相邻的下一内存空间合并,并修改所述释放空间的预设 节点空间中的下一空间开始位置的地址和与所述释放空间相邻的下一空间中上一空间开 始位置的地址;
第三判断模块,用于判断与所述释放空间相邻的上一内存空间的预设节点空间中 的空间状态是否为空闲;
第二合并模块,用于若与所述释放空间相邻的上一内存空间的预设节点空间中的 空间状态为空闲,则将所述释放空间中的预设节点空间、分配空间,以及与所述释放空间相 邻的上一内存空间的分配空间合并,并修改与所述释放空间相邻的上一内存空间的预设节 点空间中的下一空间开始位置的地址和与所述释放空间相邻的下一空间中上一空间开始 位置的地址。
此外,为实现上述目的,本发明还提供一种金融终端的内存分配装置,所述金融终 端的内存包括快速切入口,所述快速切入口设置在所述金融终端的内存中一连续空闲空间 的开始位置,所述金融终端的内存分配装置包括:
第二接收模块,用于接收外部设备发送的内存申请指令;
第四判断模块,用于判断位于所述内存中包括所述快速切入口所在的连续空闲空 间是否满足所述内存申请的需求;
第二分配模块,用于若所述快速切入口所在的连续空闲空间满足所述内存申请的 需求,则将所述快速切入口所在的连续空闲空间进行分配,并将所述快速切入口调整到下 一连续空闲空间的开始位置。
可选地,所述金融终端的内存还包括占用空间,所述占用空间和连续空闲空间包 括预设节点空间,所述连续空闲空间还包括分配空间,所述节点空间包括下一空间开始位 置的地址、空间状态和上一空间开始位置的地址,
所述第四判断模块还用于根据所述内存申请指令判断所述快速切入口所在的连 续空闲空间中的分配空间是否满足所述内存申请的需求;
所述第二分配模块还用于若所述快速切入口所在的连续空闲空间中的分配空间 满足所述内存申请的需求,则根据所述内存申请指令分配所述快速切入口所在的连续空闲 空间中的分配空间,并修改所述快速切入口所在的连续空闲空间的预设节点空间中下一空 间开始位置的地址和空间状态;将所述快速切入口调整到下一连续空闲空间的预设节点空 间的开始位置。
可选地,所述内存分配装置还包括:
第二查模块,用于若所述快速切入口所在的连续空闲空间中的分配空间不满足 所述内存申请的需求,则通过所述快速切入口所在的连续空闲空间的预设节点空间中的下 一空间开始位置的地址查下一连续空闲空间;
所述第二分配模块还用于若所述下一连续空闲空间中的分配空间满足所述内存 申请需求,则执行步骤:根据所述内存申请指令分配所述连续空闲空间中的分配空间,并修 改所述连续空闲空间的预设节点空间中下一空间开始位置的地址和空间状态;
所述第二查模块还用于若所述下一连续空闲空间中的分配空间不能满足所述 内存申请需求,则继续查下一连续空闲空间,直至查到查到能够满足所述内存申请需 求的连续空闲空间。
可选地,所述金融终端的内存分配装置还包括:
第五判断模块,用于判断被占用的内存空间的数据是否已经被使用;
第二释放模块,用于若所述被占用的内存空间的数据已被使用,则释放被占用的 内存空间。
可选地,所述第二释放模块包括:
第二获取单元,用于获取被占用的内存空间的指针;
第二映射单元,用于对所述指针进行映射,获取所述占用空间中预设节点空间的 开始位置的地址;
第二释放单元,用于根据所述开始位置的地址,将所述占用空间的预设节点空间 中的空间状态设置为空闲。
可选地,将释放的占用空间定义为释放空间,所述金融终端的内存分配装置还包 括:
第六判断模块,用于判断与释放空间相邻的下一内存空间的预设节点空间中的空 间状态是否为空闲;
第三合并模块,用于若与所述释放空间相邻的下一内存空间的预设节点空间中的 空间状态为空闲,则将所述释放空间中的分配空间、与所述释放空间相邻的下一内存空间 的预设节点空间和与所述释放空间相邻的下一内存空间连接合并,并修改所述释放空间的 预设节点空间中的下一空间开始位置的地址和空间状态;
第七判断模块,用于判断与所述释放空间相邻的上一内存空间的预设节点空间中 的空间状态是否为空闲;
第四合并模块,用于若与所述释放空间相邻的上一内存空间的预设节点空间中的 空间状态为空闲,则将所述释放空间中的预设节点空间、分配空间,以及与所述空闲空间相 邻的上一内存空间的分配空间连接合并,并修改与所述空闲空间相邻的上一内存空间的预 设节点空间中的下一空间开始位置的地址和空间状态。
本发明中金融终端的内存包括占用空间和连续空闲空间,所述占用空间和所述连 续空闲空间分别包括预设节点空间,所述连续空闲空间还包括分配空间,所述节点空间包 括下一空间开始位置的地址、空间状态和上一空间开始位置的地址,金融终端在接收外部 设备发送的内存申请指令时,根据内存申请指令和预设节点空间中的信息查满足所述内 存申请的需求的连续空闲空间,在查到分配空间能够满足所述内存申请需求的连续空闲 空间时,则按需分配该连续空闲空间中对应的分配空间,避免在内存申请时进行多次的位 移计算和位与计算,从而能够提高数据的处理速率;同时,分配的内存空间刚好满足内存申 请的需求,不会存在单次申请空间过大的情况,从而提高内存的利用率。因此本发明能够提 高数据的处理速率,提高内存的利用率,从而降低金融终端的内存需求。
图1为本发明金融终端的内存分配方法第一实施例的流程示意图;
图2为本发明金融终端的内存分配方法第二实施例的流程示意图;
图3为本发明金融终端的内存分配方法第三实施例的流程示意图;
图4为图4为图3中若所述被占用内存空间的数据已被使用,则释放被占用的内存 空间的细化流程示意图;
图5为本发明金融终端的内存分配方法第四实施例的流程示意图;
图6为本发明金融终端的内存分配方法第五实施例的流程示意图;
图7为本发明金融终端的内存分配方法第六实施例的流程示意图;
图8为本发明金融终端的内存分配方法第七实施例的流程示意图;
图9为图8中若所述被占用内存空间的数据已被使用,则释放被占用的内存空间的 细化流程示意图;
图10为本发明金融终端的内存分配方法第八实施例的流程示意图;
图11为本发明实施例中内存申请和内存释放的示意图;
图12为本发明实施例中芯片内存管理过程中一内部结构示意图。
图13为本发明金融终端的内存分配装置第一实施例的功能模块示意图;
图14为本发明金融终端的内存分配装置第二实施例的功能模块示意图;
图15为本发明金融终端的内存分配装置第三实施例的功能模块示意图;
图16为本发明金融终端的内存分配装置第四实施例的功能模块示意图;
图17本发明金融终端的内存分配装置第五实施例的功能模块示意图;
图18本发明金融终端的内存分配装置第六实施例的功能模块示意图;
图19本发明金融终端的内存分配装置第七实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种金融终端的内存分配方法。
参照图1,图1为本发明金融终端的内存分配方法第一实施例的流程示意图。
在本实施例中,该金融终端的内存分配方法包括以下步骤:
步骤S110,接收外部设备发送的内存申请指令;
本实施例中金融终端的内存包括占用空间和连续空闲空间,所述占用空间和所述 连续空闲空间分别包括预设节点空间,所述连续空闲空间还包括分配空间,所述节点空间 包括下一空间开始位置的地址、空间状态和上一空间开始位置的地址,使用过程中金融终 端的内存分布示意可以如图11所示,具体地,图11中图1.0内存包括占用空间1(图中标识为 占用1)、空闲空间2(图中标识为空闲2)、占用空间3(图中标识为占用3)和后续空间,其中各 个空间都包括预设节点空间,预设节点空间则包括下一空间开始位置的地址、空间状态和 上一空间开始位置的地址,本实施例中分别用next、tag和last表示,连续空闲空间还包括 分配空间,分配空间则为可分配,未被占用的空间。本实施例中为使用方便将预设节点空间 设置在各个空间的开端位置,该开端位置是按照内存中存储位置的先后为标准,先分配的 位置为前端,整个内存空间为一总线段。换而言之,本实施例中内存的管理结构采用节点线 段的方式,即各个空间则为总线段中的各个节点线段。
在终端开始使用时,整个内存空间为一连续空闲空间,整个内存空间通过多次内 存申请和内存释放会产生不同的连续空闲空间,如图12所示,金融终端一共进行了3次内存 申请和1次内存释放,通过3次内存申请和1次内存释放,产生了2个连续空闲空间,在下一次 内存申请中,所述连续空闲空间可以是这两个空闲空间的任意一个。
所述外部设备包括与金融终端进行数据交互的平台、服务器。金融终端接收外部 设备发送的内存申请指令,根据所述内存申请指令可以获得外部设备发送的内存申请数 据,获得所述内存申请数据的字节数。
步骤S120,根据所述内存申请指令和预设节点空间中的信息从所述内存中查能 够满足所述内存申请的需求的连续空闲空间;
根据所述内存申请指令获得外部设备发送的内存申请数据大小,即获得所述内存 申请数据的字节数,然后根据接收到的内存申请指令和预设节点空间中的信息从内存中查 够满足所述内存申请的需求的连续空闲空间,具体地,本实施例中可以从内存的开始位 置开始,根据预设节点空间中的空间状态信息确定查询的节点空间是占用空间还是连续空 闲空间,在查到连续的空闲空间时,判断查到的连续空闲空间是否满足内存申请的需 求。具体实施中也可以从其他位置开始查。
步骤S130,若查到分配空间能够满足所述内存申请需求的连续空闲空间,则根 据所述内存申请指令分配所述连续空闲空间中对应的分配空间,并修改所述连续空闲空间 的预设节点空间中下一空间开始位置的地址和空间状态。
根据步骤S120的结果,如果查到分配空间能够满足所述内存申请需求的连续空 闲空间,则根据外部设备发送的内存申请指令分配对应的内存空间,即按照内存申请的需 求进行分配,具体地,如果查到的连续空闲空间的分配空间大小大于内存申请的空间大 小,则会剩余部分分配空间,此时这剩余的分配空间则重新定义为一连续的空闲空间,其开 始位置设置对应的预设节点空间,该连续空闲空间的原来的预设节点空间则作为已分配的 空间的预设节点空间,此时该已分配的空间为占用空间。在分配完成后,修改该占用空间的 预设节点空间信息,包括修改其空间状态和下一空间开始位置。
如果查到的连续空闲空间的分配空间大小等于内存申请的空间大小,则只需修 改该空间中预设节点空间的空间状态。如果没有查到分配空间能够满足所述内存申请需 求的连续空闲空间,则说明内存申请失败。
本发明中金融终端的内存包括占用空间和连续空闲空间,所述占用空间和所述连 续空闲空间分别包括预设节点空间,所述连续空闲空间还包括分配空间,所述节点空间包 括下一空间开始位置的地址、空间状态和上一空间开始位置的地址,金融终端在接收外部 设备发送的内存申请指令时,根据内存申请指令和预设节点空间中的信息查满足所述内 存申请的需求的连续空闲空间,在查到分配空间能够满足所述内存申请需求的连续空闲 空间时,则按需分配该连续空闲空间中对应的分配空间,避免在内存申请时进行多次的位 移计算和位与计算,从而能够提高数据的处理速率;同时,分配的内存空间刚好满足内存申 请的需求,不会存在单次申请空间过大的情况,从而提高内存的利用率。因此本发明能够提 高数据的处理速率,提高内存的利用率,从而降低金融终端的内存需求。
参照图2,图2为本发明金融终端的内存分配方法第二实施例的流程示意图。
基于本发明金融终端的内存分配方法第一实施例,为进一步提高查速率,本实 施例中与第一实施例的区别在于金融终端的内存中设置有快速切入口,所述快速切入口设 置在一连续空闲空间的开始位置,步骤S120包括:
步骤S121,根据所述内存申请指令和预设节点空间中的信息从所述快速切入口所 在的连续空闲空间开始查能够满足所述内存申请需求的连续空闲空间;
为了避免每次查空闲空间时,都从内存的开始位置开始查,本实施例中设置 有快速切入口,所述快速切入口设置在一连续空闲空间的开始位置,在接收到外部设备发 送的内存申请指令时,根据接收到的内存申请指令和预设节点空间中的信息从快速切入口 开始查够满足所述内存申请的需求的连续空闲空间,如果快速切入口所在连续空闲空间 满足内存申请需求时,则分配对应的空间;如果快速切入口所在连续空闲空间不能满足内 存申请需求时,则根据预设节点空间查下一节点空间。
具体地,步骤S121可以包括:
判断所述快速切入口所在的连续空闲空间中的分配空间是否能够满足所述内存 申请的需求;
若所述快速切入口所在的连续空闲空间中的分配空间不能满足所述内存申请需 求,则根据节点空间包括下一空间开始位置的地址判断下一连续空闲空间是否能够满足所 述内存申请的需求,直至查到查到能够满足所述内存申请需求的连续空闲空间。
在接收到外部设备发送的内存申请请求时,判断快速切入口所在的连续空闲空间 中的分配空间是否能够满足所述内存申请的需求,如果快速切入口所在的连续空闲空间中 的分配空间能够满足所述内存申请需求,则在该连续空闲空间分配对应的空间;若所述快 速切入口所在的连续空闲空间中的分配空间不能满足所述内存申请需求,则根据节点空间 包括下一空间开始位置的地址判断下一连续空闲空间是否能够满足所述内存申请的需求, 直至查到查到能够满足所述内存申请需求的连续空闲空间。金融终端没有查到满足内 存申请需求的未分配的连续内存空间,则判定所述内存申请失败,并向所述外部设备反馈 所述内存申请失败的提示信息。
步骤S130可以包括:
步骤S131,将所述快速切入口调整到下一连续空闲空间中预设节点空间的开始位 置。
本实施例中根据所述内存申请指令分配所述连续空闲空间中对应的分配空间后, 将快速切入口调整到下一连续空闲空间中预设节点空间的开始位置,以方便下次从下一连 续空闲空间开始进行查。
由于内存的分配从开始端到结尾端,因此快速切入口从开始端往后移动,再回到 开始端,如此往复,可以保证快速切入口离分配空间较大的连续空闲空间较近,因此减少查 时间。
参阅图3,图3为本发明金融终端的内存分配方法第三实施例的流程示意图。
基于本发明金融终端的内存分配方法上述实施例,所述金融终端的内存分配方法 还包括:
步骤S140,判断占用空间中的数据是否已经被使用;
所述被占用的内存空间为金融终端进行内存申请并获得分配的内存空间,每过一 段时间,金融终端则判断被占用的内存空间的数据是否已经被使用。在具体实施中,所述被 占用的内存空间可以有多个。
步骤S150,若所述占用空间的中数据已被使用,则释放所述占用空间。
金融终端通过判断发现所述被占用内存空间的数据已被使用,则释放被占用的内 存空间。
具体地,参照图4,图4为图3中若所述被占用内存空间的数据已被使用,则释放被 占用的内存空间的细化流程示意图,步骤S150包括:
步骤S151,获取数据已被使用的占用空间的指针;
金融终端通过判断发现所述被占用内存空间的数据已被使用,则获取被占用的内 存空间的指针,所述指针用于标记被占用的内存空间。
步骤S152,对所述指针进行映射,获取所述占用空间中预设节点空间的开始位置 的地址;
步骤S153,根据所述开始位置的地址,将所述占用空间的预设节点空间中的空间 状态设置为空闲。
获取被占用内存空间的指针后,对所述被占用内存空间的指针进行映射,得到获 取所述占用空间中预设节点空间的开始位置的地址,并对释放的空间添加空闲标记,所述 空闲标记是为了标记空闲空间,即更改该空间的状态,从而方便整合相邻的空闲空间,将各 个零散的空闲空间合并成为一个空闲空间。进一步参阅图5,金融终端的内存分配方法还包 括:
步骤S160,判断与所述释放空间相邻的下一内存空间的预设节点空间中的空间状 态是否为空闲;
步骤S170,若与所述释放空间相邻的下一内存空间的预设节点空间中的空间状态 为空闲,则将所述释放空间中的分配空间、与所述释放空间相邻的下一内存空间的预设节 点空间和与所述释放空间相邻的下一内存空间合并,并修改所述释放空间的预设节点空间 中的下一空间开始位置的地址和与所述释放空间相邻的下一空间中上一空间开始位置的 地址;
步骤S180,判断与所述释放空间相邻的上一内存空间的预设节点空间中的空间状 态是否为空闲;
步骤S190,若与所述释放空间相邻的上一内存空间的预设节点空间中的空间状态 为空闲,则将所述释放空间中的预设节点空间、分配空间,以及与所述释放空间相邻的上一 内存空间的分配空间合并,并修改与所述释放空间相邻的上一内存空间的预设节点空间中 的下一空间开始位置的地址和与所述释放空间相邻的下一空间中上一空间开始位置的地 址。
在得到释放的内存空间后,判断与所述释放的空间相邻的内存空间是否存在空闲 标记,具体地,根据释放空间中预设节点空间中的下一空间存储的信息查到下一空间,然 后根据下一空间中的预设节点空间中的空间状态。如果通过判断发现与所述释放的空间相 邻的内存空间存在空闲标记,则将所述释放的空间和所述相邻的内存空间连接合并,使其 成为一个空闲空间,便于下次内存申请使用。具体地,将所述释放空间中的分配空间、与所 述释放空间相邻的下一内存空间的预设节点空间和与所述释放空间相邻的下一内存空间 合并,并修改所述释放空间的预设节点空间中的下一空间开始位置的地址与所述释放空间 相邻的下一空间中上一空间开始位置的地址,即将该释放空间中分配空间和与该释放空间 相邻的下一空间中的预设节点空间、分配空间合并,并将更新合并后的空间中的预设节点 空间中的下一空间开始位置的地址。
然后判断与所述释放空间相邻的上一内存空间的预设节点空间中的空间状态是 否为空闲;若与所述释放空间相邻的上一内存空间的预设节点空间中的空间状态为空闲, 则将所述释放空间中的预设节点空间、分配空间,以及与所述释放空间相邻的上一内存空 间的分配空间合并,并修改与所述释放空间相邻的上一内存空间的预设节点空间中的下一 空间开始位置的地址与所述释放空间相邻的下一空间中上一空间开始位置的地址,即将该 释放空间中的预设节点空间、分配空间和与该释放空间相邻的上一空间中的分配空间合 并,并将更新合并后的空间中的预设节点空间中的下一空间开始位置的地址。
通过上述描述可知本实施例中先与后面的空闲空间合并,再与前一相邻的空闲空 间合并,以尽可能优先获得最大的空闲空间。
例如,图11中的图1.0-图2.0空间分配和空间合并的过程,假设快速切入口IQ位于 名为“空闲2”的开始位置,则在接收到内存申请时,判断空闲2是否满足内存申请需求,如果 能够满足,则在空闲2中分配对应的空间,并将空闲2中未分配的空间按照预设规则新建一 空间,名为空闲2.2,如图1.1所示;图1.1至图2.0则可以表示名称为占用3的空间中数据被 释放,然后与其他空间合并的过程示意图,具体地,在占用3被释放时,判断到与占用3相邻 的下一空间为空闲,此时,将占用3中的分配空间和与占用3相邻的下一空间的预设节点空 间、分配空间合并,并修改合并后空间中的预设节点空间中信息。
如果判断到与占用3相邻的上一空间也为空闲,则将合并后的空间在与名称空闲 2.2的空间合并,具体地,金融终端通过判断发现“占用3”的数据已被使用,则获取“占用3” 的指针,获取“占用3”的指针后,对所述“占用3”的指针进行映射,得到“占用3”所在空间的 开始位置的地址,如图中所示中空闲2末端箭头所在的位置,对释放的空间添加空闲标记, 即将“占用3”中预设节点空间中的tag中信息设置为false。在得到释放的空间后,根据“占 用3”中预设节点空间中的下一空间开始位置的地址到下一空间,然后根据下一空间中的 预设节点空间状态tag判断与所述释放的空间相邻的下一内存空间是否为空闲空间,如果 是,则合并占用3和相邻的后续空闲空间,然后再判断到与占用3的空间相邻的上一空间:空 闲2.2也是空闲,则继续合并,最后得到“占用3”、“空闲2.2”和“空闲......”合并成一个空 闲空间。
参照图6,图6为本发明金融终端的内存分配方法第五实施例的流程示意图。
在本实施例中,该金融终端的内存分配方法包括以下步骤:
步骤S210,接收外部设备发送的内存申请指令;
本发明中金融终端的内存中设置有快速切入口,所述快速切入口被设置于金融终 端的内存中一连续空闲空间的开始位置,所述快速切入口用于根据所述内存申请指令快速 的分配对应的内存空间。
所述外部设备包括与金融终端进行数据交互的平台、服务器。金融终端接收外部 设备发送的内存申请指令,根据所述内存申请指令可以获得外部设备发送的内存申请数 据,获得所述内存申请数据的字节数。
步骤S220,判断所述快速切入口所在的连续空闲空间是否满足所述内存申请的需 求;
根据所述内存申请指令获得外部设备发送的内存申请数据,获得所述内存申请数 据的字节数,判断位于所述内存中所述快速切入口所在的连续空闲空间是否能够满足所述 内存申请数据的存储需求。所述连续空闲空间可以是整个内存空间。在具体实施中,整个内 存空间通过多次内存申请和内存释放会产生不同的连续空闲空间,因此连续空闲空间也可 以是整个内存空间中的其中一个连续空闲空间。如图12所示,金融终端一共进行了3次内存 申请和1次内存释放,通过3次内存申请和1次内存释放,产生了2个连续空闲空间,在下一次 内存申请中,所述连续空闲空间可以是这两个空闲空间的任意一个。连续空闲空间为整个 内存空间且足够大时,所述快速切入口位于整个内存空间的开始位置,这时整个内存空间 必然满足所述内存申请的需求。连续空闲空间为整个内存空间中的其中一个连续空闲空间 时,所述快速切入口位于该连续空闲空间的开始位置,这时需要判断该连续空闲空间是否 满足所述内存申请的需求。
步骤S230,若所述快速切入口所在的连续空闲空间满足所述内存申请的需求,则 将所述快速切入口所在的连续空闲空间进行分配,并在分配完成时,将所述快速切入口调 整到下一连续空闲空间的开始位置。
金融终端通过判断发现所述连续空闲空间满足所述内存申请的需求,则将所述快 速切入口所在的连续空闲空间进行分配,具体地,如果查到的连续空闲空间的分配空间 大小大于内存申请的空间大小,则会剩余部分分配空间,此时这剩余的分配空间则重新定 义为一连续的空闲空间,其开始位置设置对应的预设节点空间,该连续空闲空间的原来的 预设节点空间则作为已分配的空间的预设节点空间,此时该已分配的空间为占用空间。在 分配完成后,修改该占用空间的预设节点空间信息,包括修改其空间状态和下一空间开始 位置。如果查到的连续空闲空间的分配空间大小等于内存申请的空间大小,则只需修改 该空间中预设节点空间的空间状态。同时将快速切入口调整到下一连续空闲空间的开始位 置。
在本实施例中,假设一共进行3次内存申请和1次内存释放,如图11中的图1.0所 示,从图11可以看出第1次内存申请时,连续空闲空间为整个内存空间,分配的对应内存空 间为“占用1”,而“占用1”之后的内存空间为空闲空间,第1次内存申请结束后,快速切入口 调整到下一空闲空间的开始位置。第2次内存申请时,连续空闲空间为第1次内存申请后剩 余的内存空间,分配的对应内存空间为“占用2”(图中显示的是内存释放后的“空闲2”),而 “占用1”之后的空间为空闲空间,第2次内存申请结束后,快速切入口调整到空闲空间的开 始位置。第3次内存申请时,连续空闲空间为第2次内存申请后剩余的内存空间,分配的对应 内存空间为“占用3”,而“占用3”之后的空间为空闲空间,第3次内存申请结束后,快速切入 口调整到空闲空间的开始位置。这时金融终端对“占用2”进行释放获得“空闲2”,快速切入 口调整到“空闲2”的开始位置。如果这时进行内存申请,金融终端先判断“空闲2”是否满足 所述内存申请的需求,若满足所述内存申请的需求,则将“空闲2”进行分配获得相应的内存 空间,如图11中的图1.1所示,分配的内存空间为“占用”,而空闲空间为“空闲2.2”,这时快 速切入口调整到“空闲2.2”的开始位置。
由于内存的分配从开始端到结尾端,因此快速切入口从开始端往后移动,再回到 开始端,如此往复,可以保证快速切入口离分配空间较大的连续空闲空间较近,因此减少查 时间。
在本实施例中,本发明通过接收外部设备发送的内存申请指令;判断所述快速切 入口所在的连续空闲空间是否满足所述内存申请的需求;若所述快速切入口所在的连续空 闲空间满足所述内存申请的需求,则将所述快速切入口所在的连续空闲空间进行分配,并 在分配完成时,将所述快速切入口调整到下一连续空闲空间的开始位置。通过上述方式,金 融终端接收外部设备发送的内存申请指令,然后判断位于所述内存中所述快速切入口所在 的连续空闲空间是否满足所述内存申请的需求,若所述连续空闲空间满足所述内存申请的 需求,则分配对应的内存空间,在内存申请时不会进行多次的位移计算和位与计算,从而提 高数据的处理速率;同时,分配的内存空间刚好满足内存申请的需求,不会存在单次申请空 间过大的情况,从而提高内存的利用率。因此本发明能够提高数据的处理速率,提高内存的 利用率,从而降低金融终端的内存需求。
进一步地,参照图7,图7为本发明金融终端的内存分配方法第六实施例的流程示 意图。
基于上述实施例,步骤S220可以包括:
步骤S221,根据所述内存申请指令判断所述快速切入口所在的连续空闲空间中的 分配空间是否满足所述内存申请的需求;
本实施例中金融终端的内存包括占用空间和连续空闲空间,所述占用空间和所述 连续空闲空间分别包括预设节点空间,所述连续空闲空间还包括分配空间,所述节点空间 包括下一空间开始位置的地址、空间状态和上一空间开始位置的地址,使用过程中金融终 端的内存分布示意可以如图11所示,具体地,图11中图1.0内存包括占用空间1(图中标识为 占用1)、空闲空间2(图中标识为空闲2)、占用空间3(图中标识为占用3)和后续空间,其中各 个空间都包括预设节点空间,预设节点空间则包括下一空间开始位置的地址、空间状态和 上一空间开始位置的地址,本实施例中分别用next、tag和last表示,连续空闲空间还包括 分配空间,分配空间则为可分配,未被占用的空间。本实施例中为使用方便将预设节点空间 设置在各个空间的开端位置,该开端位置是按照内存中存储位置的先后为标准,先分配的 位置为前端,整个内存空间为一总线段。换而言之,本实施例中内存的管理结构采用节点线 段的方式,即各个空间则为总线段中的各个节点线段。
在终端开始使用时,整个内存空间为一连续空闲空间,整个内存空间通过多次内 存申请和内存释放会产生不同的连续空闲空间,如图12所示,金融终端一共进行了3次内存 申请和1次内存释放,通过3次内存申请和1次内存释放,产生了2个连续空闲空间,在下一次 内存申请中,所述连续空闲空间可以是这两个空闲空间的任意一个。
在接收内存申请时,根据所述内存申请指令判断所述快速切入口所在的连续空闲 空间中的分配空间是否满足所述内存申请的需求。
步骤S230包括:
步骤S231,若所述快速切入口所在的连续空闲空间中的分配空间满足所述内存申 请的需求,则根据所述内存申请指令分配所述快速切入口所在的连续空闲空间中的分配空 间,并修改所述快速切入口所在的连续空闲空间的预设节点空间中下一空间开始位置的地 址和空间状态;
步骤S232,将所述快速切入口调整到下一连续空闲空间的预设节点空间的开始位 置。
如果查到分配空间能够满足所述内存申请需求的连续空闲空间,则根据外部设 备发送的内存申请指令分配对应的内存空间,即按照内存申请的需求进行分配,具体地,如 果查到的连续空闲空间的分配空间大小大于内存申请的空间大小,则会剩余部分分配空 间,此时这剩余的分配空间则重新定义为一连续的空闲空间,其开始位置设置对应的预设 节点空间,该连续空闲空间的原来的预设节点空间则作为已分配的空间的预设节点空间, 此时该已分配的空间为占用空间。在分配完成后,修改该占用空间的预设节点空间信息,包 括修改其空间状态和下一空间开始位置。如果查到的连续空闲空间的分配空间大小等于 内存申请的空间大小,则只需修改该空间中预设节点空间的空间状态。
同时将快速切入口调整到下一连续空闲空间的预设节点空间的开始位置。
进一步地,步骤S230还可以包括:
若所述快速切入口所在的连续空闲空间中的分配空间不满足所述内存申请的需 求,则通过所述快速切入口所在的连续空闲空间的预设节点空间中的下一空间开始位置的 地址查下一连续空闲空间;
金融终端通过判断发现包括所述快速切入口的连续空闲空间不满足所述内存申 请的需求时,则查其它未分配的连续内存空间,判断其它未分配的连续内存空间是否满 足所述内存申请的需求。例如,如图11中的图1.0所示,如果“空闲2”的空间不满足所述内存 申请的需求时,则查“占用3”之后的空闲空间,判断“占用3”之后的空闲空间是否满足所 述内存申请的需求。
若所述下一连续空闲空间中的分配空间满足所述内存申请需求,则执行步骤 S231:根据所述内存申请指令分配所述连续空闲空间中的分配空间,并修改所述连续空闲 空间的预设节点空间中下一空间开始位置的地址和空间状态;
若所述下一连续空闲空间中的分配空间不能满足所述内存申请需求,则继续查 下一连续空闲空间,直至查到查到能够满足所述内存申请需求的连续空闲空间。
金融终端若所述下一连续空闲空间中的分配空间满足所述内存申请需求,则所述 快速切入口所在空间新建分配对应的内存空间,并在分配完成时,将所述快速切入口调整 到其它下一空闲空间的开始位置。例如,如图11中的图1.0和1.1所示,如果查到“空闲2” 满足所述内存申请的需求时,则将所述快速切入口调整到位于“空闲2”之前的位置,从所述 快速切入口处开始分配对应的内存空间,所分配的内存空间为“占用”,并将所述快速切入 口调整到“空闲2.2”的开始位置。如果没有到满足内存申请的空闲空间,则查下一连续 空闲空间,直至查到查到能够满足所述内存申请需求的连续空闲空间。
在内存空间全部查完后,金融终端没有查到满足内存申请需求的未分配的连 续内存空间,则判定所述内存申请失败,并向所述外部设备反馈所述内存申请失败的提示 信息。例如,如图11中图1.0所示,所述快速切入口位于“空闲2”之前,如果“空闲2”不满足所 述内存申请的需求且金融终端没有查到满足所述内存申请的其它连续空闲空间,则判定 所述内存申请失败,并向所述外部设备反馈所述内存申请失败的提示信息。
进一步地,参照图8,图8为本发明金融终端的内存分配方法第七实施例的流程示 意图。
基于上述实施例,所述金融终端的内存分配方法还包括:
步骤S240,判断被占用内存空间的数据是否已经被使用;
所述被占用的内存空间为金融终端进行内存申请并获得分配的内存空间,每过一 段时间,金融终端则判断被占用的内存空间的数据是否已经被使用。在具体实施中,所述被 占用的内存空间可以有多个。
步骤S250,若所述被占用内存空间的数据已被使用,则释放被占用的内存空间。
金融终端通过判断发现所述被占用内存空间的数据已被使用,则释放被占用的内 存空间。
具体地,参照图9,图9为图8中若所述被占用内存空间的数据已被使用,则释放被 占用的内存空间的细化流程示意图。
步骤S250可以包括:
步骤S251,获取被占用的内存空间的指针;
金融终端通过判断发现所述被占用内存空间的数据已被使用,则获取被占用的内 存空间的指针,所述指针用于标记被占用的内存空间。
步骤S252,对所述指针进行映射,获取所述占用空间中预设节点空间的开始位置 的地址;
步骤S253,根据所述开始位置的地址,将所述占用空间的预设节点空间中的空间 状态设置为空闲。
获取被占用内存空间的指针后,对所述被占用内存空间的指针进行映射,得到获 取所述占用空间中预设节点空间的开始位置的地址,并对释放的空间添加空闲标记,所述 空闲标记是为了标记空闲空间,即更改该空间的状态,从而方便整合相邻的空闲空间,将各 个零散的空闲空间合并成为一个空闲空间。进一步,参阅图10,金融终端的内存分配方法还 包括:
步骤S260,判断与所述释放空间相邻的下一内存空间的预设节点空间中的空间状 态是否为空闲;
步骤S270,若与所述释放空间相邻的下一内存空间的预设节点空间中的空间状态 为空闲,则将所述释放空间中的分配空间、与所述释放空间相邻的下一内存空间的预设节 点空间和与所述释放空间相邻的下一内存空间合并,并修改所述释放空间的预设节点空间 中的下一空间开始位置的地址和与所述释放空间相邻的下一空间中上一空间开始位置的 地址;
步骤S280,判断与所述释放空间相邻的上一内存空间的预设节点空间中的空间状 态是否为空闲;
步骤S290,若与所述释放空间相邻的上一内存空间的预设节点空间中的空间状态 为空闲,则将所述释放空间中的预设节点空间、分配空间,以及与所述释放空间相邻的上一 内存空间的分配空间合并,并修改与所述空闲空间相邻的上一内存空间的预设节点空间中 的下一空间开始位置的地址和与所述释放空间相邻的下一空间中上一空间开始位置的地 址。
在得到释放的内存空间后,判断与所述释放的空间相邻的内存空间是否存在空闲 标记,具体地,根据释放空间中预设节点空间中的下一空间存储的信息查到下一空间,然 后根据下一空间中的预设节点空间中的空间状态。如果通过判断发现与所述释放的空间相 邻的内存空间存在空闲标记,则将所述释放的空间和所述相邻的内存空间连接合并,使其 成为一个空闲空间,便于下次内存申请使用。具体地,将所述释放空间中的分配空间、与所 述释放空间相邻的下一内存空间的预设节点空间和与所述释放空间相邻的下一内存空间 合并,并修改所述释放空间的预设节点空间中的下一空间开始位置的地址与所述释放空间 相邻的下一空间中上一空间开始位置的地址,即将该释放空间中分配空间和与该释放空间 相邻的下一空间中的预设节点空间、分配空间合并,并将更新合并后的空间中的预设节点 空间中的下一空间开始位置的地址。
然后判断与所述释放空间相邻的上一内存空间的预设节点空间中的空间状态是 否为空闲;若与所述释放空间相邻的上一内存空间的预设节点空间中的空间状态为空闲, 则将所述释放空间中的预设节点空间、分配空间,以及与所述释放空间相邻的上一内存空 间的分配空间合并,并修改与所述释放空间相邻的上一内存空间的预设节点空间中的下一 空间开始位置的地址与所述释放空间相邻的下一空间中上一空间开始位置的地址,即将该 释放空间中的预设节点空间、分配空间和与该释放空间相邻的上一空间中的分配空间合 并,并将更新合并后的空间中的预设节点空间中的下一空间开始位置的地址。
通过上述描述可知本实施例中先与后面的空闲空间合并,再与前一相邻的空闲空 间合并,以尽可能优先获得最大的空闲空间。
例如,图11中的图1.0-图2.0空间分配和空间合并的过程,假设快速切入口IQ位于 名为“空闲2”的开始位置,则在接收到内存申请时,判断空闲2是否满足内存申请需求,如果 能够满足,则在空闲2中分配对应的空间,并将空闲2中未分配的空间按照预设规则新建一 空间,名为空闲2.2,如图1.1所示;图1.1至图2.0则可以表示名称为占用3的空间中数据被 释放,然后与其他空间合并的过程示意图,具体地,在占用3被释放时,判断到与占用3相邻 的下一空间为空闲,此时,将占用3中的分配空间和与占用3相邻的下一空间的预设节点空 间、分配空间合并,并修改合并后空间中的预设节点空间中信息。
如果判断到与占用3相邻的上一空间也为空闲,则将合并后的空间在与名称空闲 2.2的空间合并,具体地,金融终端通过判断发现“占用3”的数据已被使用,则获取“占用3” 的指针,获取“占用3”的指针后,对所述“占用3”的指针进行映射,得到“占用3”所在空间的 开始位置的地址,如图中所示中空闲2末端箭头所在的位置,对释放的空间添加空闲标记, 即将“占用3”中预设节点空间中的tag中信息设置为false。在得到释放的空间后,根据“占 用3”中预设节点空间中的下一空间开始位置的地址到下一空间,然后根据下一空间中的 预设节点空间状态tag判断与所述释放的空间相邻的下一内存空间是否为空闲空间,如果 是,则合并占用3和相邻的后续空闲空间,然后再判断到与占用3的空间相邻的上一空间:空 闲2.2也是空闲,则继续合并,最后得到“占用3”、“空闲2.2”和“空闲......”合并成一个空 闲空间。
本发明进一步提供一种金融终端的内存分配装置。
参照图13,图13为本发明金融终端的内存分配装置第一实施例的功能模块示意 图。
在本实施例中,所述金融终端的内存包括占用空间和连续空闲空间,所述占用空 间和所述连续空闲空间分别包括预设节点空间,所述连续空闲空间还包括分配空间,所述 节点空间包括下一空间开始位置的地址、空间状态和上一空间开始位置的地址,所述内存 分配装置包括:
第一接收模块110,用于接收外部设备发送的内存申请指令;
第一查模块120,用于根据所述内存申请指令和预设节点空间中的信息从所述 内存中查能够满足所述内存申请的需求的连续空闲空间;
第一分配模块130,用于若查到分配空间能够满足所述内存申请需求的连续空 闲空间,则根据所述内存申请指令分配所述连续空闲空间中对应的分配空间,并修改所述 连续空闲空间的预设节点空间中下一空间开始位置的地址和空间状态。
继续参阅图13,为进一步提高查速率,所述金融终端的内存中设置有快速切入 口,所述快速切入口设置在一连续空闲空间的开始位置,所述第一查模块120还用于根据 所述内存申请指令和预设节点空间中的信息从所述快速切入口所在的连续空闲空间开始 查能够满足所述内存申请需求的连续空闲空间;
具体地,所述第一查模块120包括:
第一判断单元121,用于判断所述快速切入口所在的连续空闲空间中的分配空间 是否能够满足所述内存申请的需求;
第一查单元122,用于若所述快速切入口所在的连续空闲空间中的分配空间不 能满足所述内存申请需求,则根据节点空间包括下一空间开始位置的地址判断下一连续空 闲空间是否能够满足所述内存申请的需求,直至查到查到能够满足所述内存申请需求的 连续空闲空间。
所述第一分配模块130还用于将所述快速切入口调整到下一连续空闲空间中预设 节点空间的开始位置。
参阅图14,图14为本发明金融终端的内存分配装置第二实施例的功能模块示意 图。
基于为本发明金融终端的内存分配装置上述实施例,该内存分配装置还包括:
第一判断模块140,用于判断占用空间中的数据是否已经被使用;
第一释放模块150,用于若所述占用空间的中数据已被使用,则释放所述占用空 间。
具体的,所述第一释放模块150包括:
第一获取单元151用于获取数据已被使用的占用空间的指针;
第一映射单元152,用于对所述指针进行映射,获取所述占用空间中预设节点空间 的开始位置的地址;
第一释放单元153,用于根据所述开始位置的地址,将所述占用空间的预设节点空 间中的空间状态设置为空闲。
参阅图15,图15为本发明金融终端的内存分配装置第三实施例的功能模块示意 图。
基于为本发明金融终端的内存分配装置上述实施例,为方便理解本实施例中将释 放的占用空间定义为释放空间,所述内存分配装置还包括:
第二判断模块160,用于判断与所述释放空间相邻的下一内存空间的预设节点空 间中的空间状态是否为空闲;
第一合并模块170,用于若与所述释放空间相邻的下一内存空间的预设节点空间 中的空间状态为空闲,则将所述释放空间中的分配空间、与所述释放空间相邻的下一内存 空间的预设节点空间和与所述释放空间相邻的下一内存空间合并,并修改所述释放空间的 预设节点空间中的下一空间开始位置的地址和与所述释放空间相邻的下一空间中上一空 间开始位置的地址;
第三判断模块180,用于判断与所述释放空间相邻的上一内存空间的预设节点空 间中的空间状态是否为空闲;
第二合并模块190,用于若与所述释放空间相邻的上一内存空间的预设节点空间 中的空间状态为空闲,则将所述释放空间中的预设节点空间、分配空间,以及与所述释放空 间相邻的上一内存空间的分配空间合并,并修改与所述空闲空间相邻的上一内存空间的预 设节点空间中的下一空间开始位置的地址和与所述释放空间相邻的下一空间中上一空间 开始位置的地址。
本发明进一步提供一种金融终端的内存分配装置。
参阅图16,图16为本发明金融终端的内存分配装置第四实施例的功能模块示意 图。
所述金融终端的内存包括快速切入口,所述快速切入口设置在所述金融终端的内 存中一连续空闲空间的开始位置,所述金融终端的内存分配装置包括:
第二接收模块210,用于接收外部设备发送的内存申请指令;
第四判断模块220,用于判断位于所述内存中包括所述快速切入口所在的连续空 闲空间是否满足所述内存申请的需求;
第二分配模230,用于若所述快速切入口所在的连续空闲空间满足所述内存申请 的需求,则将所述快速切入口所在的连续空闲空间进行分配,并将所述快速切入口调整到 下一连续空闲空间的开始位置。
继续参阅图16,所述金融终端的内存还包括占用空间,所述占用空间和连续空闲 空间包括预设节点空间,所述连续空闲空间还包括分配空间,所述节点空间包括下一空间 开始位置的地址、空间状态和上一空间开始位置的地址,
所述第四判断模块220还用于根据所述内存申请指令判断所述快速切入口所在的 连续空闲空间中的分配空间是否满足所述内存申请的需求;
所述第二分配模块230还用于若所述快速切入口所在的连续空闲空间中的分配空 间满足所述内存申请的需求,则根据所述内存申请指令分配所述快速切入口所在的连续空 闲空间中的分配空间,并修改所述快速切入口所在的连续空闲空间的预设节点空间中下一 空间开始位置的地址和空间状态;将所述快速切入口调整到下一连续空闲空间的预设节点 空间的开始位置。
参阅图17,图17本发明金融终端的内存分配装置第五实施例的功能模块示意图。
基于为本发明金融终端的内存分配装置上述实施例,所述内存分配装置还包括:
第二查模块240,用于若所述快速切入口所在的连续空闲空间中的分配空间不 满足所述内存申请的需求,则通过所述快速切入口所在的连续空闲空间的预设节点空间中 的下一空间开始位置的地址查下一连续空闲空间;
所述第二分配模块230还用于若所述下一连续空闲空间中的分配空间满足所述内 存申请需求,则执行步骤:根据所述内存申请指令分配所述连续空闲空间中的分配空间,并 修改所述连续空闲空间的预设节点空间中下一空间开始位置的地址和空间状态;
所述第二查模块240还用于若所述下一连续空闲空间中的分配空间不能满足所 述内存申请需求,则继续查下一连续空闲空间,直至查到查到能够满足所述内存申请 需求的连续空闲空间。
参阅图18,图18本发明金融终端的内存分配装置第六实施例的功能模块示意图。
基于上述实施例,所述金融终端的内存分配装置还包括:
第五判断模块250,用于判断被占用的内存空间的数据是否已经被使用;
第二释放模块260,用于若所述被占用的内存空间的数据已被使用,则释放被占用 的内存空间。
具体地,所述第二释放模块260包括:
第二获取单元261,用于获取被占用的内存空间的指针;
第二映射单元262,用于对所述指针进行映射,获取所述占用空间中预设节点空间 的开始位置的地址;
第二释放单元263,用于根据所述开始位置的地址,将所述占用空间的预设节点空 间中的空间状态设置为空闲。
参阅图19,图19本发明金融终端的内存分配装置第七实施例的功能模块示意图。
基于上述实施例,为方便描述本实施例中将释放的占用空间定义为释放空间,所 述金融终端的内存分配装置还包括:
第六判断模块270,用于判断与释放空间相邻的下一内存空间的预设节点空间中 的空间状态是否为空闲;
第三合并模块280,用于若与所述释放空间相邻的下一内存空间的预设节点空间 中的空间状态为空闲,则将所述释放空间中的分配空间、与所述释放空间相邻的下一内存 空间的预设节点空间和与所述释放空间相邻的下一内存空间连接合并,并修改所述释放空 间的预设节点空间中的下一空间开始位置的地址和与所述释放空间相邻的下一空间中上 一空间开始位置的地址;
第七判断模块290,用于判断与所述释放空间相邻的上一内存空间的预设节点空 间中的空间状态是否为空闲;
第四合并模块291,用于若与所述释放空间相邻的上一内存空间的预设节点空间 中的空间状态为空闲,则将所述释放空间中的预设节点空间、与所述空闲空间相邻的上一 内存空间的分配空间连接合并,并修改与所述空闲空间相邻的上一内存空间的预设节点空 间中的下一空间开始位置的地址和与所述释放空间相邻的下一空间中上一空间开始位置 的地址。
本发明金融终端的内存分配装置中各个模块与上述方法实施例中各步骤相对应, 各个的功能和实现过程在此处不再一一赘述。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发 明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技 术领域,均同理包括在本发明的专利保护范围内。
本文发布于:2023-04-13 11:21:47,感谢您对本站的认可!
本文链接:https://patent.en369.cn/patent/2/85525.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |