[发明专利]一种文件加载方法和装置有效
申请号: | 201610399257.8 | 申请日: | 2016-06-07 |
公开(公告)号: | CN107480150B | 公开(公告)日: | 2020-12-08 |
发明(设计)人: | 黄硕;刘俊峰;姚文辉;朱家稷 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F16/172 | 分类号: | G06F16/172;G06F16/182 |
代理公司: | 北京安信方达知识产权代理有限公司 11262 | 代理人: | 解婷婷;龙洪 |
地址: | 英属开曼群岛大开*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 文件 加载 方法 装置 | ||
1.一种文件加载方法,应用于文件加载装置,包括:
建立磁盘文件的内存映射文件,从所述内存映射文件中顺序读取数据,且向操作系统多次发送预读取通知,每次通知所述操作系统将所述磁盘文件中指定位置和指定数据量的数据预读取到所述内存映射文件对应的内存中;
按照数据的存储格式,将从所述内存映射文件读取的数据存储到内存最终的数据结构中。
2.如权利要求1所述的方法,包括:
所述向操作系统多次发送预读取通知,包括:
从所述内存映射文件中顺序读取数据时,每次数据读取位置到达设定的预读位置时,向所述操作系统发送一次预读取通知。
3.如权利要求2所述的方法,包括:
所述预读位置按照以下方式逐次设定:
每次数据读取位置到达最近一次设定的预读位置时,向所述操作系统发送一次预读取通知,并对预读位置进行重新设定,重新设定的预读位置在所述操作系统根据此次预读取通知所预读取的数据在所述内存映射文件中的结束位置之前。
4.如权利要求3所述的方法,包括:
所述重新设定的预读位置根据下式确定:
Pa=Pb+Ps
其中,Pa为重新设定的预读位置;Pb为所述指定位置,Pb等于当前的数据读取位置或最近一次设定的预读位置;Ps等于所述指定数据量减去指定的预读提前量得到的差。
5.如权利要求3或4所述的方法,包括:
所述方法还包括:
记录最近三次设定的预读位置并不断更新;每次数据读取位置到达最近一次设定的预读位置时,在对预读位置进行重新设定之前,通知所述操作系统对最近三次设定的预读位置中前两次设定的预读位置之间的内存区域进行清理。
6.如权利要求1-4中任一所述的方法,包括:
所述指定数据量小于等于M/2+AHEAD且大于等于M/2,其中,M为用户指定的最大内存占用量,AHEAD为用户指定的预读提前量。
7.如权利要求1-4中任一所述的方法,其特征在于:
按照数据的存储格式,将从所述内存映射文件读取的数据存储到内存最终的数据结构中,包括:
每次从所述内存映射文件读取数据后,判断读取的所述数据的数据量是否小于所述磁盘文件压缩块解压后的最小数据量:
如果是,按照数据的存储格式,将读取的所述数据存储到最终的内存数据结构中;
如果否,先以多线程和异步的方式对读取的所述数据进行解压缩,再按照数据的存储格式将解压后的数据存储到最终的内存数据结构中。
8.如权利要求1-4中任一所述的方法,其特征在于:
所述磁盘文件是分布式文件系统的元数据内存映像文件。
9.一种文件加载装置,其特征在于,包括数据加载模块、文件读取模块和内存管理模块,其中:
所述数据加载模块,用于不断向所述文件读取模块发起读取请求,按照数据的存储格式,将得到的数据存储到内存最终的数据结构中;
所述文件读取模块,用于建立磁盘文件的内存映射文件,接受所述数据加载模块的读取请求,从所述内存映射文件中顺序读取数据,并触发所述内存管理模块进行内存管理;
所述内存管理模块,用于进行内存管理,所述内存管理包括:向操作系统多次发送预读取通知,每次通知所述操作系统将所述磁盘文件中指定位置和指定数据量的数据预读取到所述内存映射文件对应的内存中。
10.如权利要求9所述的装置,其特征在于:
所述内存管理模块向操作系统多次发送预读取通知,包括:从所述内存映射文件中顺序读取数据时,每次数据读取位置到达设定的预读位置时,向所述操作系统发送一次预读取通知。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610399257.8/1.html,转载请声明来源钻瓜专利网。
- 上一篇:问答系统中的答案提供方法及装置
- 下一篇:一种跨平台的互联文档ID生成方法