CN102682129A - 一种基于虚拟文件***的数据读取方法 - Google Patents
一种基于虚拟文件***的数据读取方法 Download PDFInfo
- Publication number
- CN102682129A CN102682129A CN2012101536534A CN201210153653A CN102682129A CN 102682129 A CN102682129 A CN 102682129A CN 2012101536534 A CN2012101536534 A CN 2012101536534A CN 201210153653 A CN201210153653 A CN 201210153653A CN 102682129 A CN102682129 A CN 102682129A
- Authority
- CN
- China
- Prior art keywords
- file
- data
- executable file
- shared drive
- executable
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种基于虚拟文件***的数据读取方法,该方法包括:获取压缩数据包文件和可执行文件,其中,所述可执行文件包括用于创建虚拟文件***的可执行文件和客户端程序的可执行文件;运行所述用于创建虚拟文件***的可执行文件创建虚拟文件***,通过文件映射的方式将所述压缩数据包文件映射到共享内存中,并记录文件映射信息;虚拟文件***创建完成后,运行所述客户端程序的可执行文件,根据所述记录的文件映射信息,在所述共享内存中读取数据。该方法能够提高数据读取的效率。
Description
技术领域
本发明涉及通信技术领域,特别涉及一种基于虚拟文件***的数据读取方法。
背景技术
现在很多应用程序采用虚拟文件***机制,来达到数据加密和减少磁盘空间占用等。
很多网络游戏中采用了虚拟文件***,如网络游戏“寻仙”、“魔兽世界”等,在程序发布时,将所有资源文件分目录合并到几个压缩数据包文件里,程序启动后,使用虚拟文件***提供的通用接口来访问压缩数据包里的数据,虚拟文件***根据程序传入的文件路径,找到该文件在压缩数据包里对应的数据块,完成数据的读取操作。
上述读取数据的方法,采用直接从磁盘上读取数据,由于磁盘操作较慢,该种读取数据方式效率较低,尤其是文件碎片比较多的时候,会产生较大的性能瓶颈,会使程序运行的流畅度受到很大影响。
发明内容
有鉴于此,本发明提供一种基于虚拟文件***的数据读取方法,能够提高读取数据的效率。
为解决上述技术问题,本发明的技术方案是这样实现的:
一种基于虚拟文件***的数据读取方法,所述方法包括:
获取压缩数据包文件和可执行文件,其中,所述可执行文件包括用于创建虚拟文件***的可执行文件和客户端程序的可执行文件;
运行所述用于创建虚拟文件***的可执行文件创建虚拟文件***,通过文件映射的方式将所述压缩数据包文件映射到共享内存中,并记录文件映射信息;
所述虚拟文件***创建完成后,运行所述客户端程序的可执行文件,根据所述记录的文件映射信息,在所述共享内存中读取数据。
综上所述,本发明以压缩数据包文件为基础,在创建虚拟文件***时将压缩数据包文件映射到进程的共享内存中,在需要读取压缩数据包文件时,直接在共享内存中读取数据,能够提高读取数据的效率。
附图说明
图1为本发明具体实施例中基于虚拟文件***的数据读取方法的流程示意图;
图2为本发明具体实施例中基于虚拟文件***的数据读取结构示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。
本发明实施例中提出一种数据读取方法,从文件映射的共享内存中读取数据,能够提高读取数据的效率。
参见图1,图1为本发明具体实施例中基于虚拟文件***的数据读取方法的流程示意图。具体步骤为:
步骤101,获取压缩数据包文件和可执行文件,其中,所述可执行文件包括用于创建虚拟文件***的可执行文件和客户端程序的可执行文件。
本步骤获取的文件的途径可以为光盘、磁盘、网络等。其中,虚拟文件***将不同来源的数据,集合成一个整体,通过提供类似文件操作的访问接口读写这些数据。
步骤102,运行所述用于创建虚拟文件***的可执行文件创建虚拟文件***,通过文件映射的方式将所述压缩数据包文件映射到共享内存中,并记录文件映射信息。
用于创建虚拟文件***的可执行文件包括:载入进程可执行文件、管理进程可执行文件和数据进程可执行文件。
本步骤中运行用于创建虚拟文件***的可执行文件创建虚拟文件***,通过文件映射的方式将所述压缩数据包文件映射到共享内存中,并记录文件映射信息包括:
运行所述载入进程可执行文件进入载入进程,通过所述载入进程启动所述管理进程可执行文件进入管理进程,通过所述管理进程启动数据进程可执行文件进入数据进程,通过所述数据进程根据所述压缩数据包文件的大小和共享内存的大小将所述压缩数据包文件映射到数据进程的共享内存中,通过所述管理进程记录所述数据进程的文件映射信息。其中,共享内存为多个进程可以共同读写的内存区域;文件映射为一种共享内存技术,将磁盘文件映射到连续的内存区域,可以直接访问内存来读写。
当通过管理进程启动数据进程可执行文件时,该方法进一步包括:若确定获取的所述压缩数据包文件的大小大于启动一个进程的共享内存的大小,则启动多个数据进程将所述压缩数据包文件映射到不同的数据进程中,即启动不小于能够映射所有压缩数据包文件的数据进程。
本步骤中记录的文件映射信息包括:数据进程标识、压缩数据包文件标识、首地址和长度;其中,所述压缩数据包标识为到所述数据进程标识所对应的数据进程中的压缩数据包文件的标识,所述首地址为所述压缩数据包文件标识所对应的压缩数据包文件在共享内存中第一个字节的地址,所述长度为所述压缩数据包文件标识所对应的压缩数据包文件在所述共享内存中所占的长度。
步骤103,虚拟文件***创建完成后,运行所述客户端程序的可执行文件,根据所述记录的文件映射信息,在所述共享内存中读取数据。
本步骤中根据所述记录的文件映射信息,在所述共享内存中读取数据包括:在运行所述客户端程序的可执行文件时,根据需要读取的压缩数据包文件标识在所述管理进程记录的映射信息中查找对应的数据进程标识、首地址和长度,在查找到的数据进程标识所对应的数据进程的共享内存中根据查找到的首地址和长度读取对应的数据。
在具体应用中,存在很多需要从磁盘上读取数据的情况,为了提高读取数据的效率,可以通过如上方式实现。下面结合附图,以在某个客户端运行某个游戏时读取游戏所需数据的过程,来详细说明本发明具体实施例中如何实现数据读取的。
客户端获取用于创建虚拟文件***的可执行文件,包括载入进程可执行文件、管理进程可执行文件和数据进程可执行文件,并获取压缩数据包文件。参见图2,图2为本发明具体实施例中基于虚拟文件***的数据读取结构示意图。客户端运行载入进程可执行文件,进入载入进程,载入进程启动管理进程可执行文件进入管理进程,管理进程根据压缩数据包文件的大小确定启动几个数据进程。
如图2所示,设该次获取4个压缩数据包文件,根据4个压缩包数据文件的大小确定需两个数据进程的共享内存进行映射,则管理进程启动两个数据进程,如图2中的数据进程1和数据进程2。客户端通过启动的数据进程1将压缩数据包文件1和压缩数据包2映射到数据进程1的共享内存中,数据进程2将压缩数据包文件3和压缩数据包4映射到数据进程1的共享内存中,客户端通过管理进程记录文件映射信息,对于数据进程1记录的文件映射信息包括:数据进程标识:1,压缩数据包文件标识:1,首地址:A,长度:B;压缩数据包文件标识:2,首地址:C,长度:D。对于数据进程2记录的文件映射信息同数据进程1这里不再详细赘述。到此,完成虚拟文件***的创建。
客户端获取用于创建虚拟文件***的可执行文件时,还获取客户端程序可执行文件,在完成虚拟文件***的创建后,运行客户端程序可执行文件,当需要访问游戏所需的虚拟文件数据所对应的压缩数据包文件标识时,通过管理进程记录的文件映射信息查找到对应的数据进程标识、首地址和长度,如此时需要读取的虚拟数据文件所对应的压缩数据包标识为2,则在记录的文件映射信息中查找到压缩数据包标识为2所对应的数据进程标识为1,首地址为A,长度为B,则在数据进程1的共享内存中地址为A,长度为B的数据。
通过上述读取数据的方式,客户端程序能够更加流畅地运行,在游戏场景中,卡顿现象将会明显减少,场景切换的速度也将加快。上述举例为运行一个客户端程序,当运行多客户端程序时,由于使用共享内存,仅一份缓冲数据,在保障多个客户端程序运行流畅的情况下,也能减少资源的占用。通过在共享内存中读取数据,通常比直接访问磁盘读取数据,可以提升数据读取率的50倍以上。
综上所述,本发明具体实施例中以压缩数据包文件为基础,在创建虚拟文件***时将压缩数据包文件映射到数据进程的共享内存中,在需要读取压缩数据包文件时,直接在共享内存中读取数据,能够提高读取数据的效率。使用数据进程和共享内存缓存文件数据,并提供跨进程访问接口实现虚拟文件***。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种基于虚拟文件***的数据读取方法,其特征在于,所述方法包括:
获取压缩数据包文件和可执行文件,其中,所述可执行文件包括用于创建虚拟文件***的可执行文件和客户端程序的可执行文件;
运行所述用于创建虚拟文件***的可执行文件创建虚拟文件***,通过文件映射的方式将所述压缩数据包文件映射到共享内存中,并记录文件映射信息;
所述虚拟文件***创建完成后,运行所述客户端程序的可执行文件,根据所述记录的文件映射信息,在所述共享内存中读取数据。
2.根据权利要求1所述的方法,其特征在于,所述用于创建虚拟文件***的可执行文件包括:载入进程可执行文件、管理进程可执行文件和数据进程可执行文件;
所述运行用于创建虚拟文件***的可执行文件创建虚拟文件***,通过文件映射的方式将所述压缩数据包文件映射到共享内存中,并记录文件映射信息包括:
运行所述载入进程可执行文件进入载入进程,通过所述载入进程启动所述管理进程可执行文件进入管理进程,通过所述管理进程启动数据进程可执行文件进入数据进程,通过所述数据进程根据所述压缩数据包文件的大小和共享内存的大小将所述压缩数据包文件映射到数据进程的共享内存中,通过所述管理进程记录所述数据进程的文件映射信息。
3.根据权利要求2所述的方法,其特征在于,所述通过管理进程启动数据进程可执行文件时,所述方法进一步包括:若确定获取的所述压缩数据包文件的大小大于启动一个进程的共享内存的大小,则启动多个数据进程将所述压缩数据包文件映射到不同的数据进程中。
4.根据权利要求3所述的方法,其特征在于,所述记录的文件映射信息包括:数据进程标识标识、压缩数据包文件标识、首地址和长度;其中,所述压缩数据包标识为到所述数据进程标识所对应的数据进程中的压缩数据包文件的标识,所述首地址为所述压缩数据包文件标识所对应的压缩数据包文件在共享内存中第一个字节的地址,所述长度为所述压缩数据包文件标识所对应的压缩数据包文件在所述共享内存中所占的长度;
所述根据所述记录的文件映射信息,在所述共享内存中读取数据包括:在运行所述客户端程序的可执行文件时,根据需要读取的压缩数据包文件标识在所述管理进程记录的映射信息中查找对应的数据进程标识、首地址和长度,在查找到的数据进程标识所对应的数据进程的共享内存中根据查找到的首地址和长度读取对应的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012101536534A CN102682129A (zh) | 2012-05-17 | 2012-05-17 | 一种基于虚拟文件***的数据读取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012101536534A CN102682129A (zh) | 2012-05-17 | 2012-05-17 | 一种基于虚拟文件***的数据读取方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102682129A true CN102682129A (zh) | 2012-09-19 |
Family
ID=46814054
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012101536534A Pending CN102682129A (zh) | 2012-05-17 | 2012-05-17 | 一种基于虚拟文件***的数据读取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102682129A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020199A (zh) * | 2012-12-05 | 2013-04-03 | 上海创图网络科技发展有限公司 | 适用于不同操作***平台的虚拟文件***及其应用 |
CN103106260A (zh) * | 2013-01-25 | 2013-05-15 | 南开大学 | 一种面向角色的虚拟文件***的建立方法 |
CN103116612A (zh) * | 2013-01-25 | 2013-05-22 | 南开大学 | 一种面向进程的虚拟文件***的建立方法 |
CN103761328A (zh) * | 2014-01-29 | 2014-04-30 | 上海网达软件股份有限公司 | 基于单数据库和单文件的进程内虚拟文件*** |
CN106156034A (zh) * | 2015-03-26 | 2016-11-23 | 北京畅游天下网络技术有限公司 | 一种可执行文件的展示方法和装置 |
WO2016197838A1 (zh) * | 2015-06-08 | 2016-12-15 | 阿里巴巴集团控股有限公司 | 一种访问方法及装置 |
CN112087453A (zh) * | 2020-09-09 | 2020-12-15 | 云和恩墨(北京)信息技术有限公司 | 存储数据的共享方法及装置 |
CN117591489A (zh) * | 2024-01-16 | 2024-02-23 | 麒麟软件有限公司 | 基于多***隔离的虚拟文件共享*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1553325A (zh) * | 2003-06-05 | 2004-12-08 | 联想(北京)有限公司 | 一种透明扩充文件***功能的方法 |
CN101382953A (zh) * | 2008-09-19 | 2009-03-11 | 中兴通讯股份有限公司 | 在用户空间访问文件***的接口***与文件读、写方法 |
CN102129476A (zh) * | 2011-04-22 | 2011-07-20 | 上海网达软件有限公司 | 利用zip压缩格式的虚拟文件***应用 |
-
2012
- 2012-05-17 CN CN2012101536534A patent/CN102682129A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1553325A (zh) * | 2003-06-05 | 2004-12-08 | 联想(北京)有限公司 | 一种透明扩充文件***功能的方法 |
CN101382953A (zh) * | 2008-09-19 | 2009-03-11 | 中兴通讯股份有限公司 | 在用户空间访问文件***的接口***与文件读、写方法 |
CN102129476A (zh) * | 2011-04-22 | 2011-07-20 | 上海网达软件有限公司 | 利用zip压缩格式的虚拟文件***应用 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020199A (zh) * | 2012-12-05 | 2013-04-03 | 上海创图网络科技发展有限公司 | 适用于不同操作***平台的虚拟文件***及其应用 |
CN103106260A (zh) * | 2013-01-25 | 2013-05-15 | 南开大学 | 一种面向角色的虚拟文件***的建立方法 |
CN103116612A (zh) * | 2013-01-25 | 2013-05-22 | 南开大学 | 一种面向进程的虚拟文件***的建立方法 |
CN103116612B (zh) * | 2013-01-25 | 2015-12-02 | 南开大学 | 一种面向进程的虚拟文件***的建立方法 |
CN103106260B (zh) * | 2013-01-25 | 2016-04-27 | 南开大学 | 一种面向角色的虚拟文件***的建立方法 |
CN103761328A (zh) * | 2014-01-29 | 2014-04-30 | 上海网达软件股份有限公司 | 基于单数据库和单文件的进程内虚拟文件*** |
CN106156034A (zh) * | 2015-03-26 | 2016-11-23 | 北京畅游天下网络技术有限公司 | 一种可执行文件的展示方法和装置 |
CN106302609A (zh) * | 2015-06-08 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 一种访问方法及装置 |
WO2016197838A1 (zh) * | 2015-06-08 | 2016-12-15 | 阿里巴巴集团控股有限公司 | 一种访问方法及装置 |
KR20180016488A (ko) * | 2015-06-08 | 2018-02-14 | 알리바바 그룹 홀딩 리미티드 | 액세스 방법 및 장치 |
CN106302609B (zh) * | 2015-06-08 | 2020-02-28 | 阿里巴巴集团控股有限公司 | 一种访问方法及装置 |
KR102256890B1 (ko) | 2015-06-08 | 2021-05-31 | 어드밴스드 뉴 테크놀로지스 씨오., 엘티디. | 액세스 방법 및 장치 |
US11221997B2 (en) | 2015-06-08 | 2022-01-11 | Advanced New Technologies Co., Ltd. | On-demand creation and access of a virtual file system |
CN112087453A (zh) * | 2020-09-09 | 2020-12-15 | 云和恩墨(北京)信息技术有限公司 | 存储数据的共享方法及装置 |
CN117591489A (zh) * | 2024-01-16 | 2024-02-23 | 麒麟软件有限公司 | 基于多***隔离的虚拟文件共享*** |
CN117591489B (zh) * | 2024-01-16 | 2024-06-07 | 麒麟软件有限公司 | 基于多***隔离的虚拟文件共享*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102682129A (zh) | 一种基于虚拟文件***的数据读取方法 | |
US10586303B2 (en) | Intermediary graphics rendition | |
CN102467408B (zh) | 一种虚拟机数据的访问方法和设备 | |
CN105468300B (zh) | Ip硬盘的管理方法和装置 | |
CN103500146B (zh) | 虚拟机磁盘存储数据迁移方法和*** | |
CN103617007B (zh) | 多级智能存储实现方法和*** | |
CN1705935A (zh) | 文件管理方法和信息处理设备 | |
CN102479250A (zh) | 一种嵌入式浏览器磁盘缓存方法 | |
CN103593226A (zh) | 一种提高虚拟机磁盘io性能的方法 | |
CN102902709B (zh) | 一种固定空间分配的文件存储***及实现方法 | |
CN102609305A (zh) | 一种服务器集群中内存共享方法 | |
CN108228108A (zh) | 一种差分虚拟磁盘链接方法 | |
CN104808953A (zh) | 控制数据存储的方法、装置及移动终端 | |
CN107451271A (zh) | 一种哈希表处理方法、装置、设备及存储介质 | |
CN103648021A (zh) | 从usb存储设备播放网络视频文件的方法 | |
CN103533075A (zh) | 将数据导入iSCSI目标器的方法和iSCSI启动器 | |
CN103414656B (zh) | 报文发送控制方法和网卡 | |
CN108153597B (zh) | 一种linux设备管理装置及方法 | |
US9430034B2 (en) | Data communication on a virtual machine | |
CN113242321B (zh) | 一种移动存储设备数据传输方法 | |
CN108509155A (zh) | 一种远程访问磁盘的方法和装置 | |
CN104539746B (zh) | 一种访问数据的方法、nas机头和san | |
CN110636368B (zh) | 媒体播放方法、***、装置及存储介质 | |
CN106227473A (zh) | 一种将内存作为磁盘读写的实现方法和装置 | |
CN106250562B (zh) | 数据信息处理*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20120919 |