基于单数据库和单文件的进程内虚拟文件系统的制作方法

文档序号:6537397阅读:163来源:国知局
基于单数据库和单文件的进程内虚拟文件系统的制作方法
【专利摘要】本发明公开了一种基于单数据库和单文件的进程内虚拟文件系统,基于单数据库和单文件的进程内虚拟文件系统建立在一原生操作系统上,应用于单个应用程序进程内部的一个或多个线程,原生操作系统提供一数据库、在数据库之外的一原生文件,以及原生系统接口层;数据库包括访问接口,原生文件包括读写接口;其中,数据库及访问接口存取虚拟文件的结构和数据块信息,原生文件及读写接口存取虚拟文件的数据内容;基于单数据库和单文件的进程内虚拟文件系统通过原生系统接口层调用访问接口以及读写接口,完成虚拟文件系统的功能。
【专利说明】基于单数据库和单文件的进程内虚拟文件系统
【技术领域】
[0001]本发明涉及计算机数据处理【技术领域】,特别涉及一种基于单数据库和单文件的进程内虚拟文件系统。
【背景技术】
[0002]文件系统的作用是实现二进制化数据的存储功能。目前的文件系统多种多样,最为常见的当属FAT/NTFS/EXT文件系统。不同的文件系统具有不同的优点和缺点,使用者可根据实际情况进行选择,或者在一个操作系统上设置多个文件系统。
[0003]然而,不同的操作系统使用的文件目录名称规则大不相同,大部分程序在不同的文件系统间移植时,需要协调不同操作系统的文件目录名称的差异才能正常使用,非常不便。更复杂的是各类模拟器程序,如虚拟机等,在解决原生操作系统文件目录差异的基础上,还需要为程序内部提供虚拟的目标文件系统支持。

【发明内容】

[0004]本发明针对现有技术存在的上述不足,提供了一种基于单数据库和单文件的进程内虚拟文件系统。本发明通过以下技术方案实现:
[0005]一种基于单数据库和单文件的进程内虚拟文件系统,基于单数据库和单文件的进程内虚拟文件系统建立在一原生操作系统上,应用于单个应用程序进程内部的一个或多个线程,原生操作系统提供一数据库、在数据库之外的一原生文件,以及原生系统接口层;
[0006]数据库包括访问接口,原生文件包括读写接口 ;
[0007]其中,数据库及访问接口存取虚拟文件的结构和数据块信息,原生文件及读写接口存取虚拟文件的数据内容;基于单数据库和单文件的进程内虚拟文件系统通过原生系统接口层调用访问接口以及读写接口,完成虚拟文件系统的功能。
[0008]较佳的,数据库中存取:
[0009]虚拟目录和文件信息表,用以存取虚拟文件和文件的结构信息;
[0010]虚拟文件数据块表,用以存取存储在原生文件中的虚拟文件的数据块位置;以及[0011 ] 原生文件的空白块表,用以存取原生文件中空白块的位置。
[0012]较佳的,虚拟目录和文件信息表包括至少六个字段:
[0013]所存储虚拟文件或目录的名称、名称的文件或目录的布尔标记、名称的唯一识别号、名称的父目录的唯一识别号、名称的创建时间,以及名称的最后修改时间。
[0014]较佳的,虚拟文件数据块表包括至少五个字段:
[0015]所存储虚拟文件的识别号、所存储的虚拟文件的数据块的块序号、所存储的数据块在原生文件中的起始位置、所存储的数据块在原生文件中的结束位置,以及数据块的实
际使用量。
[0016]较佳的,原生文件的空白块表包括至少两个字段:
[0017]空白块在原生文件中的起始位置以及空白块在原生文件中的结束位置。[0018]较佳的,原生文件的大小随所存储文件的增加而增加,在删除所存储的虚拟文件时仅修改数据库表,不减少原生文件的大小。
[0019]较佳的,在既修改数据库,又修改原生文件的情况下,使用数据库的事务提交功能,修改原生文件和数据库成功后,以提交数据库更改的结果作为是否成功操作的依据。
[0020]较佳的,接口层内部采用线程锁互斥,以支持多线程访问。
[0021]本发明所达到的技术效果在于:
[0022]1、虚拟出跨平台的文件系统:对应用程序而言,降低平台移植适配不同文件系统的难度;并且可以定制应用自己的虚拟文件系统名称规则。
[0023]2、该虚拟文件系统的实现方法不影响底层文件系统:只要原生操作系统中提供了数据库和文件的支持,那就可以实现。更进一步的,应用程序如果使用嵌入式数据库的话,那么只需要原生操作系统提供的文件访问接口。和原生操作系统的底层文件系统无关。对虚拟文件系统,也不需要了解其底层系统格式或驱动等,只需要知道其文件和目录的名称规则就可以虚拟。
【专利附图】

【附图说明】
[0024]图1所示的是本发明的结构示意图。
【具体实施方式】
[0025]以下将结合本发明的附图,对本发明实施例中的技术方案进行清楚、完整的描述和讨论,显然,这里所描述的仅仅是本发明的一部分实例,并不是全部的实例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明的保护范围。
[0026]为了便于对本发明实施例的理解,下面将结合附图以具体实施例为例作进一步的解释说明,且各个实施例不构成对本发明实施例的限定。
[0027]请参考图1,本发明提供的一种基于单数据库和单文件的进程内虚拟文件系统,基于单数据库和单文件的进程内虚拟文件系统建立在一原生操作系统上,应用于单个应用程序进程内部的一个或多个线程,原生操作系统提供一数据库、在数据库之外的一原生文件,以及原生系统接口层;数据库包括访问接口,原生文件包括读写接口。数据库及访问接口存取虚拟文件的结构和数据块信息,原生文件及读写接口存取虚拟文件的数据内容。
[0028]数据库中存取三个表:虚拟目录和文件信息表,用以存取虚拟文件和文件的结构信息;虚拟文件数据块表,用以存取存储在原生文件中的虚拟文件的数据块位置;以及原生文件的空白块表,用以存取原生文件中空白块的位置。三个表的具体形式如下:
【权利要求】
1.一种基于单数据库和单文件的进程内虚拟文件系统,其特征在于,所述基于单数据库和单文件的进程内虚拟文件系统建立在一原生操作系统上,应用于单个应用程序进程内部的一个或多个线程,所述原生操作系统提供一数据库、在所述数据库之外的一原生文件,以及原生系统接口层; 所述数据库包括访问接口,所述原生文件包括读写接口 ; 其中,所述数据库及所述访问接口存取虚拟文件的结构和数据块信息,所述原生文件及所述读写接口存取虚拟文件的数据内容;所述基于单数据库和单文件的进程内虚拟文件系统通过所述原生系统接口层调用所述访问接口以及读写接口,完成虚拟文件系统的功倉泛。
2.根据权利要求1所述的基于单数据库和单文件的进程内虚拟文件系统,其特征在于,所述数据库中存取: 虚拟目录和文件信息表,用以存取虚拟文件和文件的结构信息; 虚拟文件数据块表,用以存取存储在所述原生文件中的虚拟文件的数据块位置;以及 原生文件的空白块表,用以存取所述原生文件中空白块的位置。
3.根据权利要求2所述的基于单数据库和单文件的进程内虚拟文件系统,其特征在于,所述虚拟目录和文件信息表包括至少六个字段: 所存储虚拟文件或目录的名称、所述名称的文件或目录的布尔标记、所述名称的唯一识别号、所述名称的父目录的唯一识别号、所述名称的创建时间,以及所述名称的最后修改时间。
4.根据权利要求2所述的基于单数据库和单文件的进程内虚拟文件系统,其特征在于,所述虚拟文件数据块表包括至少五个字段: 所存储虚拟文件的识别号、所存储的虚拟文件的数据块的块序号、所存储的数据块在原生文件中的起始位置、所存储的数据块在原生文件中的结束位置,以及所述数据块的实际使用量。
5.根据权利要求2所述的基于单数据库和单文件的进程内虚拟文件系统,其特征在于,所述原生文件的空白块表包括至少两个字段: 所述空白块在所述原生文件中的起始位置以及所述空白块在所述原生文件中的结束位置。
6.根据权利要求1所述的基于单数据库和单文件的进程内虚拟文件系统,其特征在于,所述原生文件的大小随所存储文件的增加而增加,在删除所存储的虚拟文件时仅修改数据库表,不减少所述原生文件的大小。
7.根据权利要求6所述的基于单数据库和单文件的进程内虚拟文件系统,其特征在于,在既修改所述数据库,又修改所述原生文件的情况下,使用所述数据库的事务提交功能,修改原生文件和数据库成功后,以提交数据库更改的结果作为是否成功操作的依据。
8.根据权利要求1所述的基于单数据库和单文件的进程内虚拟文件系统,其特征在于,所述接口层内部采用线程锁互斥,以支持多线程访问。
【文档编号】G06F17/30GK103761328SQ201410043938
【公开日】2014年4月30日 申请日期:2014年1月29日 优先权日:2014年1月29日
【发明者】严华杰, 周后红, 胡伟雄, 戴立言, 李庆瑜 申请人:上海网达软件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1