著录项信息
专利名称 | 加速操作系统启动的方法及装置、预取信息生成方法及装置和终端 |
申请号 | CN201210106270.1 | 申请日期 | 2012-04-12 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2012-10-03 | 公开/公告号 | CN102707966A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F9/445 | IPC分类号 | G;0;6;F;9;/;4;4;5查看分类表>
|
申请人 | 腾讯科技(深圳)有限公司 | 申请人地址 | 广东省深圳市福田区赛格科技园2栋东403室
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 腾讯科技(深圳)有限公司 | 当前权利人 | 腾讯科技(深圳)有限公司 |
发明人 | 毕廷礼;方斌;聂科峰;李世平 |
代理机构 | 北京三高永信知识产权代理有限责任公司 | 代理人 | 罗振安 |
摘要
本发明公开了一种加速操作系统启动的方法及装置、预取信息生成方法及装置和终端,属于操作系统领域。所述方法包括:获取操作系统启动过程中的至少一个待加速的进程的预取信息,所述预取信息包括所述进程所需数据块的文件路径、偏移值和长度值;根据所述预取信息将起始位置为所述文件路径和偏移值所指示的位置,读取长度为所述长度值的数据块读取到系统缓存中,利用所述系统缓存中的数据块完成所述进程的启动过程。本发明通过对启动过程中全部或者部分进程所需数据块进行预取,使得启动过程中的页面错误出现次数和对低速存储器的读写次数大幅度减少,可以有效降低各个程序对应进程的启动时间,从而达到了显著提升操作系统启动速度的效果。
1.一种加速操作系统启动的方法,其特征在于,所述方法包括:
获取操作系统启动过程中的至少一个待加速的进程的预取信息,所述预取信息包括所述进程所需数据块的文件路径、偏移值和长度值;其中,所述进程所需数据块的文件路径、偏移值和长度值是预先将操作系统启动过程中的所有输入/输出信息涉及到的数据块按照先后顺序进行排序,分别统计每个数据块的文件路径、偏移值和长度值;将所有页面错误信息涉及到的数据块按照先后顺序进行排序,分别统计每个数据块的文件路径、偏移值和长度值,去掉所有页面错误信息涉及到的数据块与所有输入/输出信息涉及到的数据块交集的部分后得到的;
根据所述预取信息将起始位置为所述文件路径和偏移值所指示的位置,读取长度为所述长度值的数据块读取到系统缓存中;
利用所述系统缓存中的数据块完成所述进程的启动过程。
2.根据权利要求1所述的加速操作系统启动的方法,其特征在于,所述获取操作系统启动过程中的至少一个待加速的进程的预取信息之前,还包括:
获取预取策略信息;
根据所述预取策略信息获知操作系统启动过程中的所有进程中的全部或者部分为所述至少一个待加速的进程。
3.根据权利要求1或2所述的加速操作系统启动的方法,其特征在于,所述获取操作系统启动过程中的至少一个待加速的进程的预取信息,具体包括:
判断操作系统启动过程中的输入/输出是否处于空闲状态;
如果判断到所述操作系统启动过程中的输入/输出处于空闲状态,则从预设数据库中获取所述进程的预取信息。
4.根据权利要求1或2所述的加速操作系统启动的方法,其特征在于,所述获取操作系统启动过程中的至少一个待加速的进程的预取信息,具体包括:
判断所述进程或者所述进程中的单位是否被创建;
如果判断到所述进程或者所述进程中的单位被创建,则从预设数据库中获取所述进程或者所述进程中的单位的预取信息;
其中,所述进程中的单位包括所述进程中的线程或所述进程中等待加载的模块。
5.根据权利要求1所述的加速操作系统启动的方法,其特征在于,
所述系统缓存包括:物理页面;或物理页面和页面交换文件。
6.一种预取信息生成方法,其特征在于,其包括:
提取在操作系统启动过程中的输入/输出信息和页面错误信息;
根据所述输入/输出信息和页面错误信息获得操作系统启动过程中各个进程所需数据块的文件路径、偏移值和长度值;
对文件路径相同的相邻数据块的所述偏移值和所述长度值进行合并;
根据经过合并过程之后的各个数据块的文件路径、偏移值和长度值生成预取信息;
所述根据所述输入/输出信息和页面错误信息获得操作系统启动过程中各个进程所需数据块的文件路径、偏移值和长度值,包括:
将所有输入/输出信息涉及到的数据块按照先后顺序进行排序,分别统计每个数据块的文件路径、偏移值和长度值;
将所有页面错误信息涉及到的数据块按照先后顺序进行排序,分别统计每个数据块的文件路径、偏移值和长度值;
去掉所有页面错误信息涉及到的数据块与所有输入/输出信息涉及到的数据块交集的部分,得到的所述操作系统启动过程中各个进程所需的数据块的文件路径、偏移值和长度值。
7.根据权利要求6所述的预取信息生成方法,其特征在于,所述根据经过合并过程之后的各个数据块的文件路径、偏移值和长度值生成预取信息,具体包括:
将经过合并过程之后的各个数据块按照预定对象进行分类,所述预定对象包括以下几种对象中的任一种:进程、线程、进程中待加载的模块和文件;
根据分类后的数据块的文件路径、偏移值和长度值生成所述预定对象的预取信息。
8.一种加速操作系统启动的装置,其特征在于,所述装置包括:
预取信息获取模块,用于获取操作系统启动过程中的至少一个待加速的进程的预取信息,所述预取信息包括所述进程所需数据块的文件路径、偏移值和长度值;其中,所述进程所需数据块的文件路径、偏移值和长度值是预先将操作系统启动过程中的所有输入/输出信息涉及到的数据块按照先后顺序进行排序,分别统计每个数据块的文件路径、偏移值和长度值;将所有页面错误信息涉及到的数据块按照先后顺序进行排序,分别统计每个数据块的文件路径、偏移值和长度值,去掉所有页面错误信息涉及到的数据块与所有输入/输出信息涉及到的数据块交集的部分后得到的;
预取数据读取模块,用于根据所述预取信息将起始位置为所述文件路径和偏移值所指示的位置,读取长度为所述长度值的数据块读取到系统缓存中;
进程启动模块,用于利用所述系统缓存中的数据块完成所述进程的启动过程。
9.根据权利要求8所述的加速操作系统启动的装置,其特征在于,所述装置还包括:策略信息获取模块和策略信息分析模块;
所述策略信息获取模块,用于获取预取策略信息;
所述策略信息分析模块,用于根据所述预取策略信息获知操作系统启动过程中的所有进程中的全部或者部分为所述至少一个待加速的进程。
10.根据权利要求8或9所述的加速操作系统启动的装置,其特征在于,所述预取信息获取模块,具体包括:
空闲判断单元和第一预取信息获取单元;
所述空闲判断单元,用于判断开机启动过程中的输入/输出是否处于空闲状态;
所述第一预取信息获取单元,用于如果判断到所述开机启动过程中的输入/输出处于空闲状态,则从预设数据库中获取所述进程的预取信息。
11.根据权利要求8或9所述的加速操作系统启动的装置,其特征在于,所述预取信息获取模块,具体包括:
创建判断单元和第二预取信息获取单元;
所述创建判断单元,用于判断所述进程或者所述进程中的单位是否被创建;
所述第二预取信息获取单元,用于如果判断到所述进程或者所述进程中的单位被创建,则从预设数据库中获取所述进程或者所述进程中的单位的预取信息;
其中,所述进程中的单位包括所述进程中的线程或所述进程中等待加载的模块。
12.根据权利要求8所述的加速操作系统启动的装置,其特征在于,
所述系统缓存包括:物理页面;或物理页面和页面交换文件。
13.一种预取信息生成装置,其特征在于,其包括:
信息提取模块,用于提取在开机启动过程中的输入/输出信息和页面错误信息;
信息分析模块,用于根据所述输入/输出信息和页面错误信息获得操作系统启动过程中各个进程所需数据块的文件路径、偏移值和长度值;
信息合并模块,用于对文件路径相同的相邻数据块的所述偏移值和所述长度值进行合并;
信息生成模块,用于根据经过合并过程之后的各个数据块的文件路径、偏移值和长度值生成预取信息;
所述信息分析模块,还用于将所有输入/输出信息涉及到的数据块按照先后顺序进行排序,分别统计每个数据块的文件路径、偏移值和长度值;
所述信息分析模块,还用于将所有页面错误信息涉及到的数据块按照先后顺序进行排序,分别统计每个数据块的文件路径、偏移值和长度值;
所述信息分析模块,还用于去掉所有页面错误信息涉及到的数据块与所有输入/输出信息涉及到的数据块交集的部分,得到的所述操作系统启动过程中各个进程所需的数据块的文件路径、偏移值和长度值。
14.根据权利要求13所述的预取信息生成装置,其特征在于,所述信息生成模块,具体包括:
信息分类单元和信息生成单元;
所述信息分类单元,用于将经过合并过程之后的各个数据块按照预定对象进行分类,所述预定对象包括以下几种对象中的任一种:进程、线程、进程中待加载的模块和文件;
所述信息生成单元,用于根据分类后的数据块的文件路径、偏移值和长度值生成所述预定对象的预取信息。
15.一种终端,其特征在于,其包括如权利要求8至12任一所述的加速操作系统启动的装置。
16.一种终端,其特征在于,其包括如权利要求13至14任一所述的预取信息生成装置。
加速操作系统启动的方法及装置、预取信息生成方法及装\n置和终端\n技术领域\n[0001] 本发明涉及操作系统领域,特别涉及适用于操作系统的内核层中的加速操作系统启动的方法及装置、预取信息生成方法及装置和终端。\n背景技术\n[0002] 诸如台式电脑、笔记本、智能手机和平板电脑等终端已经在人们的日常生活中被广泛使用,这些终端通常采用操作系统和运行在操作系统基础上的第三方应用程序为用户提供服务。其中,操作系统的启动过程是这些终端在正常提供服务之前必经的一个过程。\n[0003] 操作系统的启动过程通常都需要经过按下电源键、运行启动引导程序、加载操作系统内核、加载驱动程序、启动系统服务和第三方应用程序等几个阶段。出于用户体验性的考虑,用户希望操作系统的启动过程越快越好。为此,现有技术中已经存在有一些加速操作系统启动的方法供终端使用。较为常见的一种加速操作系统启动的方法为:对在操作系统启动过程中需要启动的系统服务和第三方应用程序进行筛选,将不是必须启动的系统服务和第三方应用程序进行禁用,使得操作系统启动过程中需要启动的系统服务和第三方应用程序的数量减少到最少,从而使得操作系统的启动速度加快。\n[0004] 在实现本发明的过程中,发明人发现现有技术至少存在以下问题:由于很多系统服务和第三方应用程序都是用户希望在开机时就进行启动的启动项,也即存在用户即不想禁用某些启动项,又想获得更快的启动速度的需求,现有技术中的加速操作系统启动的方法无法满足该需求。\n发明内容\n[0005] 为了能够在不禁用某些启动项的情况下,也能够加速操作系统的启动过程,本发明实施例提供了一种加速操作系统启动的方法及装置、预取信息生成方法及装置和装置。\n所述技术方案如下:\n[0006] 根据本发明的一个方面,本发明实施例提供一种加速操作系统启动的方法,所述方法包括:\n[0007] 获取操作系统启动过程中的至少一个待加速的进程的预取信息,所述预取信息包括所述进程所需数据块的文件路径、偏移值和长度值;其中,所述进程所需数据块的文件路径、偏移值和长度值是预先将操作系统启动过程中的所有输入/输出信息涉及到的数据块按照先后顺序进行排序,分别统计每个数据块的文件路径、偏移值和长度值;将所有页面错误信息涉及到的数据块按照先后顺序进行排序,分别统计每个数据块的文件路径、偏移值和长度值,去掉所有页面错误信息涉及到的数据块与所有输入/输出信息涉及到的数据块交集的部分后得到的;\n[0008] 根据所述预取信息将起始位置为所述文件路径和偏移值所指示的位置,读取长度为所述长度值的数据块读取到系统缓存中;\n[0009] 利用所述系统缓存中的数据块完成所述进程的启动过程。\n[0010] 进一步地,所述获取操作系统启动过程中的至少一个待加速的进程的预取信息之前,还包括:\n[0011] 获取预取策略信息;\n[0012] 根据所述预取策略信息获知操作系统启动过程中的所有进程中的全部或者部分为所述至少一个待加速的进程。\n[0013] 进一步地,所述获取操作系统启动过程中的至少一个待加速的进程的预取信息,具体包括:\n[0014] 判断操作系统启动过程中的输入/输出是否处于空闲状态;\n[0015] 如果判断到所述操作系统启动过程中的输入/输出处于空闲状态,则从预设数据库中获取所述进程的预取信息。\n[0016] 进一步地,所述获取操作系统启动过程中的至少一个待加速的进程的预取信息,具体包括:\n[0017] 判断所述进程或者所述进程中的单位是否被创建;\n[0018] 如果判断到所述进程或者所述进程中的单位被创建,则从预设数据库中获取所述进程或者所述进程中的单位的预取信息;\n[0019] 其中,所述进程中的单位包括所述进程中的线程或所述进程中等待加载的模块。\n[0020] 进一步地,所述系统缓存包括:物理页面;或物理页面和页面交换文件。\n[0021] 根据本发明的再一方面,本发明实施例还提供一种预取信息生成方法,所述方法包括:\n[0022] 提取在操作系统启动过程中的输入/输出信息和页面错误信息;\n[0023] 根据所述输入/输出信息和页面错误信息获得操作系统启动过程中各个进程所需数据块的文件路径、偏移值和长度值;\n[0024] 对文件路径相同的相邻数据块的所述偏移值和所述长度值进行合并;\n[0025] 根据经过合并过程之后的各个数据块的文件路径、偏移值和长度值生成预取信息;\n[0026] 所述根据所述输入/输出信息和页面错误信息获得操作系统启动过程中各个进程所需数据块的文件路径、偏移值和长度值,包括:\n[0027] 将所有输入/输出信息涉及到的数据块按照先后顺序进行排序,分别统计每个数据块的文件路径、偏移值和长度值;\n[0028] 将所有页面错误信息涉及到的数据块按照先后顺序进行排序,分别统计每个数据块的文件路径、偏移值和长度值;\n[0029] 去掉所有页面错误信息涉及到的数据块与所有输入/输出信息涉及到的数据块交集的部分,得到的所述操作系统启动过程中各个进程所需的数据块的文件路径、偏移值和长度值。\n[0030] 进一步地,所述根据经过合并过程之后的各个数据块的文件路径、偏移值和长度值生成预取信息,具体包括:\n[0031] 将经过合并过程之后的各个数据块按照预定对象进行分类,所述预定对象包括以下几种对象中的任一种:进程、线程、进程中待加载的模块和文件;\n[0032] 根据分类后的数据块的文件路径、偏移值和长度值生成所述预定对象的预取信息。\n[0033] 根据本发明的再一方面,本发明实施例还提供一种加速操作系统启动的装置,所述装置包括:\n[0034] 预取信息获取模块,用于获取操作系统启动过程中的至少一个待加速的进程的预取信息,所述预取信息包括所述进程所需数据块的文件路径、偏移值和长度值;其中,所述进程所需数据块的文件路径、偏移值和长度值是预先将操作系统启动过程中的所有输入/输出信息涉及到的数据块按照先后顺序进行排序,分别统计每个数据块的文件路径、偏移值和长度值;将所有页面错误信息涉及到的数据块按照先后顺序进行排序,分别统计每个数据块的文件路径、偏移值和长度值,去掉所有页面错误信息涉及到的数据块与所有输入/输出信息涉及到的数据块交集的部分后得到的;\n[0035] 预取数据读取模块,用于根据所述预取信息将起始位置为所述文件路径和偏移值所指示的位置,读取长度为所述长度值的数据块读取到系统缓存中;\n[0036] 进程启动模块,用于利用所述系统缓存中的数据块完成所述进程的启动过程。\n[0037] 进一步地,所述装置还包括:策略信息获取模块和策略信息分析模块;\n[0038] 所述策略信息获取模块,用于获取预取策略信息;\n[0039] 所述策略信息分析模块,用于根据所述预取策略信息获知操作系统启动过程中的所有进程中的全部或者部分为所述至少一个待加速的进程。\n[0040] 进一步地,所述预取信息获取模块,具体包括:\n[0041] 空闲判断单元和第一预取信息获取单元;\n[0042] 所述空闲判断单元,用于判断开机启动过程中的输入/输出是否处于空闲状态;\n[0043] 所述第一预取信息获取单元,用于如果判断到所述开机启动过程中的输入/输出处于空闲状态,则从预设数据库中获取所述进程的预取信息。\n[0044] 进一步地,所述预取信息获取模块,具体包括:\n[0045] 创建判断单元和第二预取信息获取单元;\n[0046] 所述创建判断单元,用于判断所述进程或者所述进程中的单位是否被创建;\n[0047] 所述第二预取信息获取单元,用于如果判断到所述进程或者所述进程中的单位被创建,则从预设数据库中获取所述进程或者所述进程中的单位的预取信息;\n[0048] 其中,所述进程中的单位包括所述进程中的线程或所述进程中等待加载的模块。\n[0049] 进一步地,所述系统缓存包括物理页面和页面交换文件。\n[0050] 根据本发明的再一方面,本发明实施例提供一种预取信息生成装置,所述装置包括:\n[0051] 信息提取模块,用于提取在开机启动过程中的输入/输出信息和页面错误信息;\n[0052] 信息分析模块,用于根据所述输入/输出信息和页面错误信息获得操作系统启动过程中各个进程所需数据块的文件路径、偏移值和长度值;\n[0053] 信息合并模块,用于对文件路径相同的相邻数据块的所述偏移值和所述长度值进行合并;\n[0054] 信息生成模块,用于根据经过合并过程之后的各个数据块的文件路径、偏移值和长度值生成预取信息;\n[0055] 所述信息分析模块,还用于将所有输入/输出信息涉及到的数据块按照先后顺序进行排序,分别统计每个数据块的文件路径、偏移值和长度值;\n[0056] 所述信息分析模块,还用于将所有页面错误信息涉及到的数据块按照先后顺序进行排序,分别统计每个数据块的文件路径、偏移值和长度值;\n[0057] 所述信息分析模块,还用于去掉所有页面错误信息涉及到的数据块与所有输入/输出信息涉及到的数据块交集的部分,得到的所述操作系统启动过程中各个进程所需的数据块的文件路径、偏移值和长度值。\n[0058] 进一步地,所述信息生成模块,具体包括:\n[0059] 信息分类单元和信息生成单元;\n[0060] 所述信息分类单元,用于将经过合并过程之后的各个数据块按照预定对象进行分类,所述预定对象包括以下几种对象中的任一种:进程、线程、进程中待加载的模块和文件;\n[0061] 所述信息生成单元,用于根据分类后的数据块的文件路径、偏移值和长度值生成所述预定对象的预取信息;\n[0062] 所述根据所述输入/输出信息和页面错误信息获得操作系统启动过程中各个进程所需数据块的文件路径、偏移值和长度值,包括:\n[0063] 将所有输入/输出信息涉及到的数据块按照先后顺序进行排序,分别统计每个数据块的文件路径、偏移值和长度值;\n[0064] 将所有页面错误信息涉及到的数据块按照先后顺序进行排序,分别统计每个数据块的文件路径、偏移值和长度值;\n[0065] 去掉所有页面错误信息涉及到的数据块与所有输入/输出信息涉及到的数据块交集的部分,得到的所述操作系统启动过程中各个进程所需的数据块的文件路径、偏移值和长度值。\n[0066] 根据本发明的再一方面,本发明实施例还提供一种终端,所述终端包括本发明实施例提供的加速操作系统启动的装置。\n[0067] 根据本发明的再一方面,本发明实施例还提供一种终端,其特征在于,所述终端包括本发明实施例提供的预取信息生成装置。\n[0068] 本发明实施例提供的技术方案带来的有益效果是:\n[0069] 通过对操作系统启动过程中全部或者部分进程所需数据块进行预取,使得操作系统启动过程中的页面错误出现次数和对低速存储器的读写次数大幅度减少,可以有效降低各个程序对应进程的启动时间,从而达到了显著提升操作系统启动速度的效果。\n附图说明\n[0070] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。\n[0071] 图1示出了操作系统在进行内存管理时的结构示意图;\n[0072] 图2是本发明实施例一提供的预取信息生成方法的方法流程图;\n[0073] 图3是本发明实施例二提供的加速操作系统启动的方法的方法流程图;\n[0074] 图4是本发明实施例三提供给的加速操作系统启动的方法流程图;\n[0075] 图5是本发明实施例四提供的加速操作系统启动的方法流程图;\n[0076] 图6是本发明实施例五提供的预取信息生成装置的结构方框图;\n[0077] 图7是本发明实施例五提供的信息生成模块的结构方框图;\n[0078] 图8是本发明实施例六提供的加速操作系统启动的装置的结构方框图;\n[0079] 图9是本发明实施例六提供的预取信息获取模块的一种结构方框图;\n[0080] 图10是本发明实施例六提供的预取信息获取模块的另一种结构方框图。\n具体实施方式\n[0081] 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。\n[0082] 操作系统的启动过程主要是指终端开始上电到操作系统的各项服务及所有开机时需要自运行的第三方应用程序都运行完毕的这一段过程。操作系统启动过程通常都包括以下几个阶段:第一,按下电源键使终端上电;第二,运行启动引导程序,比如BIOS(Basic Input Output System,基本输入输出系统),Bootloader等等;第三,加载操作系统内核,操作系统内核可以是微软的Windows系统的NT系列内核或者开源的LINUX内核等等;第四,加载驱动程序;第五,启动系统服务和第三方应用程序。\n[0083] 以操作系统为windows操作系统为例,在启动系统服务和第三方应用程序时,每个系统服务和第三方应用程序通常都对应一个进程,每个进程基本都需要加载可执行文件(.exe文件)和DLL文件(Dynamic Link Library,动态链接库)。当一个进程加载可执行文件和DLL文件时,是使用内存映射文件来访问的。\n[0084] 为了便于描述本发明,请首先参考图1,其示出了操作系统在进行内存管理时的结构示意图。一个终端内通常包括有二个层级的存储器,一个层级的存储器是读写数据较快但容量小的高速存储器,比如内存;另一个层级的存储器是读写数据较慢但容量大的低速存储器,比如计算机中的硬盘、智能手机中的SD卡,两个层级的存储器在读写速度上通常有几个数量级的差距。为了能够高效地使用高速存储器,一般将高速存储器中的存储空间分割为若干个预定大小的物理页面102,每个物理页面102具有各自的物理地址,预定大小可以是每个物理页面为4096字节。为了保护各个进程之间不会混乱读取其它进程的存储空间,操作系统还为每个进程设置了一个虚拟地址空间,每个虚拟地址空间也被分割为若干个预定大小的虚拟页面104,每个虚拟页面104也具有各自的虚拟地址,比如windows系统为每个进程可以提供2GB到3GB的虚拟地址空间,每个虚拟地址空间都包括有很多个\n4096字节的虚拟页面。\n[0085] 操作系统中会为每个进程的虚拟地址空间维护一个页表106,用来维护物理页面\n102的物理地址和虚拟页面104的虚拟地址之间的对应关系。由于物理页面102通常都比较少,比如只有1GB;而虚拟页面104比较多,比如每个进程都有2GB,所以实质上虚拟页面\n104并不总是能够与物理页面102对应上。具体地讲,页表106为每个虚拟页面设置有有效位和地址字段,有效位表征了该虚拟页面104是否与物理页面102真实对应,当一个虚拟页面104对应的有效位有效时,该有效位后对应的地址字段中的数值才代表一个真实的物理页面102的物理地址。由于操作系统中每个进程的虚拟地址空间对应于实际上的一个高速存储器(如内存),所以事实上在内存管理过程中会出现页面错误的情况,也即当前进程访问的虚拟页面104没有被映射到有效的物理页面102时,发生页面错误(Page Fault)。\n如果虚拟页面104被映射到高速存储器中其它状态的物理页面102,发生的是软页面错误(Soft Fault),如果虚拟页面104被映射到低速存储器上的文件中,发生的是硬页面错误(Hard Fault)。\n[0086] 回到上一话题,当一个进程访问可执行文件和DLL文件时,是采用内存映射文件来访问。内存映像文件也即将低速存储器(如硬盘、SD卡)上的文件直接映射到当前进程的虚拟地址空间,使得当前进程能够像访问高速存储器一样来访问这些文件。以一个可执行文件为例,操作系统初始会通过内存映射将该可执行文件映射进来,但是这时仅仅只是会读取映射基地址附近的少量字节,只有当真实访问时,发生了硬页面错误,操作系统才会将访问到的附近的一些字节读取进来。显然,对于开机过程中的每个进程来讲,由于低速存储器的读写速度低于高速存储器的读写速度有几个数量级之多,使得频繁的硬页面错误会花费很多IO(Input/Output,输入/输出)时间。对于普通的可执行程序文件来讲,自身文件体积一般比较小,通常影响IO时间的主要因素是IO的读写次数,而不是IO的大小。\n[0087] 为了能够减轻这种页面错误的出现次数和对低速存储器的读写次数以达到加速操作系统启动过程的目的,请参考如下实施例。如下实施例主要从两个方面来描述:第一,预取信息的生成过程,或称学习、提取过程;第二,利用前一过程得到的预取信息来加速操作系统启动的过程。\n[0088] 实施例一\n[0089] 请参考图2,其示出了本发明实施例一提供的预取信息生成方法的方法流程图。该预取信息生成方法可以用于终端中或者服务器中。也就是说,可以由于需要加速启动速度的终端自身来生成预取信息并使用;也可以是由服务器来生成该预取信息,然后由服务器将该预取信息提供给需要加速操作系统启动速度的终端使用。该预取信息生成方法可以包括:\n[0090] 步骤202,提取在操作系统启动过程中的输入/输出信息和页面错误信息;\n[0091] 首先可以捕捉操作系统启动过程中的日志文件,该日志文件中包括了每个进程在启动时的IO信息和页面错误信息。\n[0092] 步骤204,根据输入/输出信息和页面错误信息获得操作启动过程中各个进程所需数据块的文件路径、偏移值和长度值;\n[0093] 在诸如硬盘之类的低速存储器上的一个数据块或者说一段数据内容通常采用<文件路径,偏移值,长度值>的格式来描述。以硬盘为例,文件路径代表该数据块在硬盘中所在的文件,偏移值代表该数据块在硬盘中对应文件内的字节偏移,长度值代表该数据块在硬盘中对应文件内的字节大小。\n[0094] 根据上一步骤中获得的输入/输出信息和页面错误信息可以获得操作系统启动过程中所需数据块的文件路径、偏移值和长度值。具体地讲,一方面,可以将所有IO涉及到的数据块按照先后顺序进行排序,分别统计每个数据块的文件路径、偏移值和长度值,在这个过程中还可以对长度值进行页面大小对齐,“页面大小对齐”也即可以将长度值调整为\n4096字节的倍数以便访问;另一方面,可以将所有页面错误涉及到的数据块也按照上述方式进行处理,同时去掉与上述所有IO涉及到的数据块交集的部分,该交集是重复的部分。\n上述两个过程分析后获得到的所有数据块就是操作系统启动过程中所需的数据块。\n[0095] 为了形象说明,举例一个进程A所需的B.DLL文件中的三个数据块的偏移值和长度值的对应表如下:\n[0096] \n偏移值 长度值\n0 4096\n4096 4096\n16384 4096\n[0097] 其中,第一个数据块在B.DLL文件中的偏移值为0字节,长度值为4096字节;第二个数据块在B.DLL文件中的偏移值为4096字节,长度值为4096字节;第三个数据块在B.DLL文件中的偏移值为16384字节,长度值为4096字节。\n[0098] 步骤206,对文件路径相同的相邻数据块的偏移值和长度值进行合并;\n[0099] 由于第一个数据块和第二个数据块都属于B.DLL文件,所以它们的文件路径是相同的,同时第一个数据块的最后一个字节(也即偏移值+长度值)与第二个数据块的第一个字节(也即偏移值)相接,所以第一个数据块与第二个数据块是相邻数据块,对于相邻数据块可以将长度值和偏移值进行合并成为新的数据块。\n[0100] 比如,对上述第一个数据块和第二个数据块的长度值和偏移值进行合并,合并结果如下:\n[0101] \n偏移 长度\n0 8192\n16384 4096\n[0102] 其中,原第一个数据块和第二个数据块被合并成为一个新的数据块,该数据块的偏移值为0,长度值为8192。当然,在实际的实施例中,数据块的数量会非常多,并不局限于上述举例中的几个文件或者几个数据块。\n[0103] 步骤208,根据经过合并过程之后的各个数据块的文件路径、偏移值和长度值生成预取信息。\n[0104] 经过上述合并过程之后,根据所有数据块的文件路径、偏移值和长度值可以生成预取信息以便后续使用。这里的所有数据块包括合并后生成的新数据块和未进行合并的数据块。为了便于使用,还可以在上述生成预取信息的过程中将预取信息进行分类。也即,步骤208可以具体包括:\n[0105] 第一,将经过合并过程之后的各个数据块按照预定对象进行分类,该预定对象包括以下几种对象中的任一种:进程、线程、进程中待加载的模块和文件;\n[0106] 例如,可以将各个数据块按照所属文件路径分类;再比如,可以将各个数据块按照被需要的进程分类,也即将每个进程所需要的数据块各自分类出来。如果需要实现更为精确地预取,还可以按照线程或者进程中待加载的模块进行分类。其中,线程是进程中包括的一种对象,一个进程可以包括多个线程。\n[0107] 第二,根据分类后的数据块的文件路径、偏移值和长度值生成预定对象的预取信息。\n[0108] 在各个数据块被分类后,可以根据各个数据块的文件路径、偏移值和长度值来生成各个个进程的预取信息、各个线程的预取信息和进程中的各个待加载模块的预取信息等等。\n[0109] 综上所述,本实施例一提供的预取信息生成方法通过对操作系统启动过程中所需的数据块进行统计分析,对其中相邻的数据块合并为新的数据块,从而得到了操作系统启动过程中的各个进程所需数据块的文件路径、偏移值和长度值,这些信息可以被生成为后续使用的预取信息。\n[0110] 实施例二\n[0111] 请参考图3,其示出了本发明实施例二提供的加速操作系统启动的方法的方法流程图。该加速操作系统启动的方法可以用于终端中。该终端可以是台式电脑、笔记本电脑、平板电脑和智能手机等任何运行有操作系统,且内部包括有2个层级的存储器的硬件设备。该终端中可以预先设立一个数据库,用于存储有实施例一提供的预取信息生成方法生成的预取信息。该加速操作系统启动的方法可以包括:\n[0112] 步骤302,获取操作系统启动过程中的至少一个待加速的进程的预取信息,预取信息包括该进程所需数据块的文件路径、偏移值和长度值;\n[0113] 在操作系统启动过程中,可以将全部或者部分进程指定为待加速的进程。对于待加速的进程,可以获取该进程对应的预取信息,该预取信息内包括该进程所需数据块的文件路径、偏移值和长度值。通常意义上讲,该预取信息表征该进程所需数据块在低速存储器上的存储位置。\n[0114] 步骤304,根据预取信息将起始位置为文件路径和偏移值所指示的位置,读取长度为长度值的数据块读取到系统缓存中;\n[0115] 在获取到待加速的进程的预取信息之后,可以根据预取信息将起始位置为文件路径和偏移值所指示的位置,读取长度为长度值的数据块读取到系统缓存中。视具体的实施例,该系统缓存通常是指高速存储器,可以是物理页面,也可以是物理页面和页面交换文件两者。其中物理页面通常就是终端中的内存中的存储单位,页面交换文件通常是终端中的硬盘中的用于与内存进行页面置换的存储单位。\n[0116] 步骤306,利用系统缓存中的数据块完成进程的启动过程。\n[0117] 在该进程在操作系统启动过程中被创建之后,可以利用系统缓存中的数据块完成该进程的启动过程。\n[0118] 综上所述,本实施例二提供的加速操作系统启动的方法通过对操作系统启动过程中全部或者部分进程所需数据块从低速存储器中提前预取到高速存储器中,使得操作系统启动过程中的页面错误出现次数和对低速存储器的读写次数大幅度减少,可以有效降低各个程序对应进程的启动时间,从而达到了显著提升操作系统启动速度的效果。\n[0119] 根据预取操作具体执行的时间不同,本文分不同实施例来描述该加速操作系统启动的方法。下述实施例以预取操作在操作系统启动过程的IO空闲时间执行为例。\n[0120] 实施例三\n[0121] 请参考图4,其示出了本发明实施例三提供的加速操作系统启动的方法的方法流程图。该加速操作系统启动的方法可以用于终端中。该终端可以是台式电脑、笔记本电脑、平板电脑和智能手机等任何运行有操作系统,且内部包括有2个层级的存储器的硬件设备。该终端可以预先设立一个数据库,用于存储有实施例一提供的预取信息生成方法生成的预取信息。该加速操作系统启动的方法可以包括:\n[0122] 步骤401,获取预取策略信息;\n[0123] 在终端上电之后,在加载驱动程序时可以加载一个预取驱动,该预取驱动可以获取预取策略信息,该预取策略信息可以是用户预先指定的信息。也即,采取何种预取策略可以由用户选择,比如用户可以预先选择操作系统启动过程中的所有进程都加速,也可以只选择其中一部分进程进行加速。\n[0124] 步骤402,根据预取策略信息获知操作系统启动过程中的至少一个待加速的进程;\n[0125] 该预取驱动根据预取策略信息可以获知操作系统启动过程中的待加速的进程。\n“待加速的进程”可以是全部进程;也可以是用户选择的一部分进程。\n[0126] 步骤403,判断操作系统启动过程中的输入/输出是否处于空闲状态;\n[0127] 因为在开机启动过程中,有一些间隔时间中IO是属于空闲状态的,在这些间隔时间中对待加速进程需要的数据块进行预取可以使操作系统达到负载均衡的效果。同时,步骤402中的预取策略信息中还可以保存每段IO空闲时对哪些待加速进程的所需数据块进行预取,或者说,每段IO空闲时对多少个待加速进程所需数据块或多个字节的数据块进行预取。\n[0128] 为此,预取驱动可以判断在操作系统启动过程中的IO是否处于空闲状态。具体地讲,预取驱动可以监控当前IO访问量等参数来判断操作系统启动过程中的IO是否处于空闲状态。\n[0129] 步骤404,如果判断到操作系统启动过程中的输入/输出处于空闲状态,则从预设数据库中获取待加速的进程的预取信息。\n[0130] 如果预取驱动判断到开机启动过程中的IO处于空闲状态,则可以从预设数据库中获取待加速的进程的预取信息,需要加速的进程可以从预取策略信息中获知。预设数据库中可以存储有所有进程的预取信息,然后预取驱动从预设数据库中获取待加速的进程的预取信息。预取信息包括该进程所需数据块的文件路径、偏移值和长度值。\n[0131] 步骤405,根据预取信息将起始位置为文件路径和偏移值所指示的位置,读取长度为长度值的数据块读取到系统缓存中。\n[0132] 在获取到待加速的进程的预取信息之后,可以根据预取信息将起始位置为文件路径和偏移值所指示的位置,读取长度为长度值的数据块读取到系统缓存中。该系统缓存通常是高速存储器,可以是内存中的物理页面,也可以是物理页面和页面交换文件。\n[0133] 如果本次预取操作执行完毕后,操作系统启动过程还未结束,则继续返回步骤\n403,等待下一次IO空闲时间,以便执行下一次预取操作。\n[0134] 需要说明的是,虽然预取操作可以分段在不同的IO空闲时间执行,但是对于一个待加速的进程来讲,仍然需要在该待加速的进程被创建且真正执行之前完成该待加速的进程所需数据块的相关预取操作。\n[0135] 步骤406,利用系统缓存中的数据块完成进程的启动过程。\n[0136] 在该进程在操作系统启动过程中被创建并真正执行时,可以利用系统缓存中的数据块完成该进程的启动过程。\n[0137] 综上所述,本实施例三提供的加速操作系统启动的方法通过对开机启动过程中全部或者部分进程所需数据块进行预取,使得开机启动过程中的页面错误出现次数和对低速存储器的读写次数大幅度减少,可以有效降低各个程序对应进程的启动时间,从而达到了显著提升终端的开机启动速度的效果。同时,本实施例三提供的加速操作系统启动的方法利用操作系统启动过程中的IO空闲时间来完成预取工作,可以使系统达到负载均衡和更高的效率。\n[0138] 下述实施例以预取操作在进程创建时并行执行为例。\n[0139] 实施例四\n[0140] 请参考图5,其示出了本发明实施例四提供的加速操作系统启动的方法的方法流程图。该加速操作系统启动的方法可以用于终端中。该终端可以是台式电脑、笔记本电脑、平板电脑和智能手机等任何运行有操作系统,且内部包括有2个层级的存储器的硬件设备。该终端可以预先设立一个数据库,用于存储有实施例一提供的预取信息生成方法生成的预取信息。该加速操作系统启动的方法可以包括:\n[0141] 步骤501,获取预取策略信息;\n[0142] 在终端上电之后,在加载驱动程序时可以加载一个预取驱动,该预取驱动可以获取预取策略信息,该预取策略信息可以是用户预先指定的信息。也即,采取何种预取策略可以由用户选择,比如用户可以选择开机启动过程中的所有进程都加速,也可以只选择其中一部分进行加速。\n[0143] 步骤502,根据预取策略信息获知操作系统启动过程中的至少一个待加速的进程;\n[0144] 该预取驱动根据预取策略信息可以获知操作系统启动过程中的待加速的进程。\n“待加速的进程”可以是全部进程;也可以是用户选择的一部分进程。同时,预取驱动在获知所有待加速的进程之后,可以向系统注册一些事件回调,这些事件回调可以是进程创建消息回调、线程创建消息回调等等。这样,在待加速的进程被创建后,就会立刻触发该回调函数;或者,在待加速的进程中的线程被创建后,就会立刻触发该回调函数。\n[0145] 步骤503,判断进程或者进程中的单位是否被创建;\n[0146] 此步骤可以通过回调函数是否被触发来实现,比如,一个进程被创建,则对应这个进程的回调函数就会被触发,可以认为判断到该进程被创建了,但是该进程此时还未被真正地执行;又比如,一个进程中的线程被创建,则对应这个线程的回调函数就会被触发,可以认为判断到该线程被创建了,但是该线程此时还未被真正地执行。\n[0147] 步骤504,如果判断到进程或者进程中的单位被创建,则从预设数据库中获取进程或者进程中的单位的预取信息;\n[0148] 其中,进程中的单位包括该进程中的线程或该进程中等待加载的模块。\n[0149] 如果回调函数被触发,则可以从预设数据库中获取该进程或者该进程中的单位的预取信息。比如,一个进程的回调函数被触发,则可以从预设数据库中获取该进程的预取信息;又比如,一个线程的回调函数被触发,则可以从预设数据库中获取该线程的预取信息;\n再比如,一个等待加载的模块被触发,则可以从预设数据库中获取该等待加载的模块的预取信息。\n[0150] 步骤505,根据预取信息将起始位置为文件路径和偏移值所指示的位置,读取长度为长度值的数据块读取到系统缓存中。\n[0151] 在获取到进程或者进程中的单位的预取信息之后,可以根据预取信息将起始位置为文件路径和偏移值所指示的位置,读取长度为长度值的数据块读取到系统缓存中。该系统缓存通常是高速存储器,可以是内存中物理页面,也可以是物理页面和页面交换文件两者。这样在该进程或者进程中的单位被实际执行之前或者实际加载之前,就可以完成相关数据块的预取操作。\n[0152] 步骤506,利用系统缓存中的数据块完成进程的启动过程。\n[0153] 在该进程在操作系统启动过程中被创建并真正执行时,可以利用系统缓存中的数据块完成该进程的启动过程。\n[0154] 综上所述,本实施例四提供的加速操作系统启动的方法通过对操作系统启动过程中全部或者部分进程所需数据块进行预取,使得操作系统启动过程中的页面错误出现次数和对低速存储器的读写次数大幅度减少,可以有效降低各个程序对应进程的启动时间,从而达到了显著提升终端的开机启动速度的效果。同时,本实施例四提供的加速操作系统启动的方法还通过在进程被创建时并行预取的方式来完成预取操作,比较适合需要加速的进程较多时的预取。\n[0155] 实施例五\n[0156] 请参考图6,其示出了本发明实施例五提供的预取信息生成装置的结构方框图。该预取信息生成装置可以用于终端中或者服务器中。该预取信息生成装置可以包括信息提取模块620、信息分析模块640、信息合并模块660和信息生成模块680。\n[0157] 信息提取模块620用于提取在操作系统启动过程中的输入/输出信息和页面错误信息。\n[0158] 信息分析模块640用于根据输入/输出信息和页面错误信息获得操作系统启动过程中各个进程所需数据块的文件路径、偏移值和长度值。\n[0159] 信息合并模块660用于对文件路径相同的相邻数据块的偏移值和长度值进行合并。\n[0160] 信息生成模块680用于根据经过合并过程之后的各个数据块的文件路径、偏移值和长度值生成预取信息。信息生成模块680又可以具体包括信息分类单元682和信息生成单元684,如图7所示。其中,信息分类单元682用于将经过合并过程之后的各个数据块按照预定对象进行分类,预定对象包括以下几种对象中的任一种:进程、线程、进程中待加载的模块和文件;信息生成单元684用于根据分类后的数据块的文件路径、偏移值和长度值生成预定对象的预取信息。\n[0161] 综上所述,本发明实施例五提供的预取信息生成装置通过对操作系统启动过程中所需的数据块进行统计分析,对其中相邻的数据块合并为新的数据块,从而得到了操作系统启动过程中的各个进程所需数据块的文件路径、偏移值和长度值,根据这些信息可以生成后续使用的预取信息。\n[0162] 需要说明的是:上述实施例五提供的预取信息生成装置在生成预取信息时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例五提供的预取信息生成装置与实施例一提供的预取信息生成方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述[0163] 实施例六\n[0164] 请参考图8,其示出了本发明实施例六提供的加速操作系统启动的装置的结构方框图。该加速操作系统启动的装置可以用于终端中。该终端可以是台式电脑、笔记本电脑、平板电脑和智能手机等任何运行有操作系统,且内部包括有2个层级的存储器的硬件设备。该终端可以预先设立一个数据库,用于存储有实施例一提供的预取信息生成方法或者实施例五提供的预取信息生成装置生成的预取信息。该加速操作系统启动的装置包括策略信息获取模块810、策略信息分析模块830、预取信息获取模块850、预取信息读取模块870和进程启动模块890。\n[0165] 策略信息获取模块810用于获取预取策略信息。\n[0166] 策略信息分析模块830用于根据预取策略信息获知操作系统启动过程中的至少一个待加速的进程。\n[0167] 预取信息获取模块850用于获取操作系统启动过程中的至少一个待加速的进程的预取信息,预取信息包括进程所需数据块的文件路径、偏移值和长度值。\n[0168] 在一种优选地情况下,预取信息获取模块850可以包括空闲判断单元852和第一预取信息获取单元854,如图9所示。其中,空闲判断单元852用于判断操作系统启动过程中的输入/输出是否处于空闲状态;第一预取信息获取单元854用于如果判断到操作系统启动过程中的输入/输出处于空闲状态,则从预设数据库中获取进程的预取信息。\n[0169] 在另一种优选地情况下,预取信息获取模块850可以包括创建判断单元856和第二预取信息获取单元858,如图10所示。其中,创建判断单元856用于判断进程或者进程中的单位是否被创建;第二预取信息获取单元858用于如果判断到进程或者进程中的单位被创建,则从预设数据库中获取进程或者进程中的单位的预取信息,其中,进程中的单位包括进程中的线程或进程中等待加载的模块。\n[0170] 预取数据读取模块870用于根据预取信息将起始位置为文件路径和偏移值所指示的位置,读取长度为长度值的数据块读取到系统缓存中。系统缓存包括物理页面,或物理页面和页面交换文件。\n[0171] 进程启动模块890用于利用系统缓存中的数据块完成进程的启动过程。\n[0172] 综上所述,本实施例六提供的加速操作系统启动的装置通过对操作系统启动过程中全部或者部分进程所需数据块进行预取,使得操作系统启动过程中的页面错误出现次数和对低速存储器的读写次数大幅度减少,可以有效降低各个程序对应进程的启动时间,从而达到了显著提升操作系统启动速度的效果。\n[0173] 需要说明的是:上述实施例提供的加速操作系统启动的装置在实现加速操作系统启动时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的加速操作系统启动的装置与加速操作系统启动的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。\n[0174] 本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。\n[0175] 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
法律信息
- 2014-09-03
- 2012-11-28
实质审查的生效
IPC(主分类): G06F 9/445
专利申请号: 201210106270.1
申请日: 2012.04.12
- 2012-10-03
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2005-04-06
|
2004-09-24
| | |
2
| |
2011-08-31
|
2010-10-14
| | |
3
| |
2010-10-20
|
2010-04-16
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |