[发明专利]融合Linux虚拟内存系统和文件系统的持久性内存统一管理方法有效
申请号: | 202110489809.5 | 申请日: | 2021-04-30 |
公开(公告)号: | CN113254198B | 公开(公告)日: | 2022-08-05 |
发明(设计)人: | 王刚;赵盛;张佳辰;胡泽瑞;刘晓光 | 申请(专利权)人: | 南开大学 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F9/54 |
代理公司: | 天津创智睿诚知识产权代理有限公司 12251 | 代理人: | 王海滨 |
地址: | 300350*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 融合 linux 虚拟内存 系统 文件系统 持久性 内存 统一管理 方法 | ||
1.一种融合Linux虚拟内存系统和文件系统的持久性内存统一管理方法,其特征在于:将存储资源分为普通文件与内存文件,并统一普通文件与内存文件的分配方式,进程的内存页框与文件块处于同一地址空间;
所述普通文件支持直接读写操作,内存文件不支持直接读写操作,支持被映射到进程的虚拟内存地址空间;内存文件所管理的文件块被用户进程用作易失内存使用;内存文件块和普通文件块的分配和释放都依赖于Linux内核的Ext4-DAX文件系统的块分配器;
内存分配和释放:进程对内存页框的匿名映射被修改为对PM数据块的映射,并通过文件预扩展策略与异步块回收策略优化内存分配效率;其中,所述文件预扩展策略是在进程申请内存时,若内存文件总长度减去已分配的部分不足以满足本次分配需求,则以大于本次分配需求的单元对内存文件进行扩展,满足本次内存分配需求的同时为之后的分配预留空间;若之前预先扩展的部分满足本次需求,则直接分配,以降低分配延迟;所述异步块回收策略是利用Linux内核现有的workqueue延后执行机制,创建了一个用于内存文件块回收的后台任务队列,释放操作委托给后台线程延后处理的策略提升系统的整体性能;
零拷贝读写:系统的文件读写采用从用户缓冲区的虚拟地址到目标文件块物理地址的重映射操作,以消除不必要的数据拷贝。
2.根据权利要求1所述的方法,其特征在于:在用户进程申请内存时,从进程对应的内存文件末端进行扩展并将新扩展的部分映射到用户地址空间并返回这个地址;
在用户进程释放内存时,首先会删除对应的虚拟映射区,然后调用ext4_punch_hole,利用文件系统的文件打洞特性将该虚拟映射区对应的内存文件块回收。
3.根据权利要求1所述的方法,其特征在于:在进程启动时为其创建内存文件,进程对内存的申请和释放会导致内存文件对文件系统块的申请和释放,其所占的文件块数也随之增加或者减小。
4.根据权利要求2所述的方法,其特征在于:PM分别用作内外存的两种模式在单个PM分区中的共存。
5.根据权利要求1所述的方法,其特征在于:在进程读普通文件时,缓冲区所在的虚拟地址被通过传入MAP_FIXED参数的vm_mmap被重新映射到目标普通文件的文件块上,新的映射区通过MAP_PRIVATE保证映射区的只读属性;
在进程写普通文件时,首先找到buffer所对应的内存文件和偏移量,然后利用Ext4-DAX所实现的块交换功能,调用ext4_swap_extents将缓冲区对应的内存文件块交换到被写入的普通文件中,再将缓冲区虚拟地址通过带MAP_PRIVATE和MAP_FIXED的vm_mmap函数以只读方式重映射到刚交换的普通文件块上,最终将交换到内存文件中的数据块释放。
6.根据权利要求5所述的方法,其特征在于:对文件读写所产生的重映射缓冲区加入只读权限,以保证读写系统调用的原始语义;
当重映射导致的共享区域通过虚拟地址被修改,或通过文件写调用被修改时,系统会进行写时拷贝和二次映射,将原本共享的文件块分为两份,来保证数据的完整性。
7.根据权利要求6所述的方法,其特征在于:进程的内存由内存文件所管理,当子进程以fork方式被创建后,会以只读方式共享内存区段,内核会在相关区域被修改前先进行拷贝,来打破这一区域在多个进程之间的共享,即进行内存文件的文件拷贝和对新文件的映射。
8.一种计算机可读存储介质,其特征在于,存储有计算机程序,所述计算机程序被执行时实现如权利要求1至7中任一项所述的方法的步骤。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南开大学,未经南开大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110489809.5/1.html,转载请声明来源钻瓜专利网。
- 上一篇:芯体成型装置
- 下一篇:交叉口共享自动驾驶车道的信号控制方法及系统