一种用于软件加速的方法和装置的制造方法

文档序号:8258085阅读:274来源:国知局
一种用于软件加速的方法和装置的制造方法
【技术领域】
[0001]本发明涉及计算机软件领域,更为具体而言,涉及一种用于软件加速的方法和装置。
【背景技术】
[0002]目前个人计算机(Personal Computer, PC)上运行的操作系统与大部分软件的性能瓶颈已经不再是CPU (Central Processing Unit,中央处理器)与内存,而是作为主要数据存储介质的硬盘,而近年来磁质硬盘的数据存取速率并未有明显的提升,硬盘厂商主要关注提升单位体积内存储密度用于生产出更大容量的硬盘。由于硬盘的数据存储性能未有明显的提升,而现有软件的体积却越来越大,因此造成了软件启动、运行时读取数据时间的增长,形成了用户直观上所感受到的软件“卡顿”现象,且这种“卡顿”现象在大型软件上表现的更加明显,例如Matlab、Photoshop、Visual Stud1等大型软件。
[0003]现有的软件启动加速方案主要是针对某一款软件,通过禁用其启动时不需要加载的插件或文件来达到软件启动加速的目的。这样的软件加速方案需要对软件进行大量的分析与测试,才能获知哪些插件或文件可以被禁用,且该方案对于某些软件来说可能根本无法使用。因此,亟需对多种软件可通用的软件加速方案。

【发明内容】

[0004]为解决上述技术问题,本发明提供了一种用于软件加速的方法和装置,通过学习结果获取软件启动所需读取的文件名称、每次文件读取的偏移和每次文件读取的长度,从而较为精确地将待加速软件需要读取的文件预存入内存缓冲区,显著改善了文件数据的读取速度,缩短了该软件启动所需的时间。
[0005]根据本发明实施方式的第一方面,提供了一种用于软件加速的方法,所述方法可包括:
[0006]当启动待加速软件时,判断所述待加速软件是否已经包含学习结果中,所述学习结果包括软件启动所需读取的文件名称、每次文件读取的偏移、每次文件读取的长度,
[0007]若已经包含所述学习结果中,则根据所述学习结果中的文件名称判断当前打开的文件是否为所述待加速软件启动所需的文件,
[0008]若是所述待加速软件启动所需的文件,则根据所述学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度预取所打开的文件存入内存的文件预取缓冲区,并建立文件预取记录表,所述文件预取记录表包括文件名称、读取偏移、读取长度和内存地址,
[0009]在对所述打开的文件进行读取时根据所述文件预取记录表判断需要读取的文件数据是否位于文件预取缓冲区中,
[0010]若需要读取的文件数据位于文件预取缓冲区中,则从文件预取缓冲区复制出所需读取的文件数据,以完成所述待加速软件启动所需的读取操作。
[0011]在本发明的一些实施方式中,所述方法可进一步包括:若所述待加速软件未包含所述学习结果中,则获取所述待加速软件启动过程中的文件操作行为,所述文件操作行为包括所需读取的文件名称、文件的读取顺序、每次文件读取的偏移和每次文件读取的长度。
[0012]在本发明的一些实施方式中,所述方法可进一步包括:在开始获取所述待加速软件启动过程中的文件操作行为之后,对所述待加速软件启动过程中所需读取的数据进行磁盘预取,并建立磁盘预取记录表,所述磁盘预取包括通过磁盘过滤驱动截获系统输入/输出管理器发给磁盘的第一输入/输出请求包IRP读请求,并根据所述第一 IRP读请求中的读取偏移和读取长度查询磁盘过滤驱动的磁盘预取缓冲区维护的所述磁盘预取记录表以判断所述第一 IRP读请求所需读取的数据是否位于磁盘过滤驱动的磁盘预取缓冲区中,若是,则从所述磁盘预取缓冲区复制出所述第一 IRP读请求所需读取的磁盘数据以完成本次读取操作,若否,则将所述第一 IRP读请求进行阻塞,构造比所述第一 IRP读请求的读取长度长的第二 IRP读请求,将根据所述第二 IRP读请求的读取长度读取的磁盘数据插入所述磁盘预取缓冲区,并将所述第二 IRP读请求的读取偏移和缓存大小插入所述磁盘预取记录表,然后根据所述第一 IRP读请求从所述磁盘预取缓冲区复制出所需读取的磁盘数据以完成本次读取操作。
[0013]在本发明的一些实施方式中,所述方法可进一步包括:在所述待加速软件启动完毕之后,将获取的启动过程中的文件操作行为输出作为学习结果,并根据所述学习结果进行磁盘整理。
[0014]在本发明的一些实施方式中,所述根据所述学习结果进行磁盘整理可进一步包括:根据所述学习结果中的所需读取的文件名称和文件的读取顺序对磁盘进行整理以便所需读取的文件在磁盘上按照文件的读取顺序存放。
[0015]在本发明的一些实施方式中,所述根据所述学习结果进行磁盘整理可进一步包括:根据所述学习结果中的所需读取的文件名称进行磁盘整理以便所需读取的文件数据在连续的磁盘扇区存储。
[0016]在本发明的一些实施方式中,所述根据所述学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度预取所打开的文件存入内存的文件预取缓冲区可进一步包括:根据所述学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度确定出需要读取的一个或一个以上文件上相应的一个或一个以上片段,将所述一个或一个以上文件上的所述相应的一个或一个以上片段合并为一个组合文件,并为所述组合文件建立片段索引,对所述组合文件进行磁盘整理以便所述组合文件在磁盘上连续存放,然后将经磁盘整理的组合文件存入内存的文件预取缓冲区。
[0017]在本发明的一些实施方式中,所述方法可进一步包括:在启动待加速软件之前,判断所述待加速软件是否已经包含在学习结果中,若是,则根据所述学习结果中软件启动所需读取的文件名称对各个所需读取的文件发起打开操作,并根据所述学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度预取所打开的文件存入内存的文件预取缓冲区,并建立文件预取记录表。
[0018]根据本发明实施方式的第二方面,提供了一种用于软件加速的装置,所述装置可包括:
[0019]第一判断模块,用于当启动待加速软件时,判断所述待加速软件是否已经包含在学习结果中,所述学习结果包括软件启动所需读取的文件名称、每次文件读取的偏移、每次文件读取的长度,
[0020]第二判断模块,用于当所述待加速软件已经包含在所述学习结果中时根据所述学习结果中的文件名称判断当前打开的文件是否为所述待加速软件启动所需的文件,
[0021]文件预取模块,用于在当前打开的文件是所述待加速软件启动所需的文件时根据所述学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度预取所打开的文件存入内存的文件预取缓冲区,并建立文件预取记录表,所述文件预取记录表包括文件名称、读取偏移、读取长度和内存地址,
[0022]第三判断模块,用于在对所述打开的文件进行读取时根据所述文件预取记录表判断需要读取的文件数据是否位于文件预取缓冲区中,
[0023]处理模块,用于当需要读取的文件数据位于文件预取缓冲区中时,从所述文件预取缓冲区复制出所需读取的文件数据,以完成所述待加速软件启动所需的读取操作。
[0024]在本发明的一些实施方式中,所述装置可进一步包括学习模块,用于当所述待加速软件未包含在所述学习结果中时获取所述待加速软件启动过程中的文件操作行为,所述文件操作行为包括所需读取的文件名称、文件的读取顺序、每次文件读取的偏移和每次文件读取的长度。
[0025]在本发明的一些实施方式中,所述装置可进一步包括磁盘预取模块,用于:在开始获取所述待加速软件启动过程中的文件操作行为之后,对所述待加速软件启动过程中所需读取的数据进行磁盘预取,并建立磁盘预取记录表,所述磁盘预取包括通过磁盘过滤驱动截获系统输入/输出管理器发给磁盘的第一输入/输出请求包IRP读请求,并根据所述第一 IRP读请求中的读取偏移和读取长度查询磁盘过滤驱动维护的所述磁盘预取记录表以判断所述第一 IRP读请求所需读取的数据是否位于磁盘过滤驱动的磁盘预取缓冲区中,若是,则从所述磁盘预取缓冲区复制出所述第一 IRP读请求所需读取的磁盘数据以完成本次读取操作,若否,则将所述第一 IRP读请求进行阻塞,构造比所述第一 IRP读请求的读取长度长的第二 IRP读请求,将根据所述第二 IRP读请求的读取长度读取的磁盘数据插入所述磁盘预取缓冲区,并将所述第二 IRP读请求的读取偏移和缓存大小插入所述磁盘预取记录表,然后根据所述第一 IRP读请求从所述磁盘预取缓冲区复制出所需读取的磁盘数据以完成本次读取操作。
[0026]在本发明的一些实施方式,所述学习模块还可用于在所述待加速软件启动完毕之后,将获取的所述待加速软件启动过程中的文件操作行为输出作为学习结果,所述装置还可包括磁盘整理模块,用于根据所述学习结果进行磁盘整理。
[0027]在本发明的一些实施方式中,所述磁盘整理模块根据所述学习结果进行磁盘整理可进一步包括:根据所述学习结果中的所需读取的文件名称和文件的读取顺序对磁盘进行整理以便所需读取的文件在磁盘上按照文件的读取顺序存放。
[0028]在本发明的一些实施方式中,所述磁盘整理模块根据所述学习结果进行磁盘整理进一步包括:根据所述学习结果中的所需读取的文件名称进行磁盘整理以便所需读取的文件数据在连续的磁盘扇区存储。
[0029]在本发明的一些实施方式中,所述文件预取模块根据所述学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度预取所打开的文件存入内存的文件预取缓冲区可进一步包括:根据所述学习结果中的文件名称、每次文件读取的偏移和每次文件读取的长度确定出需要读取的一个或一个以上文件上相应的一个或一个以上片段,将所述一个或一个以上文件上的所述相应的一个或一个以上片段合并为一个组合文件,并为所述组合文件建立片段索引
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1