CN104572205B - 一种用于软件加速的方法和装置 - Google Patents

一种用于软件加速的方法和装置 Download PDF

Info

Publication number
CN104572205B
CN104572205B CN201510013172.7A CN201510013172A CN104572205B CN 104572205 B CN104572205 B CN 104572205B CN 201510013172 A CN201510013172 A CN 201510013172A CN 104572205 B CN104572205 B CN 104572205B
Authority
CN
China
Prior art keywords
file
read
disk
software
reading
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.)
Active
Application number
CN201510013172.7A
Other languages
English (en)
Other versions
CN104572205A (zh
Inventor
黄为纲
胡庆华
蒋嘉琦
位广军
叶爱平
韩龙
桂敬文
马家智
王博通
陈太汉
孙杰伟
黄奥
邱悦婷
贾思骐
刘金凤
郝冀宣
吕尤庆
田晓圆
葛艳平
王佳倩
李雯
孙启凤
张凯
王婵娟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Anyi Hengtong Beijing Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Anyi Hengtong Beijing Technology Co Ltd filed Critical Anyi Hengtong Beijing Technology Co Ltd
Priority to CN201510013172.7A priority Critical patent/CN104572205B/zh
Publication of CN104572205A publication Critical patent/CN104572205A/zh
Application granted granted Critical
Publication of CN104572205B publication Critical patent/CN104572205B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种用于软件加速的方法和装置。该方法包括当启动待加速软件时,判断待加速软件是否已经包含在学习结果中,若是,则根据学习结果中的文件名称判断当前打开的文件是否为待加速软件启动所需的文件,若是,则根据学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度预取所打开的文件存入内存的预取缓冲区,并建立文件预取记录表,在对所打开的文件进行读取时根据文件预取记录表判断需要读取的文件数据是否位于预取缓冲区中,若是,则从预取缓冲区复制出所需读取的文件数据,以完成读取操作。实施上述方法和装置,能够显著提升软件的启动速度。

Description

一种用于软件加速的方法和装置
技术领域
本发明涉及计算机软件领域,更为具体而言,涉及一种用于软件加速的方法和装置。
背景技术
目前个人计算机(Personal Computer,PC)上运行的操作系统与大部分软件的性能瓶颈已经不再是CPU(Central Processing Unit,中央处理器)与内存,而是作为主要数据存储介质的硬盘,而近年来磁质硬盘的数据存取速率并未有明显的提升,硬盘厂商主要关注提升单位体积内存储密度用于生产出更大容量的硬盘。由于硬盘的数据存储性能未有明显的提升,而现有软件的体积却越来越大,因此造成了软件启动、运行时读取数据时间的增长,形成了用户直观上所感受到的软件“卡顿”现象,且这种“卡顿”现象在大型软件上表现的更加明显,例如Matlab、Photoshop、Visual Studio等大型软件。
现有的软件启动加速方案主要是针对某一款软件,通过禁用其启动时不需要加载的插件或文件来达到软件启动加速的目的。这样的软件加速方案需要对软件进行大量的分析与测试,才能获知哪些插件或文件可以被禁用,且该方案对于某些软件来说可能根本无法使用。因此,亟需对多种软件可通用的软件加速方案。
发明内容
为解决上述技术问题,本发明提供了一种用于软件加速的方法和装置,通过学习结果获取软件启动所需读取的文件名称、每次文件读取的偏移和每次文件读取的长度,从而较为精确地将待加速软件需要读取的文件预存入内存缓冲区,显著改善了文件数据的读取速度,缩短了该软件启动所需的时间。
根据本发明实施方式的第一方面,提供了一种用于软件加速的方法,所述方法可包括:
当启动待加速软件时,判断所述待加速软件是否已经包含学习结果中,所述学习结果包括软件启动所需读取的文件名称、每次文件读取的偏移、每次文件读取的长度,
若已经包含所述学习结果中,则根据所述学习结果中的文件名称判断当前打开的文件是否为所述待加速软件启动所需的文件,
若是所述待加速软件启动所需的文件,则根据所述学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度预取所打开的文件存入内存的文件预取缓冲区,并建立文件预取记录表,所述文件预取记录表包括文件名称、读取偏移、读取长度和内存地址,
在对所述打开的文件进行读取时根据所述文件预取记录表判断需要读取的文件数据是否位于文件预取缓冲区中,
若需要读取的文件数据位于文件预取缓冲区中,则从文件预取缓冲区复制出所需读取的文件数据,以完成所述待加速软件启动所需的读取操作。
在本发明的一些实施方式中,所述方法可进一步包括:若所述待加速软件未包含所述学习结果中,则获取所述待加速软件启动过程中的文件操作行为,所述文件操作行为包括所需读取的文件名称、文件的读取顺序、每次文件读取的偏移和每次文件读取的长度。
在本发明的一些实施方式中,所述方法可进一步包括:在开始获取所述待加速软件启动过程中的文件操作行为之后,对所述待加速软件启动过程中所需读取的数据进行磁盘预取,并建立磁盘预取记录表,所述磁盘预取包括通过磁盘过滤驱动截获系统输入/输出管理器发给磁盘的第一输入/输出请求包IRP读请求,并根据所述第一IRP读请求中的读取偏移和读取长度查询磁盘过滤驱动的磁盘预取缓冲区维护的所述磁盘预取记录表以判断所述第一IRP读请求所需读取的数据是否位于磁盘过滤驱动的磁盘预取缓冲区中,若是,则从所述磁盘预取缓冲区复制出所述第一IRP读请求所需读取的磁盘数据以完成本次读取操作,若否,则将所述第一IRP读请求进行阻塞,构造比所述第一IRP读请求的读取长度长的第二IRP读请求,将根据所述第二IRP读请求的读取长度读取的磁盘数据插入所述磁盘预取缓冲区,并将所述第二IRP读请求的读取偏移和缓存大小插入所述磁盘预取记录表,然后根据所述第一IRP读请求从所述磁盘预取缓冲区复制出所需读取的磁盘数据以完成本次读取操作。
在本发明的一些实施方式中,所述方法可进一步包括:在所述待加速软件启动完毕之后,将获取的启动过程中的文件操作行为输出作为学习结果,并根据所述学习结果进行磁盘整理。
在本发明的一些实施方式中,所述根据所述学习结果进行磁盘整理可进一步包括:根据所述学习结果中的所需读取的文件名称和文件的读取顺序对磁盘进行整理以便所需读取的文件在磁盘上按照文件的读取顺序存放。
在本发明的一些实施方式中,所述根据所述学习结果进行磁盘整理可进一步包括:根据所述学习结果中的所需读取的文件名称进行磁盘整理以便所需读取的文件数据在连续的磁盘扇区存储。
在本发明的一些实施方式中,所述根据所述学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度预取所打开的文件存入内存的文件预取缓冲区可进一步包括:根据所述学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度确定出需要读取的一个或一个以上文件上相应的一个或一个以上片段,将所述一个或一个以上文件上的所述相应的一个或一个以上片段合并为一个组合文件,并为所述组合文件建立片段索引,对所述组合文件进行磁盘整理以便所述组合文件在磁盘上连续存放,然后将经磁盘整理的组合文件存入内存的文件预取缓冲区。
在本发明的一些实施方式中,所述方法可进一步包括:在启动待加速软件之前,判断所述待加速软件是否已经包含在学习结果中,若是,则根据所述学习结果中软件启动所需读取的文件名称对各个所需读取的文件发起打开操作,并根据所述学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度预取所打开的文件存入内存的文件预取缓冲区,并建立文件预取记录表。
根据本发明实施方式的第二方面,提供了一种用于软件加速的装置,所述装置可包括:
第一判断模块,用于当启动待加速软件时,判断所述待加速软件是否已经包含在学习结果中,所述学习结果包括软件启动所需读取的文件名称、每次文件读取的偏移、每次文件读取的长度,
第二判断模块,用于当所述待加速软件已经包含在所述学习结果中时根据所述学习结果中的文件名称判断当前打开的文件是否为所述待加速软件启动所需的文件,
文件预取模块,用于在当前打开的文件是所述待加速软件启动所需的文件时根据所述学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度预取所打开的文件存入内存的文件预取缓冲区,并建立文件预取记录表,所述文件预取记录表包括文件名称、读取偏移、读取长度和内存地址,
第三判断模块,用于在对所述打开的文件进行读取时根据所述文件预取记录表判断需要读取的文件数据是否位于文件预取缓冲区中,
处理模块,用于当需要读取的文件数据位于文件预取缓冲区中时,从所述文件预取缓冲区复制出所需读取的文件数据,以完成所述待加速软件启动所需的读取操作。
在本发明的一些实施方式中,所述装置可进一步包括学习模块,用于当所述待加速软件未包含在所述学习结果中时获取所述待加速软件启动过程中的文件操作行为,所述文件操作行为包括所需读取的文件名称、文件的读取顺序、每次文件读取的偏移和每次文件读取的长度。
在本发明的一些实施方式中,所述装置可进一步包括磁盘预取模块,用于:在开始获取所述待加速软件启动过程中的文件操作行为之后,对所述待加速软件启动过程中所需读取的数据进行磁盘预取,并建立磁盘预取记录表,所述磁盘预取包括通过磁盘过滤驱动截获系统输入/输出管理器发给磁盘的第一输入/输出请求包IRP读请求,并根据所述第一IRP读请求中的读取偏移和读取长度查询磁盘过滤驱动维护的所述磁盘预取记录表以判断所述第一IRP读请求所需读取的数据是否位于磁盘过滤驱动的磁盘预取缓冲区中,若是,则从所述磁盘预取缓冲区复制出所述第一IRP读请求所需读取的磁盘数据以完成本次读取操作,若否,则将所述第一IRP读请求进行阻塞,构造比所述第一IRP读请求的读取长度长的第二IRP读请求,将根据所述第二IRP读请求的读取长度读取的磁盘数据插入所述磁盘预取缓冲区,并将所述第二IRP读请求的读取偏移和缓存大小插入所述磁盘预取记录表,然后根据所述第一IRP读请求从所述磁盘预取缓冲区复制出所需读取的磁盘数据以完成本次读取操作。
在本发明的一些实施方式,所述学习模块还可用于在所述待加速软件启动完毕之后,将获取的所述待加速软件启动过程中的文件操作行为输出作为学习结果,所述装置还可包括磁盘整理模块,用于根据所述学习结果进行磁盘整理。
在本发明的一些实施方式中,所述磁盘整理模块根据所述学习结果进行磁盘整理可进一步包括:根据所述学习结果中的所需读取的文件名称和文件的读取顺序对磁盘进行整理以便所需读取的文件在磁盘上按照文件的读取顺序存放。
在本发明的一些实施方式中,所述磁盘整理模块根据所述学习结果进行磁盘整理进一步包括:根据所述学习结果中的所需读取的文件名称进行磁盘整理以便所需读取的文件数据在连续的磁盘扇区存储。
在本发明的一些实施方式中,所述文件预取模块根据所述学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度预取所打开的文件存入内存的文件预取缓冲区可进一步包括:根据所述学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度确定出需要读取的一个或一个以上文件上相应的一个或一个以上片段,将所述一个或一个以上文件上的所述相应的一个或一个以上片段合并为一个组合文件,并为所述组合文件建立片段索引,对所述组合文件进行磁盘整理以便所述组合文件在磁盘上连续存放,然后将经磁盘整理的组合文件存入内存的文件预取缓冲区。
在本发明的一些实施方式中,所述装置可进一步包括触发器模块,用于:在启动待加速软件之前,判断所述待加速软件是否已经包含在学习结果中,若是,则根据所述学习结果中软件启动所需读取的文件名称对各个所需读取的文件发起打开操作以触发文件预取模块根据所述学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度预取所打开的文件存入内存的文件预取缓冲区,并建立文件预取记录表。
本发明实施方式提供的用于软件加速的方法和装置,通过学习模块学习软件启动过程所需读取的文件名称、每次文件读取的偏移、每次文件读取的长度作为学习结果,保证了文件预取模块能够比较精确地预取任一款软件启动所需读取的文件数据存入内存缓冲区,改善了软件加速方案的通用性,同时也大大提高了软件启动过程中的文件读取速度;其次,在需要加速的一款软件首次运行时,通过磁盘预取模块将启动所需的磁盘数据预存入内存缓冲区,能够实现对任一款软件的多时刻加速;再次,磁盘整理模块根据学习模块对任一款软件的学习结果进行相应的文件整理,能够进一步提高文件数据的读取速度,加速任一软件的启动过程。
附图说明
图1概要示出了根据本发明实施方式的用于软件加速的方法的流程示意图;
图2概要示出了根据本发明实施方式的用于软件加速的装置的结构示意图。
具体实施方式
为使本发明的实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。
参见图1,图1概要示出了根据本发明实施方式的用于软件加速的方法的流程示意图,用于软件加速的方法具体可包括:
S101,当启动待加速软件时,判断待加速软件是否已经包含学习结果中,该学习结果包括软件启动所需读取的文件名称、每次文件读取的偏移、每次文件读取的长度,若已经包含学习结果中,则执行步骤S102,
S102,根据学习结果中的文件名称判断当前打开的文件是否为待加速软件启动所需的文件,若是待加速软件启动所需的文件,则执行步骤S103,
S103,根据学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度预取所打开的文件存入内存的文件预取缓冲区,并建立文件预取记录表,文件预取记录表包括文件名称、读取偏移、读取长度和内存地址,
S104,对所打开的文件进行读取,
S105,根据文件预取记录表判断需要读取的文件数据是否位于文件预取缓冲区中,若需要读取的文件数据位于文件预取缓冲区中,则执行步骤S106,
S106,从文件预取缓冲区复制出所需读取的文件数据,
S107,完成待加速软件启动所需的读取操作。
在本发明的一些实施方式中,如图1概要所示,用于对任一款软件加速的方法可包括执行步骤S101启动待加速软件,并进一步判断待加速软件是否已经包含学习结果中,学习结果包括软件启动所需读取的文件名称、每次文件读取的偏移、每次文件读取的长度,也就是说,判断该款软件在本次启动之前是否已经学习过。若待加速软件已经包含在学习模块的学习结果中,换而言之,该款软件已经学习过,学习结果中包含该软件启动所需读取的文件名称、每次文件读取的偏移和每次文件读取的长度,那么进一步执行步骤S102根据学习结果中该软件启动所需读取的文件名称判断当前打开的文件是否为该待加速软件所需读取的文件,若当前打开的文件是该待加速软件所需读取的文件,则执行步骤S103根据学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度预取所打开的文件存入内存的文件预取缓冲区,并建立文件预取记录表,文件预取记录表包括文件名称、读取偏移、读取长度和内存地址。
接下来,执行步骤S104对所打开的文件进行读取,并执行步骤S105根据文件预取记录表(例如,文件名称、读取偏移、读取长度和内存地址等信息)判断需要读取的文件数据是否位于文件预取缓冲区中,若需要读取的文件数据位于文件预取缓冲区,则执行步骤S106从文件预取缓冲区复制出所需读取的文件数据,以完成该待加速软件启动所需的本次读取操作。本发明的实施方式通过学习结果获取软件启动过程中的文件读取信息,确保了针对任一款软件都能够较为精确地将所需文件预存入读取速度快的内存缓冲区,从而当对该软件所需文件数据进行读取时,显著提高文件读取的速度,对于各种软件均能够缩短软件启动所需的时间。
在本发明的一些实施方式中,步骤S103中的文件预取通过文件预取驱动拦截操作系统所有的文件打开(IRP_MJ_CREATE)请求,在文件打开的完成函数中获取需要打开的文件名称,并在学习结果中查询是否有与该文件名称匹配的文件名称,若有匹配的文件名称,则通知内核预取线程对该文件进行预取,预取线程在接收到该通知后,会根据学习结果中该文件名称、每次文件读取的偏移和每次文件读取的长度将对应的文件读取至内存的文件预取缓冲区,并建立文件预取记录表。文件预取可以对一个文件整体预取,也可以对一个文件的一个或多个片段预取。例如,在用户操作系统内存充裕的场景下,可以采用对一个文件整体预取,这样的情形下,文件预取记录表可包括文件名称、文件长度和内存地址,可省略读取偏移和读取长度项目。又例如,在用户操作系统内存不是特别充裕的场景下,可以采用文件片段预取的方式,在这样的情形下,文件预取记录表可包括文件名称、读取偏移、读取长度和内存地址。在上述不同的情形下,预取记录表的实现方式均优选地采用哈希表。
在用户操作系统内存不充裕的场景下,在该软件的学习结果显示需要预取的文件数量较大并且每个文件内部读取的片段数据较少时,步骤S103中的文件预取可以通过将文件片段合并的方式进一步加快文件预取的速率。具体而言,根据学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度确定出需要读取的一个或一个以上文件上相应的一个或一个以上片段,将该一个或一个以上文件上的该相应的一个或一个以上片段合并为一个组合文件,并为组合文件建立片段索引,对组合文件进行磁盘整理以便组合文件在磁盘上连续存放,然后将经磁盘整理的组合文件存入内存的文件预取缓冲区。例如,根据学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度确定出软件启动读取了文件A的第1、3、10、35片段、文件B的第1、2、25、55片段及文件C的第9、15、33片段;将文件A、B与C中所有需要预取的片段合成一个新的组合文件X,并建立相应的索引,确保读取文件A、B与C中的相应片段时能够定位到组合文件X中的某一片段;对组合文件X进行磁盘整理,确保组合文件X在磁盘上连续存放,然后将经磁盘整理的组合文件存入内存的文件预取缓冲区。在采用上述方式对所需读取的文件片段进行合并处理后,当待加速软件启动打开文件A、B或C中需要预取的任意一个片段时,均可以触发文件预取模块对组合文件X进行预取,且仅进行一次预取操作即可满足所有的文件预取需求,能够进一步减少预取次数,加快文件预取操作。
接下来,执行步骤S104对打开的文件进行读取,然后,执行步骤S105,通过文件预取驱动截获该待加速软件发起的文件读取请求,对于每个文件读取请求,文件系统过滤驱动解析需要读取的文件名称、读取偏移和读取长度等信息,并根据解析得到的信息查询文件预取记录表以确定需要读取的文件数据是否位于文件预取缓冲区,若需要读取的文件数据位于文件预取缓冲区,则执行步骤S106从文件预取缓冲区复制出对应的文件数据,以及步骤S107完成本次读取操作。
在本发明的一些实施方式中,用于软件加速的方法可进一步包括,在启动待加速软件之前,判断待加速软件是否已经包含在学习结果中,若是,则根据学习结果中软件启动所需读取的文件名称对各个所需读取的文件发起打开操作,并根据学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度预取所打开的文件存入文件预取缓冲区,并建立文件预取记录表。例如,可以循环检测操作系统的当前状态,检测操作系统是否完成启动所需的主要工作且处于空闲状态,检测的方法可包括但不限于检测CPU利用率、磁盘负载、内存负载等信息。在确定操作系统处于平稳状态后,根据学习结果中一款软件启动所需读取的文件名称,对该软件各个所需读取的文件发起打开操作,并根据学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度预取所打开的文件存入文件预取缓冲区,并建立文件预取记录表。此处描述的文件预取操作可以采用与上面描述的多种文件预取方式类似的操作,在此不再赘述。
在本发明的一些实施方式中,用于软件加速的方法可进一步包括:步骤S101的判断结果为否时,若待加速软件未包含在学习结果中,也就是说,在待加速软件首次运行的情形下,则获取待加速软件启动过程中的文件操作行为,文件操作行为包括所需读取的文件名称、文件的读取顺序、每次文件读取的偏移和每次文件读取的长度。其中,学习模块学习一款软件的启动过程中文件操作行为的方式包括但不限于使用文件系统过滤驱动、Hook等技术。
在本发明的一些实施方式中,在待加速软件首次运行的情形下,用于软件加速的方法可进一步包括:在开始获取待加速软件启动过程中的文件操作行为之后,对待加速软件启动过程中所需读取的数据进行磁盘预取,并建立磁盘预取记录表,磁盘预取包括通过磁盘过滤驱动截获系统输入/输出管理器发给磁盘的第一输入/输出请求包IRP(I/Orequest packet)读请求,并根据第一IRP读请求中的读取偏移和读取长度查询磁盘过滤驱动维护的磁盘预取记录表以判断第一IRP读请求所需读取的磁盘数据是否位于磁盘过滤驱动的磁盘预取缓冲区,若是,则从磁盘预取缓冲区复制出第一IRP读请求所需读取的磁盘数据以完成本次读取操作,若否,则将第一IRP读请求进行阻塞,构造比第一IRP读请求的读取长度长的第二IRP读请求,将根据第二IRP读请求的读取长度读取的磁盘数据插入磁盘预取缓冲区,并将第二IRP读请求的读取偏移和缓存大小插入磁盘预取记录表,然后根据第一IRP读请求从磁盘预取缓冲区复制出所需读取的磁盘数据以完成本次读取操作。例如,在开始获取待加速软件启动过程中的文件操作行为之后,由应用层触发程序通知磁盘过滤驱动开始磁盘预取。磁盘过滤驱动在获取相应的通知后,开始磁盘预取,并建立磁盘预取记录表,其中磁盘预取记录表包括预取的磁盘数据的读取偏移和读取长度等信息。磁盘过滤驱动截获系统I/O管理器发送给磁盘的IRP读请求,根据该IRP读请求获取需要读取的磁盘数据的偏移和长度,根据需要读取的磁盘数据的偏移和长度查询磁盘过滤驱动内部维护磁盘预取缓冲区中的磁盘预取记录表,判断本次需要读取的磁盘数据是否位于磁盘过滤驱动维护的磁盘预取缓冲区中,若在内存的磁盘预取缓冲区中查询到本次需要读取的磁盘数据,则从内存的磁盘预取缓冲区中复制需要读取的磁盘数据到IRP的输出缓冲区,完成该IRP读请求,并通知I/O管理器此次读取操作完成。若在内存的磁盘预取缓冲区中未查询到本次需要读取的磁盘数据,也就是说,本次需要读取的磁盘数据未在磁盘过滤驱动维护的磁盘预取缓冲区中,则将该IRP读请求(视为原始IRP请求)进行pending(阻塞),同时构造与原始IRP读请求相比读取长度长的新IRP读请求,并将该新IRP读请求发送至磁盘驱动。原始IRP请求的读取长度通常为4KB,新IRP读请求将原先的读取长度(例如,4KB)扩展为64KB或128KB,这相当于将原先需要获取的扇区以及该扇区之后连续的若干扇区同时读取至磁盘过滤驱动的磁盘预取缓冲区中。待磁盘区域完成新IRP读请求之后,将读取到的数据(例如,64KB或128KB)插入磁盘预取缓冲区,将新IRP读请求的读取偏移和缓存大小插入磁盘预取记录表中,同时根据原始IRP读请求的读取长度(例如,4KB)将相应的磁盘数据复制至对应的IRP内存缓冲区,完成该IRP读请求。本发明通过构建比原始IRP读请求的读取长度长的新IRP读请求进行磁盘数据预取,更进一步提高了磁盘预取的速度,缩短了文件读取的时间,加速了软件的启动过程。当磁盘过滤驱动维护的磁盘预取缓冲区填满之后,磁盘过滤驱动不再进行新的预取操作,对于每次截获的IRP读请求,仅根据从IRP读请求获取的读取偏移和读取长度查询磁盘过滤驱动的磁盘预取缓冲区中维护的磁盘预取记录表以判断该IRP读请求所需读取的数据是否位于磁盘预取缓冲区,若需要读取的文件数据位于磁盘预取缓冲区中,则从磁盘预取缓冲区中复制出相应的磁盘数据,完成该IRP请求,若需要读取的磁盘数据不位于磁盘预取缓冲区,则不构造新IRP进行预取操作,仅将原始IRP请求继续向下层驱动进行传递。当软件启动完毕之后,由应用层触发器通知磁盘过滤驱动停止预取操作。磁盘过滤驱动获取该通知后,停止所有的查询与预取操作,清空内部维护的磁盘预取缓冲区和磁盘预取记录表,此后对于获取到的所有IRP均直接传递给下层驱动程序,不进行额外处理。
在本发明的一些实施方式中,用于软件加速的方法可进一步包括:在待加速软件启动完毕之后,将获取的启动过程中的文件操作行为输出作为学习结果,并根据学习结果进行磁盘整理。在一些情形下,根据学习结果进行磁盘整理可进一步包括:根据学习结果中的所需读取的文件名称和文件的读取顺序对磁盘进行整理以便所需读取的文件在磁盘上按照文件的读取顺序存放。具体地,根据学习结果将软件需要读取的各个文件按照读取顺序进行磁盘整理,以便需要读取的文件在磁盘上按照读取的顺序进行存放,不一定必须连续存放,并且尽量确保每个文件内部在磁盘连续的扇区存储。在另外一些情形下,根据学习结果进行磁盘整理可进一步包括:根据学习结果中的所需读取的文件名称进行磁盘整理以便所需读取的文件数据在连续的磁盘扇区存储。具体地,可根据学习结果中一款软件所需读取的文件名称对所需读取的各个文件分别进行磁盘整理,以便各个文件均在连续的磁盘扇区中存储。除了上述两种磁盘文件整理方式,还可以采用全文件整理的方式,具体地,可以将软件安装目录以及子目录下所有的文件进行磁盘整理操作,以便每个文件内部在磁盘上顺序、连续的存放。文件系统对文件以“簇”为单位进行管理,“簇”通常为4KB,对于大于4KB的文件将由多个“簇”组成。每一“簇”包含一个或多个“扇区”,扇区是硬盘一次读写的最小单位,通常为512字节,扇区在硬盘上表现为一段连续的磁道。当对一个文件发起读请求时,文件系统会根据需要读取文件的名称、读取偏移与读取大小将对文件的读请求转换为对磁盘上相应扇区的读请求。当PC机上的软件启动时,需要加载能够保证其正常运行所需的dll(Dynamic Link Library,动态链接库)、资源文件与配置文件等,因此需要对相应的文件发起相应读请求,且通常情况下软件越庞大,则读请求的数量越大。文件系统在获取到这些读请求后,将这些请求依次转化为对磁盘的读请求并发往磁盘。现有主流磁质机械硬盘的每一次读取均需要经过寻道、读取两个步骤,其中寻道操作比较耗时,尤其是当需要读多个不连续的扇区时,磁盘需要不停的去进行寻道操作,大大增加了文件数据的读取时间。本发明实施方式由磁盘整理模块根据学习结果进行磁盘整理,以便软件启动所需的文件在磁盘上连续、相邻的扇区内存储,显著减少了磁盘的寻道次数和寻道时间,改善了文件数据的读取速度。
以上结合具体实施例描述了本发明的用于软件加速的方法,下面将结合具体实施例描述与上述方法对应的用于软件加速的装置。
参见图2,图2概要示出了根据本发明实施方式的用于软件加速的装置的结构示意图,用于软件加速的装置200可包括:
第一判断模块201,用于当启动待加速软件时,判断待加速软件是否已经包含在学习结果中,该学习结果包括软件启动所需读取的文件名称、每次文件读取的偏移、每次文件读取的长度,
第二判断模块202,用于当待加速软件已经包含在学习结果中时根据该学习结果中的文件名称判断当前打开的文件是否为待加速软件启动所需的文件,
文件预取模块203,用于在当前打开的文件是待加速软件启动所需的文件时根据学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度预取所打开的文件存入内存的文件预取缓冲区,并建立文件预取记录表,文件预取记录表包括文件名称、读取偏移、读取长度和内存地址,
第三判断模块204,用于在对所打开的文件进行读取时根据文件预取记录表判断需要读取的文件数据是否位于文件预取缓冲区中,
处理模块205,用于当需要读取的文件数据位于文件预取缓冲区中时从文件预取缓冲区复制出所需读取的文件数据,以完成待加速软件启动所需的读取操作。
在本发明的实施方式中,用于软件加速的装置可包括第一判断模块201,第一判断模块201在启动待加速软件之后,判断待加速软件是否已经包含在学习结果中,学习结果包括软件启动所需读取的文件名称、每次文件读取的偏移、每次文件读取的长度,也就是说,判断该款软件在本次启动之前是否已经由学习模块学习过。若待加速软件已经包含在学习结果中,换而言之,该款软件已经学习过,学习结果中包含该软件启动所需读取的文件名称、每次文件读取的偏移和每次文件读取的长度。
第二判断模块202用于当待加速软件已经包含在学习结果中时根据学习结果中该软件启动所需读取的文件名称判断当前打开的文件是否为该待加速软件所需读取的文件,若当前打开的文件是该待加速软件所需读取的文件,则触发文件预取模块203根据学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度预取所打开的文件存入内存的文件预取缓冲区,并建立文件预取记录表,文件预取记录表包括文件名称、读取偏移、读取长度和内存地址。
接下来,第三判断模块204在对所打开的文件进行读取时根据文件预取模块203构建的文件预取记录表(例如,文件名称、读取偏移、读取长度和内存地址等信息)判断需要读取的文件数据是否位于文件预取缓冲区中,若需要读取的文件数据位于文件预取缓冲区,则由处理模块205从文件预取缓冲区复制出所需读取的文件数据,以完成该待加速软件启动所需的本次读取操作。本发明的实施方式通过学习模块的学习结果获取软件启动过程中的文件读取信息,确保了文件预取模块针对任一款软件都能够较为精确地将所需文件预存入读取速度快的内存缓冲区,从而当对该软所需文件数据进行读取时,显著提高文件读取的速度,对于各种软件均能够缩短软件启动所需的时间。
在本发明的一些实施方式中,文件预取模块202通过文件预取驱动拦截操作系统所有的文件打开(IRP_MJ_CREATE)请求,在文件打开的完成函数中获取需要打开的文件名称,并在学习结果中查询是否有与该文件名称匹配的文件名称,若有匹配的文件名称,则通知内核预取线程对该文件进行预取,预取线程在接收到该通知后,会根据学习结果中该文件名称、每次文件读取的偏移和每次文件读取的长度将对应的文件读取至文件预取缓冲区,并建立文件预取记录表。文件预取可以对一个文件整体预取,也可以对一个文件的一个或多个片段预取。例如,在用户操作系统内存充裕的场景下,可以采用对一个文件整体预取,这样的情形下,文件预取记录表可包括文件名称、文件长度和内存地址,可省略读取偏移和读取长度项目。又例如,在用户操作系统内存不是特别充裕的场景下,可以采用文件片段预取的方式,在这样的情形下,文件预取记录表可包括文件名称、读取偏移、读取长度和内存地址。在上述不同的情形下,预取记录表的实现方式均优选地采用哈希表。
在用户操作系统内存不充裕的场景下,在该软件的学习结果显示需要预取的文件数量较大并且每个文件内部读取的片段数据较少时,可以通过采用将文件片段合并的方式进一步加快文件预取的速率。具体而言,根据学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度确定出需要读取的一个或一个以上文件上相应的一个或一个以上片段,将该一个或一个以上文件上的该相应的一个或一个以上片段合并为一个组合文件,并为组合文件建立片段索引,对组合文件进行磁盘整理以便组合文件在磁盘上连续存放,然后将经磁盘整理的组合文件存入内存的文件预取缓冲区。例如,根据学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度确定出软件启动读取了文件A的第1、3、10、35片段、文件B的第1、2、25、55片段及文件C的第9、15、33片段;将文件A、B与C中所有需要预取的片段合成一个新的组合文件X,并建立相应的索引,确保读取文件A、B与C中的相应片段时能够定位到组合文件X中的某一片段;对组合文件X进行磁盘整理,确保组合文件X在磁盘上连续存放,然后将经磁盘整理的组合文件存入内存的文件预取缓冲区。在采用上述方式对所需读取的文件片段进行合并处理后,当待加速软件启动打开文件A、B或C中需要预取的任意一个片段时,均可以触发文件预取模块对组合文件X进行预取,且仅进行一次预取操作即可满足所有的文件预取需求,能够进一步减少预取次数,加快文件预取操作。
通过文件预取模块对待加速软件所需读取的文件数据进行预取后,第三判断模块204当对打开的文件进行读取时,通过文件预取驱动将截获该待加速软件发起的文件读取请求,对于每个文件读取请求,文件系统过滤驱动解析需要读取的文件名称、读取偏移和读取长度等信息,并根据解析得到的信息查询文件预取记录表以确定需要读取的文件数据是否位于文件预取缓冲区,若需要读取的文件数据位于文件预取缓冲区,则通过处理模块205从文件预取缓冲区复制出对应的文件数据,以完成本次读取操作。
在上面描述的实施方式中,文件预取模块203均采用由相应的文件打开操作实时触发的方式,除此之外,还可以设置单独的触发器模块,采用由触发器模块单独触发的方式来进行文件预取操作。具体地,在启动待加速软件之前,判断待加速软件是否已经包含在学习结果中,若是,则由触发器模块根据学习结果中软件启动所需读取的文件名称对各个所需读取的文件发起打开操作以触发文件预取模块203根据学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度预取所打开的文件存入文件预取缓冲区,并建立文件预取记录表。例如,可以额外设置触发器模块,该触发器模块随操作系统的启动而启动,触发器模块启动后循环检测操作系统的当前状态,检测操作系统是否完成启动所需的主要工作且处于空闲状态,检测的方法可包括但不限于检测CPU利用率、磁盘负载、内存负载等信息。触发器模块确定操作系统处于平稳状态后,根据学习结果中一款软件启动所需读取的文件名称,对该软件各个所需读取的文件发起打开操作以触发文件预取模块根据学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度预取所打开的文件存入文件预取缓冲区,并建立文件预取记录表。
在本发明的一些实施方式中,若待加速软件未包含在学习结果中,也就是说,在待加速软件首次运行的情形下,用于软件加速的装置可进一步包括学习模块,学习模块用于获取待加速软件启动过程中的文件操作行为,文件操作行为包括所需读取的文件名称、文件的读取顺序、每次文件读取的偏移和每次文件读取的长度。其中,学习模块学习一款软件的启动过程中文件操作行为的方式包括但不限于使用文件系统过滤驱动、Hook等技术。
在本发明的一些实施方式中,在待加速软件首次运行的情形下,用于软件加速的装置可进一步包括磁盘预取模块。在启动学习模块开始获取软件启动过程中的文件操作行为之后,启动磁盘预取模块对待加速软件启动过程中所需读取的文件数据进行磁盘预取,并建立磁盘预取记录表,磁盘预取包括通过磁盘过滤驱动截获系统输入/输出管理器发给磁盘的第一输入/输出请求包IRP读请求,并根据第一IRP读请求中的读取偏移和读取长度查询磁盘过滤驱动的磁盘预取缓冲区中维护的磁盘预取记录表以判断第一IRP读请求所需读取的数据是否位于磁盘过滤驱动的磁盘预取缓冲区中,若是,则从磁盘预取缓冲区复制出第一IRP读请求所需读取的磁盘数据以完成本次读取操作,若否,则将第一IRP读请求进行阻塞,构造比第一IRP读请求的读取长度长的第二IRP读请求,将根据第二IRP读请求的读取长度读取的磁盘数据插入磁盘预取缓冲区,并将第二IRP读请求的读取偏移和缓存大小插入磁盘预取记录表,然后根据第一IRP读请求从磁盘预取缓冲区复制出所需读取的数据以完成本次读取操作。例如,在启动学习模块之后,由应用层触发程序通知磁盘过滤驱动开始磁盘预取。磁盘过滤驱动在获取相应的通知后,开始磁盘预取,并建立磁盘预取记录表,其中磁盘预取记录表包括预取的磁盘数据的读取偏移和读取长度等信息。磁盘过滤驱动截获系统I/O管理器发送给磁盘的IRP读请求,根据该IRP读请求获取需要读取的磁盘数据的偏移和长度,根据需要读取的磁盘数据的偏移和长度查询磁盘过滤驱动内部维护的磁盘预取缓冲区中的磁盘预取记录表,判断本次需要读取的磁盘数据是否位于磁盘过滤驱动维护的磁盘预取缓冲区中,若在磁盘预取缓冲区中查询到本次需要读取的磁盘数据,则从磁盘预取缓冲区中复制需要读取的磁盘数据到IRP的输出缓冲区,完成该IRP读请求,并通知I/O管理器此次读取操作完成。若在磁盘预取缓冲区中未查询到本次需要读取的磁盘数据,也就是说,本次需要读取的磁盘数据未在磁盘过滤驱动维护的内存缓冲区中,则将该IRP读请求(视为原始IRP请求)进行pending(阻塞),同时构造与原始IRP读请求相比读取长度长的新IRP读请求,并将该新IRP读请求发送至磁盘驱动。原始IRP请求的读取长度通常为4KB,新IRP读请求将原先的读取长度(例如,4KB)扩展为64KB或128KB,这相当于将原先需要获取的扇区以及该扇区之后连续的若干扇区同时读取至磁盘过滤驱动的内存缓冲区中。待磁盘区域完成新IRP读请求之后,将读取到的数据(例如,64KB或128KB)插入磁盘预取缓冲区,将新IRP读请求的读取偏移和缓存大小插入磁盘预取记录表中,同时根据原始IRP读请求的读取长度(例如,4KB)将相应的磁盘数据复制至对应的IRP内存缓冲区,完成该IRP读请求。本发明通过构建比原始IRP读请求的读取长度长的新IRP读请求进行磁盘数据预取,更进一步提高了磁盘预取的速度,缩短了文件读取的时间,加速了软件的启动过程。当磁盘过滤驱动维护的磁盘预取缓冲区填满之后,磁盘过滤驱动不再进行新的预取操作,对于每次截获的IRP读请求,仅根据从IRP读请求获取的读取偏移和读取长度查询磁盘过滤驱动的磁盘预取缓冲区中维护的磁盘预取记录表以判断该IRP读请求所需读取的数据是否位于磁盘预取缓冲区,若需要读取的磁盘数据位于磁盘预取缓冲区,则从磁盘预取缓冲区中复制出相应的磁盘数据,完成该IRP请求,若需要读取的磁盘数据不位于磁盘预取缓冲区,则不构造新IRP进行预取操作,仅将原始IRP请求继续向下层驱动进行传递。当软件启动完毕之后,由应用层触发器通知磁盘过滤驱动停止预取操作。磁盘过滤驱动获取该通知后,停止所有的查询与预取操作,清空内部维护的磁盘预取缓冲区和磁盘预取记录表,此后对于获取到的所有IRP均直接传递给下层驱动程序,不进行额外处理。
在本发明的一些实施实施方式中,学习模块在待加速软件启动完毕之后,将获取的启动过程中的文件操作行为输出作为学习结果,用于软件加速的装置可进一步包括磁盘整理模块,磁盘整理模块根据学习结果进行磁盘整理。在一些情形下,磁盘整理模块根据学习结果进行磁盘整理可进一步包括:根据学习结果中的所需读取的文件名称和文件的读取顺序对磁盘进行整理以便所需读取的文件在磁盘上按照文件的读取顺序存放。具体地,根据学习结果将软件需要读取的各个文件按照读取顺序进行磁盘整理,以便需要读取的文件在磁盘上按照读取的顺序进行存放,不一定必须连续存放,并且尽量确保每个文件内部在磁盘连续的扇区存储。在另外一些情形下,磁盘整理模块根据学习结果进行磁盘整理可进一步包括:根据学习结果中的所需读取的文件名称进行磁盘整理以便所需读取的文件数据在连续的磁盘扇区存储。具体地,可根据学习结果中一款软件所需读取的文件名称对所需读取的各个文件分别进行磁盘整理,以便各个文件均在连续的磁盘扇区中存储。除了上述两种磁盘文件整理方式,还可以采用全文件整理的方式,具体地,可以将软件安装目录以及子目录下所有的文件进行磁盘整理操作,以便每个文件内部在磁盘上顺序、连续的存放。本发明实施方式由磁盘整理模块根据学习结果进行磁盘整理,以便软件启动所需的文件在磁盘上连续、相邻的扇区内存储,显著减少了磁盘的寻道次数和寻道时间,改善了文件数据的读取速度。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件结合硬件平台的方式来实现,当然也可以全部通过硬件来实施。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,智能手机或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本发明说明书中使用的术语和措辞仅仅为了举例说明,并不意味构成限定。本领域技术人员应当理解,在不脱离所公开的实施方式的基本原理的前提下,对上述实施方式中的各细节可进行各种变化。因此,本发明的范围只由权利要求确定,在权利要求中,除非另有说明,所有的术语应按最宽泛合理的意思进行理解。

Claims (12)

1.一种用于软件加速的方法,其特征在于,包括:
当启动待加速软件时,判断所述待加速软件是否已经包含学习结果中,所述学习结果包括软件启动所需读取的文件名称、每次文件读取的偏移、每次文件读取的长度,
若已经包含在所述学习结果中,则根据所述学习结果中的文件名称判断当前打开的文件是否为所述待加速软件启动所需的文件,
若是所述待加速软件启动所需的文件,则根据所述学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度预取所打开的文件存入内存的文件预取缓冲区,并建立文件预取记录表,所述文件预取记录表包括文件名称、读取偏移、读取长度和内存地址,
在对所述打开的文件进行读取时根据所述文件预取记录表判断需要读取的文件数据是否位于文件预取缓冲区中,
若需要读取的文件数据位于文件预取缓冲区中,则从文件预取缓冲区复制出所需读取的文件数据,以完成所述待加速软件启动所需的读取操作;
其中,所述方法进一步包括:
若所述待加速软件未包含在所述学习结果中,则获取所述待加速软件启动过程中的文件操作行为,所述文件操作行为包括所需读取的文件名称、文件的读取顺序、每次文件读取的偏移和每次文件读取的长度;
其中,所述方法进一步还包括:
在开始获取所述待加速软件启动过程中的文件操作行为之后,对所述待加速软件启动过程中所需读取的数据进行磁盘预取,并建立磁盘预取记录表,所述磁盘预取包括通过磁盘过滤驱动截获系统输入/输出管理器发给磁盘的第一输入/输出请求包IRP读请求,并根据所述第一IRP读请求中的读取偏移和读取长度查询磁盘过滤驱动的磁盘预取缓冲区维护的所述磁盘预取记录表以判断所述第一IRP读请求所需读取的数据是否位于磁盘过滤驱动的磁盘预取缓冲区中,
若是,则从磁盘预取缓冲区复制出所述第一IRP读请求所需读取的磁盘数据以完成本次读取操作,
若否,则将所述第一IRP读请求进行阻塞,构造比所述第一IRP读请求的读取长度长的第二IRP读请求,将根据所述第二IRP读请求的读取长度读取的磁盘数据插入所述磁盘预取缓冲区,并将所述第二IRP读请求的读取偏移和缓存大小插入所述磁盘预取记录表,根据所述第一IRP读请求从所述磁盘预取缓冲区复制出所需读取的磁盘数据以完成本次读取操作。
2.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
在所述待加速软件启动完毕之后,将获取的启动过程中的文件操作行为输出作为学习结果,并根据所述学习结果进行磁盘整理。
3.根据权利要求2所述的方法,其特征在于,所述根据所述学习结果进行磁盘整理进一步包括:
根据所述学习结果中的所需读取的文件名称和文件的读取顺序对磁盘进行整理以便所需读取的文件在磁盘上按照文件的读取顺序存放。
4.根据权利要求2所述的方法,其特征在于,所述根据所述学习结果进行磁盘整理进一步包括:
根据所述学习结果中的所需读取的文件名称进行磁盘整理以便所需读取的文件数据在连续的磁盘扇区存储。
5.根据权利要求1所述的方法,其特征在于,所述根据所述学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度预取所打开的文件存入内存的文件预取缓冲区进一步包括:
根据所述学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度确定出需要读取的一个或一个以上文件上相应的一个或一个以上片段,将所述一个或一个以上文件上的所述相应的一个或一个以上片段合并为一个组合文件,并为所述组合文件建立片段索引,对所述组合文件进行磁盘整理以便所述组合文件在磁盘上连续存放,然后将经磁盘整理的组合文件存入内存的文件预取缓冲区。
6.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
在启动待加速软件之前,判断所述待加速软件是否已经包含在学习结果中,若是,则根据所述学习结果中软件启动所需读取的文件名称对各个所需读取的文件发起打开操作,并根据所述学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度预取所打开的文件存入内存的文件预取缓冲区,并建立文件预取记录表。
7.一种用于软件加速的装置,其特征在于,包括:
第一判断模块,用于当启动待加速软件时,判断所述待加速软件是否已经包含在学习结果中,所述学习结果包括软件启动所需读取的文件名称、每次文件读取的偏移、每次文件读取的长度,
第二判断模块,用于当所述待加速软件已经包含在所述学习结果中时根据所述学习结果中的文件名称判断当前打开的文件是否为所述待加速软件启动所需的文件,
文件预取模块,用于在当前打开的文件是所述待加速软件启动所需的文件时根据所述学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度预取所打开的文件存入内存的文件预取缓冲区,并建立文件预取记录表,所述文件预取记录表包括文件名称、读取偏移、读取长度和内存地址,
第三判断模块,用于在对所述打开的文件进行读取时根据所述文件预取记录表判断需要读取的文件数据是否位于文件预取缓冲区中,
处理模块,用于当需要读取的文件数据位于文件预取缓冲区中时从文件预取缓冲区复制出所需读取的文件数据,以完成所述待加速软件启动所需的读取操作;
所述装置进一步包括:
学习模块,用于当所述待加速软件未包含在所述学习结果中时获取所述待加速软件启动过程中的文件操作行为,所述文件操作行为包括所需读取的文件名称、文件的读取顺序、每次文件读取的偏移和每次文件读取的长度;
所述装置进一步包括磁盘预取模块,用于:
在开始获取所述待加速软件启动过程中的文件操作行为之后,对所述待加速软件启动过程中所需读取的数据进行磁盘预取,并建立磁盘预取记录表,所述磁盘预取包括通过磁盘过滤驱动截获系统输入/输出管理器发给磁盘的第一输入/输出请求包IRP读请求,并根据所述第一IRP读请求中的读取偏移和读取长度查询磁盘过滤驱动的磁盘预取缓冲区中维护的所述磁盘预取记录表以判断所述第一IRP读请求所需读取的数据是否位于磁盘过滤驱动的磁盘预取缓冲区中,
若是,则从所述磁盘预取缓冲区复制出所述第一IRP读请求所需读取的磁盘数据以完成本次读取操作,
若否,则将所述第一IRP读请求进行阻塞,构造比所述第一IRP读请求的读取长度长的第二IRP读请求,将根据所述第二IRP读请求的读取长度读取的磁盘数据插入所述磁盘预取缓冲区,并将所述第二IRP读请求的读取偏移和缓存大小插入所述磁盘预取记录表,根据所述第一IRP读请求从所述磁盘预取缓冲区复制出所需读取的磁盘数据以完成本次读取操作。
8.根据权利要求7所述的装置,其特征在于,所述学习模块,还用于在所述待加速软件启动完毕之后,将获取的所述待加速软件启动过程中的文件操作行为输出作为学习结果,
所述装置进一步包括磁盘整理模块,用于根据所述学习结果进行磁盘整理。
9.根据权利要求8所述的装置,其特征在于,所述磁盘整理模块根据所述学习结果进行磁盘整理进一步包括:
根据所述学习结果中的所需读取的文件名称和文件的读取顺序对磁盘进行整理以便所需读取的文件在磁盘上按照文件的读取顺序存放。
10.根据权利要求8所述的装置,其特征在于,所述磁盘整理模块根据所述学习结果进行磁盘整理进一步包括:
根据所述学习结果中的所需读取的文件名称进行磁盘整理以便所需读取的文件数据在连续的磁盘扇区存储。
11.根据权利要求7所述的装置,其特征在于,所述文件预取模块根据所述学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度预取所打开的文件存入内存的文件预取缓冲区进一步包括:
根据所述学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度确定出需要读取的一个或一个以上文件上相应的一个或一个以上片段,将所述一个或一个以上文件上的所述相应的一个或一个以上片段合并为一个组合文件,并为所述组合文件建立片段索引,对所述组合文件进行磁盘整理以便所述组合文件在磁盘上连续存放,然后将经磁盘整理的组合文件存入内存的文件预取缓冲区。
12.根据权利要求7所述的装置,其特征在于,所述装置进一步包括触发器模块,用于:
在启动待加速软件之前,判断所述待加速软件是否已经包含在学习结果中,若是,则根据所述学习结果中软件启动所需读取的文件名称对各个所需读取的文件发起打开操作以触发文件预取模块根据所述学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度预取所打开的文件存入内存的文件预取缓冲区,并建立文件预取记录表。
CN201510013172.7A 2015-01-12 2015-01-12 一种用于软件加速的方法和装置 Active CN104572205B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510013172.7A CN104572205B (zh) 2015-01-12 2015-01-12 一种用于软件加速的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510013172.7A CN104572205B (zh) 2015-01-12 2015-01-12 一种用于软件加速的方法和装置

Publications (2)

Publication Number Publication Date
CN104572205A CN104572205A (zh) 2015-04-29
CN104572205B true CN104572205B (zh) 2018-02-23

Family

ID=53088363

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510013172.7A Active CN104572205B (zh) 2015-01-12 2015-01-12 一种用于软件加速的方法和装置

Country Status (1)

Country Link
CN (1) CN104572205B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106293792B (zh) * 2015-06-02 2019-12-20 腾讯科技(深圳)有限公司 软件启动方法和装置
CN105677491B (zh) * 2015-12-31 2019-07-23 杭州华为数字技术有限公司 一种数据传输方法及装置
CN108549556B (zh) * 2018-04-16 2021-06-01 腾讯科技(北京)有限公司 一种应用程序加速方法、装置、终端及存储介质
CN109343789B (zh) * 2018-06-05 2021-08-17 深圳市木浪云数据有限公司 一种基于io场景识别的读加速方法、装置及电子设备
CN113128531B (zh) * 2019-12-30 2024-03-26 上海商汤智能科技有限公司 一种数据处理方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101814038A (zh) * 2010-03-23 2010-08-25 杭州顺网科技股份有限公司 一种加快计算机启动速度的方法
CN102707966A (zh) * 2012-04-12 2012-10-03 腾讯科技(深圳)有限公司 加速操作系统启动的方法及装置、预取信息生成方法及装置和终端
CN103150186A (zh) * 2013-03-15 2013-06-12 腾讯科技(深圳)有限公司 一种设备运行速度优化方法和装置
CN102289380B (zh) * 2010-06-21 2014-02-26 中标软件有限公司 firefox启动加速方法
CN104133691A (zh) * 2014-05-05 2014-11-05 腾讯科技(深圳)有限公司 加速启动的方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7181609B2 (en) * 2003-08-15 2007-02-20 Intel Corporation System and method for accelerated device initialization

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101814038A (zh) * 2010-03-23 2010-08-25 杭州顺网科技股份有限公司 一种加快计算机启动速度的方法
CN102289380B (zh) * 2010-06-21 2014-02-26 中标软件有限公司 firefox启动加速方法
CN102707966A (zh) * 2012-04-12 2012-10-03 腾讯科技(深圳)有限公司 加速操作系统启动的方法及装置、预取信息生成方法及装置和终端
CN103150186A (zh) * 2013-03-15 2013-06-12 腾讯科技(深圳)有限公司 一种设备运行速度优化方法和装置
CN104133691A (zh) * 2014-05-05 2014-11-05 腾讯科技(深圳)有限公司 加速启动的方法及装置

Also Published As

Publication number Publication date
CN104572205A (zh) 2015-04-29

Similar Documents

Publication Publication Date Title
CN104572205B (zh) 一种用于软件加速的方法和装置
CN104461632B (zh) 一种Web App加载方法及装置
CN104995895B (zh) 兼容扩展卸载令牌大小
CN105009139B (zh) 用于恶意软件检测的对应用的通用拆包
JP5697206B2 (ja) 不正アクセスに対する防御をするシステム、方法およびプログラム
JP2014523046A5 (zh)
US20120072911A1 (en) Trace assisted prefetching of virtual machines in a distributed system
CN104199684B (zh) 浏览器冷启动的实现方法及装置
TWI507987B (zh) 智能設備啓動過程的資料處理方法及智能設備
CA2490212A1 (en) Searchable archive
CN107633088A (zh) 一种文件管理方法及装置
CN106354873A (zh) 网页加载方法、装置及系统
CN106354851A (zh) 数据缓存方法及装置
WO2016115957A1 (zh) 一种面向用户与应用的计算机与智能设备加速方法和装置
CN111464874A (zh) 一种云桌面内播放网页视频的方法、系统及介质
US7793265B2 (en) Method, apparatus and computer program product for optimizing file accesses for an application executing in a virtual container
Lee et al. ActiveSort: Efficient external sorting using active SSDs in the MapReduce framework
CN104021028B (zh) 虚拟机环境下的web缓存方法及装置
CN103885776A (zh) 程序加速方法及其装置
CN111191243A (zh) 一种漏洞检测方法、装置和存储介质
CN105765531A (zh) 对程序二进制文件的通用拆包
CN110266792A (zh) 地址转换方法、装置、设备与计算机可读存储介质
CN104657358B (zh) 实现网页程序离线缓存的方法和系统
CN107194246A (zh) 一种用于实现动态指令集随机化的cpu
CN102981903B (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
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20190808

Address after: 100085 Beijing, Haidian District, No. ten on the ground floor, No. 10 Baidu building, layer 2

Patentee after: BEIJING BAIDU NETCOM SCIENCE AND TECHNOLOGY Co.,Ltd.

Address before: 100091 C, block, building No. 4, Zhongguancun Software Park, No. 8, West flourishing West Road, Beijing, China 1-03

Patentee before: Pacify a Heng Tong (Beijing) Science and Technology Ltd.