一种基于虚拟文件系统的数据读取方法

文档序号:6369806阅读:148来源:国知局
专利名称:一种基于虚拟文件系统的数据读取方法
技术领域
本发明涉及通信技术领域,特别涉及一种基于虚拟文件系统的数据读取方法。
背景技术
现在很多应用程序采用虚拟文件系统机制,来达到数据加密和减少磁盘空间占用
坐寸ο很多网络游戏中采用了虚拟文件系统,如网络游戏“寻仙”、“魔兽世界”等,在程序发布时,将所有资源文件分目录合并到几个压缩数据包文件里,程序启动后,使用虚拟文件系统提供的通用接ロ来访问压缩数据包里的数据,虚拟文件系统根据程序传入的文件路 径,找到该文件在压缩数据包里对应的数据块,完成数据的读取操作。上述读取数据的方法,采用直接从磁盘上读取数据,由于磁盘操作较慢,该种读取数据方式效率较低,尤其是文件碎片比较多的时候,会产生较大的性能瓶颈,会使程序运行的流畅度受到很大影响。

发明内容
有鉴于此,本发明提供一种基于虚拟文件系统的数据读取方法,能够提高读取数据的效率。为解决上述技术问题,本发明的技术方案是这样实现的一种基于虚拟文件系统的数据读取方法,所述方法包括获取压缩数据包文件和可执行文件,其中,所述可执行文件包括用于创建虚拟文件系统的可执行文件和客户端程序的可执行文件;运行所述用于创建虚拟文件系统的可执行文件创建虚拟文件系统,通过文件映射的方式将所述压缩数据包文件映射到共享内存中,并记录文件映射信息;所述虚拟文件系统创建完成后,运行所述客户端程序的可执行文件,根据所述记录的文件映射信息,在所述共享内存中读取数据。综上所述,本发明以压缩数据包文件为基础,在创建虚拟文件系统时将压缩数据包文件映射到进程的共享内存中,在需要读取压缩数据包文件时,直接在共享内存中读取数据,能够提高读取数据的效率。


图I为本发明具体实施例中基于虚拟文件系统的数据读取方法的流程示意图;图2为本发明具体实施例中基于虚拟文件系统的数据读取结构示意图。
具体实施例方式为使本发明的目的、技术方案及优点更加清楚明白,以下參照附图并举实施例,对本发明所述方案作进ー步地详细说明。
本发明实施例中提出ー种数据读取方法,从文件映射的共享内存中读取数据,能够提高读取数据的效率。參见图1,图I为本发明具体实施例中基于虚拟文件系统的数据读取方法的流程示意图。具体步骤为步骤101,获取压缩数据包文件和可执行文件,其中,所述可执行文件包括用于创建虚拟文件系统的可执行文件和客户端程序的可执行文件。本步骤获取的文件的途径可以为光盘、磁盘、网络等。其中,虚拟文件系统将不同 来源的数据,集合成ー个整体,通过提供类似文件操作的访问接ロ读写这些数据。步骤102,运行所述用于创建虚拟文件系统的可执行文件创建虚拟文件系统,通过文件映射的方式将所述压缩数据包文件映射到共享内存中,并记录文件映射信息。用于创建虚拟文件系统的可执行文件包括载入进程可执行文件、管理进程可执行文件和数据进程可执行文件。本步骤中运行用于创建虚拟文件系统的可执行文件创建虚拟文件系统,通过文件映射的方式将所述压缩数据包文件映射到共享内存中,并记录文件映射信息包括运行所述载入进程可执行文件进入载入进程,通过所述载入进程启动所述管理进程可执行文件进入管理进程,通过所述管理进程启动数据进程可执行文件进入数据进程,通过所述数据进程根据所述压缩数据包文件的大小和共享内存的大小将所述压缩数据包文件映射到数据进程的共享内存中,通过所述管理进程记录所述数据进程的文件映射信息。其中,共享内存为多个进程可以共同读写的内存区域;文件映射为ー种共享内存技术,将磁盘文件映射到连续的内存区域,可以直接访问内存来读写。当通过管理进程启动数据进程可执行文件吋,该方法进ー步包括若确定获取的所述压缩数据包文件的大小大于启动ー个进程的共享内存的大小,则启动多个数据进程将所述压缩数据包文件映射到不同的数据进程中,即启动不小于能够映射所有压缩数据包文件的数据进程。本步骤中记录的文件映射信息包括数据进程标识、压缩数据包文件标识、首地址和长度;其中,所述压缩数据包标识为到所述数据进程标识所对应的数据进程中的压缩数据包文件的标识,所述首地址为所述压缩数据包文件标识所对应的压缩数据包文件在共享内存中第一个字节的地址,所述长度为所述压缩数据包文件标识所对应的压缩数据包文件在所述共享内存中所占的长度。步骤103,虚拟文件系统创建完成后,运行所述客户端程序的可执行文件,根据所述记录的文件映射信息,在所述共享内存中读取数据。本步骤中根据所述记录的文件映射信息,在所述共享内存中读取数据包括在运行所述客户端程序的可执行文件时,根据需要读取的压缩数据包文件标识在所述管理进程记录的映射信息中查找对应的数据进程标识、首地址和长度,在查找到的数据进程标识所对应的数据进程的共享内存中根据查找到的首地址和长度读取对应的数据。在具体应用中,存在很多需要从磁盘上读取数据的情况,为了提高读取数据的效率,可以通过如上方式实现。下面结合附图,以在某个客户端运行某个游戏时读取游戏所需数据的过程,来详细说明本发明具体实施例中如何实现数据读取的。客户端获取用于创建虚拟文件系统的可执行文件,包括载入进程可执行文件、管理进程可执行文件和数据进程可执行文件,并获取压缩数据包文件。參见图2,图2为本发明具体实施例中基于虚拟文件系统的数据读取结构示意图。客户端运行载入进程可执行文件,进入载入进程,载入进程启动管理进程可执行文件进入管理进程,管理进程根据压缩数据包文件的大小确定启动几个数据进程。如图2所示,设该次获取4个压缩数据包文件,根据4个压缩包数据文件的大小确定需两个数据进程的共享内存进行映射,则管理进程启动两个数据进程,如图2中的数据进程I和数据进程2。客户端通过启动的数据进程I将压缩数据包文件I和压缩数据包2映射到数据进程I的共享内存中,数据进程2将压缩数据包文件3和压缩数据包4映射到数据进程I的共享内存中,客户端通过管理进程记录文件映射信息,对于数据进程I记录的文件映射信息包括数据进程标识1,压缩数据包文件标识1,首地址A,长度B ;压缩数据包文件标识2,首地址C,长度D。对于数据进程2记录的文件映射信息同数据进程I这里不再详细赘述。到此,完成虚拟文件系统的创建。客户端获取用于创建虚拟文件系统的可执行文件时,还获取客户端程序可执行文件,在完成虚拟文件系统的创建后,运行客户端程序可执行文件,当需要访问游戏所需的虚 拟文件数据所对应的压缩数据包文件标识时,通过管理进程记录的文件映射信息查找到对应的数据进程标识、首地址和长度,如此时需要读取的虚拟数据文件所对应的压缩数据包标识为2,则在记录的文件映射信息中查找到压缩数据包标识为2所对应的数据进程标识为1,首地址为A,长度为B,则在数据进程I的共享内存中地址为A,长度为B的数据。通过上述读取数据的方式,客户端程序能够更加流畅地运行,在游戏场景中,卡顿现象将会明显减少,场景切換的速度也将加快。上述举例为运行ー个客户端程序,当运行多客户端程序时,由于使用共享内存,仅ー份缓冲数据,在保障多个客户端程序运行流畅的情况下,也能减少资源的占用。通过在共享内存中读取数据,通常比直接访问磁盘读取数据,可以提升数据读取率的50倍以上。综上所述,本发明具体实施例中以压缩数据包文件为基础,在创建虚拟文件系统时将压缩数据包文件映射到数据进程的共享内存中,在需要读取压缩数据包文件时,直接在共享内存中读取数据,能够提高读取数据的效率。使用数据进程和共享内存缓存文件数据,并提供跨进程访问接ロ实现虚拟文件系统。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种基于虚拟文件系统的数据读取方法,其特征在于,所述方法包括 获取压缩数据包文件和可执行文件,其中,所述可执行文件包括用于创建虚拟文件系统的可执行文件和客户端程序的可执行文件; 运行所述用于创建虚拟文件系统的可执行文件创建虚拟文件系统,通过文件映射的方式将所述压缩数据包文件映射到共享内存中,并记录文件映射信息; 所述虚拟文件系统创建完成后,运行所述客户端程序的可执行文件,根据所述记录的文件映射信息,在所述共享内存中读取数据。
2.根据权利要求I所述的方法,其特征在于,所述用于创建虚拟文件系统的可执行文件包括载入进程可执行文件、管理进程可执行文件和数据进程可执行文件; 所述运行用于创建虚拟文件系统的可执行文件创建虚拟文件系统,通过文件映射的方式将所述压缩数据包文件映射到共享内存中,并记录文件映射信息包括 运行所述载入进程可执行文件进入载入进程,通过所述载入进程启动所述管理进程可执行文件进入管理进程,通过所述管理进程启动数据进程可执行文件进入数据进程,通过所述数据进程根据所述压缩数据包文件的大小和共享内存的大小将所述压缩数据包文件映射到数据进程的共享内存中,通过所述管理进程记录所述数据进程的文件映射信息。
3.根据权利要求2所述的方法,其特征在于,所述通过管理进程启动数据进程可执行文件时,所述方法进ー步包括若确定获取的所述压缩数据包文件的大小大于启动ー个进程的共享内存的大小,则启动多个数据进程将所述压缩数据包文件映射到不同的数据进程中。
4.根据权利要求3所述的方法,其特征在于,所述记录的文件映射信息包括数据进程标识标识、压缩数据包文件标识、首地址和长度;其中,所述压缩数据包标识为到所述数据进程标识所对应的数据进程中的压缩数据包文件的标识,所述首地址为所述压缩数据包文件标识所对应的压缩数据包文件在共享内存中第一个字节的地址,所述长度为所述压缩数据包文件标识所对应的压缩数据包文件在所述共享内存中所占的长度; 所述根据所述记录的文件映射信息,在所述共享内存中读取数据包括在运行所述客户端程序的可执行文件时,根据需要读取的压缩数据包文件标识在所述管理进程记录的映射信息中查找对应的数据进程标识、首地址和长度,在查找到的数据进程标识所对应的数据进程的共享内存中根据查找到的首地址和长度读取对应的数据。
全文摘要
本发明公开了一种基于虚拟文件系统的数据读取方法,该方法包括获取压缩数据包文件和可执行文件,其中,所述可执行文件包括用于创建虚拟文件系统的可执行文件和客户端程序的可执行文件;运行所述用于创建虚拟文件系统的可执行文件创建虚拟文件系统,通过文件映射的方式将所述压缩数据包文件映射到共享内存中,并记录文件映射信息;虚拟文件系统创建完成后,运行所述客户端程序的可执行文件,根据所述记录的文件映射信息,在所述共享内存中读取数据。该方法能够提高数据读取的效率。
文档编号G06F17/30GK102682129SQ20121015365
公开日2012年9月19日 申请日期2012年5月17日 优先权日2012年5月17日
发明者蒋黎 申请人:北京像素软件科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1