[发明专利]一种基于持久性内存的跳表结构及其访问方法在审
申请号: | 202310057625.0 | 申请日: | 2023-01-18 |
公开(公告)号: | CN116048408A | 公开(公告)日: | 2023-05-02 |
发明(设计)人: | 吴嘉豪;黄忠东 | 申请(专利权)人: | 浙江大学 |
主分类号: | G06F3/06 | 分类号: | G06F3/06 |
代理公司: | 杭州求是专利事务所有限公司 33200 | 代理人: | 邱启旺 |
地址: | 310058 浙江*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 持久性 内存 结构 及其 访问 方法 | ||
1.一种基于持久性内存的跳表结构,其特征在于,将跳表的最底层链表数据存储到持久性内存上,而其余的上层链表存储到易失性内存上,构成一种基于持久性内存的跳表结构。
2.根据权利要求1所述的一种基于持久性内存的跳表结构,其特征在于,所述跳表的最底层链表的节点存储在一个能容纳多个节点空间的块上。
3.根据权利要求1所述的一种基于持久性内存的跳表结构,其特征在于,所述跳表的最底层链表在持久性内存上的布局分为5个部分,分别为:元数据区、bitmap区、日志区、空闲队列区和数据区。
4.根据权利要求3所述的一种基于持久性内存的跳表结构,其特征在于,所述元数据区用于记录单个数据的大小,bitmap区、日志区、空闲队列区和数据区的起始地址,元数据区、bitmap区、日志区、空闲队列区和数据区的大小,块大小的元数据。
5.根据权利要求3所述的一种基于持久性内存的跳表结构,其特征在于,所述bitmap区用于标记数据区的各个块的各个数据是否被使用。
6.根据权利要求3所述的一种基于持久性内存的跳表结构,其特征在于,所述日志区中存储操作的日志,用于在故障恢复时保证数据的一致性。
7.根据权利要求3所述的一种基于持久性内存的跳表结构,其特征在于,所述空闲队列区用于管理删除数据后被标记空闲的数据块。
8.根据权利要求3所述的一种基于持久性内存的跳表结构,其特征在于,所述数据区包含多个数据块,每个数据块包含多个数据;所述数据区包含已使用的文件和未使用的文件;所述已使用的文件和未使用的文件的边界用一个指针unused_ptr来标识。
9.一种基于权利要求1-8任一项所述的一种基于持久性内存的跳表结构的访问方法,其特征在于,包括插入数据、删除数据和空闲空间管理步骤;
所述插入数据的步骤为:先通过易失性内存上的链表查找到最底层链表中第一个小于插入数据的节点,根据所述第一个小于插入数据的节点对应的bitmap位判断其所属块是否有空闲空间;若有,则选择所述的所属块准备插入数据,否则需要分配一个新的块;所述新的块优先从空闲队列区中获取,若空闲队列区存在空闲块,则取出,并更新空闲队列区的下一个读位置,若空闲队列区不存在空闲块,则从空闲队列区中分配一个新的块;分配好块后,将数据插入到所述分配好的块中,并且设置bitmap对应位为1;之后更新数据的指针,完成插入数据操作;
所述删除数据的步骤为:在跳表中查找待删除数据的地址,如果没找到,则结束操作,如果找到,则在数据所属块上将其删除,并且将bitmap上对应位设置为0;判断所述数据所属块是否所有数据都被清空,若是,则将所述数据所属块块添加到空闲队列区,否则结束操作;
所述空闲空间管理包括空闲块队列和数据区的未使用部分;
获取一个空闲块的步骤为:首先判断空闲队列区是否为空,若不为空,则从空闲队列区中取出一个空闲块并返回,若为空,则从数据区的未使用部分获取一个空闲块,然后更新unused_ptr指针,指向最新的未使用部分的起始位置。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江大学,未经浙江大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202310057625.0/1.html,转载请声明来源钻瓜专利网。