程序启动的方法和装置制造方法

文档序号:6498786阅读:247来源:国知局
程序启动的方法和装置制造方法
【专利摘要】本发明公开了一种程序启动的方法和装置,属于计算机领域。所述方法包括:当接收到启动程序的指令时,获取所述程序对应的至少一个预取文件块信息,所述至少一个预取文件块信息由所述程序在历史启动和运行过程中发生的页面错误对应的文件块信息合并获得;加载所述至少一个预取文件块信息对应的文件块;加载所述程序的代码,以便启动所述应用程序。采用本发明提供的技术方案,使得在程序启动过程中,通过加载预取文件块信息对应的文件块,可预先将经常出现页面错误对应的文件块加载,大大减少了程序启动过程中硬页面错误发生次数,也即是减少了磁盘I/O次数,加快了程序启动速度。
【专利说明】程序启动的方法和装直
【技术领域】
[0001]本发明涉及计算机领域,特别涉及一种程序启动的方法和装置。
【背景技术】
[0002]随着计算机的发展,程序种类越来越多,而在程序启动或者使用过程依赖于某些映像文件(EXE文件和DLL文件),在加载并使用这些映像文件的过程中,当访问的虚拟页面没有被映射到有效的物理页面时,发生页面错误(Page Fault);如果虚拟页面被映射到内存中其他状态的物理页面,需要将该页面加入到活动页面,发生软页面错误(Soft Fault);如果虚拟页面被映射到磁盘上的文件中,就需要从磁盘文件中读取,发生硬页面错误(HardFault),而由于Hard Fault是按需读取的,所对应的单次I/O大小比较小(Data Pagel6KB和Code Page32KB),而由于每次Hard Fault造成的I/O比较随机,可能造成磁头在磁盘上的跳跃,这些磁盘I/O将大大减慢程序的运行。

【发明内容】

[0003]为了解决现有技术的问题,本发明实施例提供了一种程序启动的方法和装置。所述技术方案如下:
[0004]一种程序启动的方法,所述方法包括:
[0005]当接收到启动程序的指令时,获取所述程序对应的至少一个预取文件块信息,所述至少一个预取文件块信息由所述程序在历史启动和运行过程中发生的页面错误对应的文件块信息合并获得;
[0006]加载所述至少一个预取文件块信息对应的文件块;
[0007]加载所述程序的代码,以便启动所述应用程序。
[0008]当接收到启动程序的指令时,获取所述程序对应的至少一个预取文件块信息,之前包括:
[0009]分析所述程序的历史启动和运行过程,获取所述历史启动和运行过程中程序对应的至少一个预取文件块信息。
[0010]分析所述程序的历史启动和运行过程,获取所述历史启动和运行过程中程序对应的至少一个预取文件块信息,包括:
[0011]获取所述程序的历史启动和运行过程中加载的映像文件列表和发生的页面错误Page Fault的虚拟地址;
[0012]根据所述映像文件列表和所述虚拟地址计算每个所述虚拟地址对应的文件偏移量;
[0013]根据所述每个所述虚拟地址对应的文件偏移量,得到发生的页面错误对应的文件块信息;
[0014]对发生的页面错误对应的文件块信息进行合并,得到所述程序对应的至少一个预取文件块信息。[0015]获取所述程序的历史启动和运行过程中加载的映像文件列表和发生的页面错误Page Fault的虚拟地址,包括:
[0016]应用跟踪记录机制,记录所述程序的历史启动和运行过程中加载的映像文件列表和发生的页面错误Page Fault的虚拟地址。
[0017]对发生的页面错误对应的文件块信息进行合并,得到所述程序对应的至少一个预取文件块信息,具体包括:
[0018]将同一映像文件发生的页面错误对应的文件块信息,按照在映像文件内的文件偏移量,将距离小于预设比特数的文件块的文件块信息进行合并,得到预取文件块信息。
[0019]当接收到启动程序的指令时,获取所述程序对应的至少一个预取文件块信息,包括:
[0020]当接收到启动程序的指令时,根据所述程序的程序信息,获取与所述程序信息对应的至少一个预取文件块信息;
[0021]或,
[0022]当接收到启动程序的指令时,根据所述程序的程序信息,获取所述程序的程序版本信息,所述程序版本信息携带所述至少一个预取文件块信息。
[0023]加载所述至少一个预取文件块信息对应的文件块,包括:
[0024]使用异步I/O读取模式加载所述至少一个预取文件块信息对应的文件块;
[0025]或,使用动态加载的方式加载所述至少一个预取文件块信息对应的文件块。
[0026]一种程序启动的装置,所述装置包括:
[0027]预取文件块信息获取模块,用于当接收到启动程序的指令时,获取所述程序对应的至少一个预取文件块信息,所述至少一个预取文件块信息由所述程序在历史启动和运行过程中发生的页面错误对应的文件块信息合并获得;
[0028]第一加载模块,用于加载所述至少一个预取文件块信息对应的文件块;
[0029]第二加载模块,用于加载所述程序的代码,以便启动所述应用程序。
[0030]所述装置还包括:
[0031]分析模块,用于分析所述程序的历史启动和运行过程,获取所述历史启动和运行过程中程序对应的至少一个预取文件块信息。
[0032]所述分析模块包括:
[0033]获取单元,用于获取所述程序的历史启动和运行过程中加载的映像文件列表和发生的页面错误Page Fault的虚拟地址;
[0034]计算单元,用于根据所述映像文件列表和所述虚拟地址计算每个所述虚拟地址对应的文件偏移量;
[0035]文件块信息获取单元,用于根据所述每个所述虚拟地址对应的文件偏移量,得到发生的页面错误对应的文件块信息;
[0036]预取文件块信息获取单元,用于对发生的页面错误对应的文件块信息进行合并,得到所述程序对应的至少一个预取文件块信息。
[0037]所述获取单元具体用于应用跟踪记录机制,记录所述程序的历史启动和运行过程中加载的映像文件列表和发生的页面错误Page Fault的虚拟地址。
[0038]所述预取文件块信息获取单元具体用于将同一映像文件发生的页面错误对应的文件块信息,按照在映像文件内的文件偏移量,将距离小于预设比特数的文件块的文件块信息进行合并,得到预取文件块信息。
[0039]所述预取文件块信息获取模块用于当接收到启动程序的指令时,根据所述程序的程序信息,获取与所述程序信息对应的至少一个预取文件块信息;
[0040]或,
[0041]所述预取文件块信息获取模块用于当接收到启动程序的指令时,根据所述程序的程序信息,获取所述程序的程序版本信息,所述程序版本信息携带所述至少一个预取文件块信息。
[0042]所述第一加载模块用于使用异步I/O读取模式加载所述至少一个预取文件块信息对应的文件块;
[0043]或,所述第一加载模块用于使用动态加载的方式加载所述至少一个预取文件块信息对应的文件块。
[0044]本发明实施例提供的技术方案带来的有益效果是:
[0045]当接收到启动程序的指令时,获取所述程序对应的至少一个预取文件块信息,所述至少一个预取文件块信息由所述程序在历史启动和运行过程中发生的页面错误对应的文件块信息合并获得;加载所述至少一个预取文件块信息对应的文件块;加载所述程序的代码,以便启动所述应用程序。采用本发明提供的技术方案,使得在程序启动过程中,通过加载预取文件块信息对应的文件块,可预先将经常出现页面错误对应的文件块加载,大大减少了程序启动过程中硬页面错误发生次数,也即是减少了磁盘I/o次数,加快了程序启动速度。
【专利附图】

【附图说明】
[0046]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0047]图1是本发明实施例提供的一种程序启动的方法流程图;
[0048]图2是本发明实施例提供的一种程序启动的方法流程图;
[0049]图3是本发明实施例提供的一种合并示意图;
[0050]图4是现有技术程序启动时间与采用本发明实施例的程序启动方法的启动时间的对比示意图;
[0051]图5是本发明实施例提供的一种程序启动的装置结构示意图。
【具体实施方式】
[0052]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0053]在介绍本发明提供的程序启动方法和装置之前,对本发明涉及的关键用语进行以下说明:
[0054]页面错误:当前进程访问的虚拟页面没有被映射到有效的物理页面时,应用程序要使用一个保存在硬盘上的虚拟内存页面,则操作系统会在硬盘上找到该页面,并将其调入物理内存中,然后程序才能运行。如果虚拟页面被映射到内存中其他状态的物理页面,发生的是软页面错误(Soft Fault),如果虚拟页面被映射到磁盘上的文件中,发生的是硬页面错误(Hard Fault)。
[0055]映像文件:将磁盘上的文件映射到虚拟地址空间,通过访问内存一样访问这些文件,这些被映射的文件称为映像文件,进程启动过程中使用映像文件载入EXE和DLL文件。
[0056]磁盘I/O:磁盘的读写。
[0057]需要说明的是,本发明实施例所述的程序为应用软件程序、驱动程序或操作系统程序。
[0058]图1是本发明实施例提供的一种程序启动的方法流程图,该方法的执行主体为终端设备,参见图1,方法流程包括:
[0059]101:当接收到启动程序的指令时,获取所述程序对应的至少一个预取文件块信息,所述至少一个预取文件块信息由所述程序在历史启动和运行过程中发生的页面错误对应的文件块信息合并获得;
[0060]102:加载所述至少一个预取文件块信息对应的文件块;
[0061]103:加载所述程序的代码,以便启动所述程序。
[0062]可选地,当接收到启动程序的指令时,获取所述程序对应的至少一个预取文件块信息,之前包括:
[0063]分析所述程序的历史启动和运行过程,获取所述历史启动和运行过程中程序对应的至少一个预取文件块信息。
[0064]可选地,分析所述程序的历史启动和运行过程,获取所述历史启动和运行过程中程序对应的至少一个预取文件块信息,包括:
[0065]获取所述程序的历史启动和运行过程中加载的映像文件列表和发生的页面错误Page Fault的虚拟地址;
[0066]根据所述映像文件列表和所述虚拟地址计算每个所述虚拟地址对应的文件偏移量;
[0067]根据所述每个所述虚拟地址对应的文件偏移量,得到发生的页面错误对应的文件块信息;
[0068]对发生的页面错误对应的文件块信息进行合并,得到所述程序对应的至少一个预取文件块信息。
[0069]可选地,获取所述程序的历史启动和运行过程中加载的映像文件列表和发生的页面错误Page Fault的虚拟地址,包括:
[0070]应用跟踪记录机制,记录所述程序的历史启动和运行过程中加载的映像文件列表和发生的页面错误Page Fault的虚拟地址。
[0071]可选地,对发生的页面错误对应的文件块信息进行合并,得到所述程序对应的至少一个预取文件块信息,具体包括:
[0072]将同一映像文件发生的页面错误对应的文件块信息,按照在映像文件内的文件偏移量,将距离小于预设比特数的文件块的文件块信息进行合并,得到预取文件块信息。
[0073]可选地,当接收到启动程序的指令时,获取所述程序对应的至少一个预取文件块信息,包括:
[0074]当接收到启动程序的指令时,根据所述程序的程序信息,获取与所述程序信息对应的至少一个预取文件块信息;
[0075]或,
[0076]当接收到启动程序的指令时,根据所述程序的程序信息,获取所述程序的程序版本信息,所述程序版本信息携带所述至少一个预取文件块信息。
[0077]可选地,加载所述至少一个预取文件块信息对应的文件块,包括:
[0078]使用异步I/O读取模式加载所述至少一个预取文件块信息对应的文件块;
[0079]或,使用动态加载的方式加载所述至少一个预取文件块信息对应的文件块。
[0080]采用本发明提供的技术方案,使得在程序启动过程中,通过加载预取文件块信息对应的文件块,可预先将经常出现页面错误对应的文件块加载,大大减少了程序启动过程中硬页面错误发生次数,也即是减少了磁盘I/o次数,加快了程序启动速度。
[0081]图2是本发明实施例提供的一种程序启动的方法流程图,该方法的执行主体为终端设备,参见图2,方法流程包括:
[0082]201:获取程序的日志文件;
[0083]其中,日志文件是包含关于系统消息的文件,不同的日志文件记载不同的信息,例如,有的用于记载默认的系统日志文件,有的仅用于记载安全消息,对于该步骤201来说,获取的该程序的日志文件用于记载该程序的启动和运行相关信息,该日志文件至少包括该程序的启动信息,该启动信息包括程序的历史启动过程中发生的Page Fault信息。
[0084]可选地,该步骤201之前包括步骤200:应用跟踪记录机制,记录程序的历史启动和运行过程中加载的映像文件列表和发生的页面错误Page Fault的虚拟地址;
[0085]该步骤200中所应用的ETW (Event Tracing for Windows,跟踪记录机制)是Windows提供的统一的跟踪和记录事件的机制,用户模式程序和内核模式驱动程序都可以使用ETW来记录事件。由于ETW是针对整个系统以及系统上的所有程序的,因此需要启动ETW内核日志记录会话,打开必要的事件标志(在本实施例中为页面错误标识,如HardFault标识),对应用该ETW机制获取到的事件进行过滤,得到指定程序或指定模块的事件,如程序的历史启动和运行过程中加载的映像文件列表和发生的页面错误Page Fault的虚拟地址。
[0086]202:获取程序在启动和运行过程中进程加载的映像文件列表;
[0087]其中,映像文件列表至少包括所加载文件的起始地址和路径,对于该程序来说,该映像文件列表即是由于程序启动过程中发生的Page Fault而加载的,因此,获取该映像文件列表,可以获知在程序启动过程中发生Page Fault时加载了哪些文件以及这些文件的路径。
[0088]该获取可以是获取该程序在启动和运行的过程中进程加载的所有映像文件列表,还可以是仅包括启动过程中进程加载的映像文件列表,或仅加载运行过程中进程加载的映像文件列表,本发明实施例对此不作限定。
[0089]其中,启动过程可以是指用户界面进程的开始直至显示前景窗口之间的时间。该启动过程还可以缩短到更小的范围内,具体可以由技术人员设置,本发明实施例不做具体限定。[0090]203:获取程序在启动和运行过程中进程发生的页面错误的虚拟地址;
[0091]该虚拟地址即是程序启动和运行过程中进程所访问的虚拟页面的地址,对于该步骤203来说,获取进程发生的页面错误的虚拟地址可以获知在程序启动和运行过程中哪些虚拟地址未被映射到有效的物理地址中。
[0092]需要说明的是,由于每次程序启动和运行过程中发生的页面错误并不是完全相同的,因此,需要对多次程序的启动和运行过程进行分析,以获取进程加载的映像文件列表和Page Fault发生时的虚拟地址。本实施例的步骤201-203仅以对单次启动和运行的日志文件进行分析,并获取映像文件列表和Page Fault发生时的虚拟地址的过程为例进行说明,在实际应用中,可以同时对多个日志文件进行分析,并获取映像文件列表和Page Fault发生时的虚拟地址,或,对多个日志文件顺序进行分析,并获取映像文件列表和Page Fault发生时的虚拟地址,对多个日志文件的分析顺序可以有多种,具体可以由技术人员设置,本实施例不做具体限定。
[0093]需要说明的是,该步骤201-203还可以被以下步骤代替:获取程序首次冷启动和运行过程中进程加载的映像文件列表和进程发生的页面错误的虚拟地址。冷启动也叫加电启动,一般是指在关机状态下启动操作系统。而通过后续步骤204-206的分析和合并之后,可将合并的预取文件块信息配置在程序的程序版本信息中一同发布,使得终端设备在获取到该程序的程序版本信息后,可以根据程序版本信息所携带的预取文件块信息进行启动。
[0094]204:根据该映像文件列表和该虚拟地址计算每个该虚拟地址对应的文件偏移量;
[0095]本领域技术人员可以获知,对于映像文件列表中的单个映像文件来说,映像文件的起始地址减去Page Fault发生时的虚拟地址,得到相对虚拟地址,并通过相对虚拟地址获得文件偏移量,其中,该相对虚拟地址与文件偏移量是分段线性关系,该分段线性关系由映像文件(PE文件格式)进行设置,本实施例不做赘述。
[0096]该实施例与现有技术的区别在于,并不直接加载映像文件列表中的整个映像文件,而是将加载的的粒度更加细化,仅加载映像文件中的在程序启动过程中将会发生页面错误的文件块,以极少量的冗余数据换取I/o效率的大幅提升。
[0097]205:将同一映像文件发生的页面错误对应的文件块信息,按照在映像文件内的文件偏移量,将距离小于预设比特数的文件块的文件块信息进行合并,得到至少一个预取文件块息;
[0098]其中,该至少一个预取文件块信息可以列表的形式存储,本发明实施例对此不作限定。
[0099]其中,预设比特数可以由技术人员进行设定,当根据文件偏移量确定的相邻的两个文件块之间的距离小于预设比特数时,将所述相邻的两个文件块信息进行合并,得到第一预取文件块信息,根据该第一预取文件块信息以及与该第一预取文件块信息确定的文件块相邻的文件块信息,继续合并,直到将相邻的文件块信息合并完成后,将最终得到的第二预取文件块信息作为步骤205得到的预取文件块信息。
[0100]在本发明实施例中,对合并得到的预取文件块信息中的文件大小不做限定,对合并的个数也不做限定。
[0101]如,当第一文件块的文件块信息为00000001、0000110,第二文件块的文件块信息为 00000111 ?00001111,则将 00000001 ?00000110 和 00000111 ?00001111 合并为预取文件块信息 00000001 ?00001111。
[0102]又如,图3是本发明实施例提供的一种合并示意图。参见图3,文件块1、文件块4、文件块8和文件块11两两之间的距离均小于预设比特数,因此,将文件块1、文件块4、文件块8和文件块11的文件块信息合并,其合并后的预取文件块信息I以文件块I的偏移地址为预取文件块的偏移地址,以文件块1、文件块4、文件块8和文件块11的大小以及文件块之间的距离的和,作为预取文件块的文件大小。如,文件块1、文件块4、文件块8的文件大小均为16kb,且两两之间没有间距,文件块8和文件块11也为16kb,其间的间距为16kb,则合并后的预取文件块信息I所包含的偏移地址为文件块I的偏移地址,合并后的预取文件块信息I所包含的文件大小为96kb。
[0103]对于文件块11和文件块5来说,其间的间距为lOOkb,预设比特数为64kb,因此,该间距大于预设比特数,文件块11和文件块5的文件块信息不可合并,因此,将相邻且间距小于预设比特数的文件块11、文件块6和文件块10的文件块信息合并,得到预取文件信息
2;并将相邻且间距小于预设比特数的文件块3、文件块9、文件块2、文件块7和文件块12的文件块信息合并,得到预取文件信息3。
[0104]在该步骤205中,仅对程序的一个映像文件发生的页面错误对应的文件块信息的合并过程进行了描述,而在实际过程中,可以对程序的多个映像文件发生的页面错误对应的文件块信息进行合并,该合并可以是并行或串行,本发明实施例不做限定,进一步地,还可以是针对程序中指定模块的映像文件发生的页面错误对应的文件块信息进行合并。
[0105]本领域技术人员可以获知,一次磁盘I/O的大小在WIN7上可达到2M,在XP上可达到1M,而一次Hard Fault引入的I/O大小只有16KB或者32KB,因此,在本实施例中,通过将相邻的文件块的文件块信息的合并操作,避免了对文件块重组的过程,而仅是通过文件块信息的合并,使得在程序的启动的过程中先加载该合并的文件块信息对应的文件块,可以大幅度的提高磁盘I/O的效率。
[0106]206:当接收到启动程序的指令时,根据所述程序的程序信息,获取与所述程序信息对应的至少一个预取文件块信息,所述至少一个预取文件块信息由所述程序在历史启动和运行过程中发生的页面错误对应的文件块信息合并获得;
[0107]需要说明的是,对于一个终端设备来说,可以存储有多个程序对应的预取文件块信息,因此,可以根据程序信息,查询需要获取的预取文件块信息,再根据查询到的该程序信息对应的至少一个预取文件快信息,进行后续的加载过程。
[0108]另外,在另一发明实施例中,步骤201-206的分析和合并之后,可将合并的预取文件块信息配置在程序的程序版本信息中一同发布,使得终端设备在获取到该程序的程序版本信息后,可以根据程序版本信息所携带的预取文件块信息进行启动。具体地,当接收到启动程序的指令时,根据所述程序的程序信息,获取所述程序的程序版本信息,所述程序版本信息携带所述至少一个预取文件块信息。
[0109]207:加载所述至少一个预取文件块信息对应的文件块;
[0110]由于预取文件块信息事实上包含的是文件块的文件偏移地址和文件大小,因此,在加载时,可以顺序读取各个预取文件块信息对应的文件块并加载。
[0111]该加载过程可以是使用异步i/o读取模式加载所述至少一个预取文件块信息对应的文件块;或,使用动态加载的方式加载所述至少一个预取文件块信息对应的文件块。具体地,当系统为Wind0ws7及以后的版本时,终端使用异步I/O读取模式将至少一个预取文件块信息对应的文件块读入到内存中;当系统为Wind0ws7之前的版本时,如,XP系统,系统虽然支持异步读取模式,但是使用异步读取模式将至少一个预取文件块信息对应的文件块读入到内存中时,速度比较慢,此时终端设备使用动态加载的方式将所述至少一个预取文件块信息对应的文件块加载到内存中,并锁住相应的虚拟页面,即终端使用LoadLirary的方式将至少一个预取文件块信息对应的文件块读取到内存中,当文件块被加载到内存中时,使用VirtuallLock锁住相应的虚拟页面。
[0112]208:加载所述程序的代码,以便启动所述程序。
[0113]该步骤208的加载主要是加载程序中除了预取文件块信息对应的文件块以外的代码等,本发明实施例不作详述。
[0114]需要说明的是,本实施例提供的程序启动方法,适用于任何程序,并且几乎不需要对现有代码做修改。而本实施例提供的步骤201-208的过程,也不限于程序的启动过程,还可以用于任何提高程序性能的场景。
[0115]更进一步地,所述方法不仅能加快程序启动过程,还能加快程序运行过程,只要实时收集程序运行过程硬页面错误引入的文件块,将所述文件块的信息进行合并,得到预取文件块信息,并在程序运行过程中,根据预取文件块信息加载磁盘上的文件块,程序的运行将大大加快。
[0116]并且,在每次程序的启动和运行过程中,均执行步骤201-205的获取和分析过程,可以实现在程序使用过程中进行自适应的优化。具体地,对于程序来说,在该程序第一次启动时,可以没有预取文件块信息,而通过步骤201-205对该第一次启动过程进行分析,以获取预取文件块信息,并在后续启动过程中加载该预取文件块信息对应的文件块,以加速启动过程,并在后续的每次启动过程中均执行步骤201-205的分析,在已有预取文件块信息的基础上继续合并,随着启动次数的增多以及预取文件信息越来越完备,使得启动速度越来越快。
[0117]采用本发明提供的技术方案,使得在程序启动过程中,通过加载预取文件块信息对应的文件块,可预先将经常出现页面错误对应的文件块加载,大大减少了程序启动过程中硬页面错误发生次数,也即是减少了磁盘I/o次数,加快了程序启动速度。
[0118]为了进一步说明本发明的有益效果,下面从现有技术程序启动过程和采用本发明实施例的程序启动方法的启动过程之间的对比为例进行说明:
[0119]图4是现有技术程序启动时间与采用本发明实施例的程序启动方法的启动时间的对比示意图。由图3可以看出,现有技术程序启动时间T2中包括硬页面错误时间和加载程序代码时间,采用本发明实施例的程序启动方法的启动时间Tl包括加载预取数据时间和加载程序代码时间,Tl远远小于T2,采用本发明实施例的程序启动方法的启动时间中不包含硬页面错误时间,大大改善了启动的速度。
[0120]表I是现有技术程序启动过程与采用本发明实施例的程序启动方法的启动过程中一个主要模块的磁盘I/o参数的对比。
[0121]表I
[0122]
【权利要求】
1.一种程序启动的方法,其特征在于,所述方法包括: 当接收到启动程序的指令时,获取所述程序对应的至少一个预取文件块信息,所述至少一个预取文件块信息由所述程序在历史启动和运行过程中发生的页面错误对应的文件块信息合并获得; 加载所述至少一个预取文件块信息对应的文件块; 加载所述程序的代码,以便启动所述应用程序。
2.根据权利要求1所述的方法,其特征在于,当接收到启动程序的指令时,获取所述程序对应的至少一个预取文件块信息,之前包括: 分析所述程序的历史启动和运行过程,获取所述历史启动和运行过程中程序对应的至少一个预取文件块信息。
3.根据权利要求1所述的方法,其特征在于,分析所述程序的历史启动和运行过程,获取所述历史启动和运行过程中程序对应的至少一个预取文件块信息,包括: 获取所述程序的历史启动和运行过程中加载的映像文件列表和发生的页面错误PageFault的虚拟地址; 根据所述映像文件列表和所述虚拟地址计算每个所述虚拟地址对应的文件偏移量; 根据所述每个所述虚拟地址对应的文件偏移量,得到发生的页面错误对应的文件块信息; 对发生的页面错误对应的文件块信息进行合并,得到所述程序对应的至少一个预取文件块信息。
4.根据权利要求3所述的方法,其特征在于,获取所述程序的历史启动和运行过程中加载的映像文件列表和发生的页面错误Page Fault的虚拟地址,包括: 应用跟踪记录机制,记录所述程序的历史启动和运行过程中加载的映像文件列表和发生的页面错误Page Fault的虚拟地址。
5.根据权利要求3所述的方法,其特征在于,对发生的页面错误对应的文件块信息进行合并,得到所述程序对应的至少一个预取文件块信息,具体包括: 将同一映像文件发生的页面错误对应的文件块信息,按照在映像文件内的文件偏移量,将距离小于预设比特数的文件块的文件块信息进行合并,得到预取文件块信息。
6.根据权利要求1所述的方法,其特征在于,当接收到启动程序的指令时,获取所述程序对应的至少一个预取文件块信息,包括: 当接收到启动程序的指令时,根据所述程序的程序信息,获取与所述程序信息对应的至少一个预取文件块信息; 或, 当接收到启动程序的指令时,根据所述程序的程序信息,获取所述程序的程序版本信息,所述程序版本信息携带所述至少一个预取文件块信息。
7.根据权利要求1所述的方法,其特征在于,加载所述至少一个预取文件块信息对应的文件块,包括: 使用异步I/O读取模式加载所述至少一个预取文件块信息对应的文件块; 或,使用动态加载的方式加载所述至少一个预取文件块信息对应的文件块。
8.一种程序启动的装置,其特征在于,所述装置包括:预取文件块信息获取模块,用于当接收到启动程序的指令时,获取所述程序对应的至少一个预取文件块信息,所述至少一个预取文件块信息由所述程序在历史启动和运行过程中发生的页面错误对应的文件块信息合并获得; 第一加载模块,用于加载所述至少一个预取文件块信息对应的文件块; 第二加载模块,用于加载所述程序的代码,以便启动所述应用程序。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括: 分析模块,用于分析所述程序的历史启动和运行过程,获取所述历史启动和运行过程中程序对应的至少一个预取文件块信息。
10.根据权利要求8所述的装置,其特征在于,所述分析模块包括: 获取单元,用于获取所述程序的历史启动和运行过程中加载的映像文件列表和发生的页面错误Page Fault的虚拟地址; 计算单元,用于根据所述映像文件列表和所述虚拟地址计算每个所述虚拟地址对应的文件偏移量; 文件块信息获取单元,用于根据所述每个所述虚拟地址对应的文件偏移量,得到发生的页面错误对应的文件块信息; 预取文件块信息获取单元,用于对发生的页面错误对应的文件块信息进行合并,得到所述程序对应的至少一个预取文件块信息。
11.根据权利要求10所述的装置,其特征在于,所述获取单元具体用于应用跟踪记录机制,记录所述程序的历史启动和运行过程中加载的映像文件列表和发生的页面错误PageFault的虚拟地址。
12.根据权利要求10所述的装置,其特征在于,所述预取文件块信息获取单元具体用于将同一映像文件发生的页面错误对应的文件块信息,按照在映像文件内的文件偏移量,将距离小于预设比特数的文件块的文件块信息进行合并,得到预取文件块信息。
13.根据权利要求8所述的装置,其特征在于,所述预取文件块信息获取模块用于当接收到启动程序的指令时,根据所述程序的程序信息,获取与所述程序信息对应的至少一个预取文件块信息; 或, 所述预取文件块信息获取模块用于当接收到启动程序的指令时,根据所述程序的程序信息,获取所述程序的程序版本信息,所述程序版本信息携带所述至少一个预取文件块信息。
14.根据权利要求8所述的装置,其特征在于,所述第一加载模块用于使用异步I/O读取模式加载所述至少一个预取文件块信息对应的文件块; 或,所述第一加载模块用于使用动态加载的方式加载所述至少一个预取文件块信息对应的文件块。
【文档编号】G06F9/445GK103914318SQ201310001291
【公开日】2014年7月9日 申请日期:2013年1月4日 优先权日:2013年1月4日
【发明者】朱文焕 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1