买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明公布】基于乐观批处理的无锁数据结构内存回收方法_西安电子科技大学_202310965496.5 

申请/专利权人:西安电子科技大学

申请日:2023-08-02

公开(公告)日:2023-10-27

公开(公告)号:CN116954921A

主分类号:G06F9/50

分类号:G06F9/50;G06F9/54

优先权:

专利状态码:在审-实质审查的生效

法律状态:2023.11.14#实质审查的生效;2023.10.27#公开

摘要:本发明公开了一种基于乐观批处理的无锁数据结构内存回收方法,主要解决现有内存回收方案无法在保证无锁进度的同时利用多核处理器确保系统高效运行的问题。其实现方案包括:采用全局周期计数器记录线程所处周期,并记录每个内存对象的生命周期,共同确定内存对象能否安全回收;构建包括准备池、暂存池和处理池的对象池组;工作线程执行插入或删除操作,批次回收当前暂存池中的所有内存对象,用于下一次分配;其他并发线程直接读取数据结构中的内存对象,并通过乐观批处理警示器保证回收操作的安全性。本发明能在提供无锁进度保证的前提下,降低数据结构的性能开销,提高处理器的使用效率,可用于集成多处理单元的多核机器,保证其高性能运行。

主权项:1.一种基于乐观批处理的无锁数据结构内存回收方法,其特征在于,包括如下步骤:1创建一个包括乐观批处理警示器、追踪器、全局周期记录器、分配器和回收器的链式无锁数据结构;2创建与线程数相等的对象池组,每个线程的对象池组包括准备池、暂存池和处理池;3为每个对象池组中的准备池执行初始化操作;4根据该无锁数据结构使用者的业务需求创建数个工作线程,由每个线程持续对无锁数据结构执行删除或插入操作,对于其中每一次操作,首先判断线程所要执行的操作:如果是插入操作,则判断能否从与其对应的对象池中获取内存对象:若可以获得,即准备池非空,则跳转到步骤7;若不能获得,即准备池为空,则执行步骤5;如果是删除操作,则直接执行删除操作,并判断用户是否显式指定回收或达到回收阈值:若用户显式指定回收或达到回收阈值,则执行步骤5;若用户未显式指定且未达到回收阈值,则跳转到步骤7;5根据线程对应的对象池的状态,确定是否执行内存回收操作:如果线程对应的准备池内存充足,则无需触发内存回收操作;如果线程对应的准备池中没有可供分配的对象、或暂存池中对象数量达到回收阈值时,则触发该线程的回收操作,将暂存池中所有内存对象移入处理池,执行步骤6;如果线程主动请求回收内存或达到回收阈值时,则触发内存回收操作,将暂存池中所有内存对象移入处理池,执行步骤6;6对线程对象池组进行垃圾回收:6a调用追踪器,记录所有线程所处周期,得到所有线程中所处周期最小的线程周期Rlow和所处周期最大的线程周期Rhigh,即线程所处范围R=[Rlow,Rhigh];6b调用乐观批处理警示器,将所有线程的回收标志置为真,以表示某个线程触发了内存回收操作;当其他线程读到对应的标志为真时,将回滚未完成的操作并重新执行;6c取出最先被加入处理池的对象,根据插入时记录的插入周期和逻辑删除时记录的删除周期获取其生命周期6d根据生命周期E判断该内存对象是否可以安全回收:如果内存对象生命周期为空,则可安全回收该内存对象,将该内存对象直接移入准备池;如果即内存对象的生命周期E与线程所处范围R没有任何交集,也可安全回收该内存对象,将其移入准备池;否则,暂时不能安全回收该内存对象,并将其移入暂存池,等待下个阶段处理;6e判断处理池是否为空:如果处理池非空,则返回6c;如果处理池为空,则垃圾回收操作完成,执行步骤7;7根据无锁数据结构所执行的插入或删除操作,判断后续所要执行的操作:如果无锁数据结构执行插入操作,则线程先从与其对应的对象池中获取内存对象,并将该内存对象插入无锁数据结构,再返回步骤4等待下一次插入或删除操作;如果无锁数据结构执行删除操作,则直接返回步骤4等待下一次插入或删除操作。

全文数据:

权利要求:

百度查询: 西安电子科技大学 基于乐观批处理的无锁数据结构内存回收方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。