[发明专利]一种基于JVM的磁盘直接I/O访问的方法有效
申请号: | 201710112761.X | 申请日: | 2017-02-28 |
公开(公告)号: | CN106909441B | 公开(公告)日: | 2020-10-02 |
发明(设计)人: | 陈涛;褚一帆 | 申请(专利权)人: | 焦点科技股份有限公司 |
主分类号: | G06F9/455 | 分类号: | G06F9/455 |
代理公司: | 南京瑞弘专利商标事务所(普通合伙) 32249 | 代理人: | 陈建和 |
地址: | 210003 江苏省南京市高新*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 jvm 磁盘 直接 访问 方法 | ||
1.一种基于JVM的磁盘直接I/O访问方法,其特征在于,配置提供文件操作函数的API层、屏蔽操作系统文件系统访问差异的适配层、支持多种类编程语言转换的语言转换层、执行访问磁盘操作的直接调用I/O层,实现支持任何一种操作语言能跨越操作系统的页面高速缓存,获得直接操纵磁盘文件的能力;
在物理磁盘之上,基于系统架构层原始的结构,包括API层、适配层、语言转换层和直接调用I/O层,在相应的层结构上构建文件操作接口函数、文件操作指令语言转换接口函数、及直接访问磁盘接口函数;
层结构部署完毕后,写入数据请求,并根据请求内容直接访问磁盘,步骤包括:
步骤1:调用API层的文件打开函数,传入文件操作指令中的文件路径名参数,返回文件句柄fd;所述文件句柄是指操作系统为每一个文件分配的唯一标识,文件操作指令能通过文件句柄操作文件;在创建文件操作时,通过设置操作系统使用文件直接I/O访问的属性,使操作系统具备文件直接I/O访问能力;
步骤2:调用API层的文件读取函数或文件写入函数,提供传入文件句柄fd、文件偏移量offset、长度len、内存缓冲区buffer的参数;
步骤3:适配层读取当前运行的操作系统的配置信息,并根据配置信息判断该操作系统的类型,进而通过利用JVM的功能特性,调用预存在语言转换层中与操作系统对应的语言转换函数,将文件操作函数转换为当前操作系统能识别的语言,使文件操作指令能在当前操作系统内执行;
若不能根据当前运行的操作系统,找到相匹配的语言转换函数,则提示“不支持本操作系统”的错误标识;
步骤4:经语言转换层后的文件操作指令直接对磁盘进行操作:通过提前在磁盘区内设置文件操作指令对应的文件指针,并根据文件偏移量offset,将文件指针移动至距离文件开始位置为文件偏移量offset的地方;同时,提前在内存缓冲区中设置文件指针,并根据文件偏移量offset,将文件指针移动至距离文件开始位置为文件偏移量offset的地方;
步骤5:根据文件操作指令的内容,判定文件是读操作还是写操作,并按照文件内容所占字节数读取或写入相应数据量的数据;
若文件操作是读操作,则从磁盘区内文件指针当前位置开始,读取字节数为len的磁盘数据,传至内存缓存区中;
若文件操作是写操作,则从内存缓冲区内文件指针当前位置开始,读取字节数为len的缓冲数据,传至硬盘区中;
步骤6:文件读操作或写操作结束后,调用API层的关闭文件接口函数,传入文件句柄fd,关闭文件。
2.根据权利要求1所述的一种基于JVM的磁盘直接I/O访问方法,其特征在于,所述API层中构建文件操作指令应用于磁盘直接访问的打开文件接口函数、关闭文件接口函数、读取文件接口函数、写入文件接口函数,提供负责文件的打开、文件的关闭、文件的读和写;接口函数基于JVM语言编写;
所述适配层根据当前运行的操作系统,利用JVM的功能特性,选择适合当前操作系统的语言转换接口函数,使文件操作指令适应于当前操作系统,屏蔽因不同操作系统需要不同操作语言的差异性;
所述语言转换层按照转换后的文件操作语言,提供实现适应于当前操作系统的文件操作函数,用于之后执行具体的磁盘文件直接读写操作;
所述直接调用I/O层按照当前运行的操作系统,提供该操作系统的系统调用,直接访问磁盘。
3.根据权利要求1所述的一种基于JVM的磁盘直接I/O访问方法,其特征在于,所述API层、适配层、语言转换层及直接调用I/O层,每一个层结构也能是具有相似功能的功能模块。
4.根据权利要求1所述的一种基于JVM的磁盘直接I/O访问方法,其特征在于,步骤2中所述文件偏移量offset是指文件操作指令操作文件中数据的起始位置;所述长度len是指文件操作指令的操作文件中数据的字节数;所述内存缓冲区buffer:文件读取时,是指用来存放读取数据的内存区域;文件写入时,是指用来存放待写入数据的内存区域。
5.根据权利要求1所述的一种基于JVM的磁盘直接I/O访问方法,其特征在于,在步骤5中,针对所述内存缓冲区的内存地址,应按照操作系统内存分页大小,调整为内存分页大小的整数倍,以保持内存缓冲区与内存分页的对齐。
6.根据权利要求1所述的一种基于JVM的磁盘直接I/O访问方法,其特征在于,在步骤5中,针对所述磁盘区读写的字节数,应按照磁盘扇区大小,调整为磁盘扇区大小的整数倍,以保持内存缓冲区与扇区的对齐。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于焦点科技股份有限公司,未经焦点科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710112761.X/1.html,转载请声明来源钻瓜专利网。