一种快速重新启动计算机的方法和装置的制作方法

文档序号:6580268阅读:149来源:国知局
专利名称:一种快速重新启动计算机的方法和装置的制作方法
技术领域
本发明涉及计算机系统,具体地涉及一种快速重新启动计算机的方法和装置。
背景技术
随着嵌入式系统的不断发展,为了实现更为复杂的功能,引导阶段需要初始化 的外部设备越来越多,引导程序也设计的越来越复杂,造成启动速度大大的降低。因 此,当系统更新了某些重要组件而需要重新启动时,当开始重新启动,从系统离线到下 一次在线需要花费的时间也越来越长,这在特定的应用场合这是无法接受的。现行技术中,操作系统的设计者通常会选择微内核设计和可加载模块的技术, 尽量避免在修改部分功能时重新启动系统。尽管如此,当内核有所改动时,重新启动系 统的操作依然无法避免。
当需要重启系统时,设计者通常会对当前状态进行一些处理,如保存当前缓存 中的数据,通知所有进程退出等等,然后利用看门狗或者电源管理芯片的功能对整个系 统进行复位。如如果是利用看门狗复位,则处理器复位后进入内部自检状态,自检完 成后从外部读入引导程序,引导程序又会初始化必需的外围硬件,然后再引导操作系统 内核。因此,目前计算机重启过程包括处理器复位完毕后重新加载引导程序;引导 程序对处理器及外围器件初始化完毕后,尝试读取并加载操作系统内核;操作系统内核 启动之后,先进行必要的软件和硬件初始化,然后加载应用程序;应用程序开始运行正 常后,系统再次进入在线状态。按照目前的这种方式重新启动操作系统,系统离线时间长。

发明内容
本发明要解决的是提供一种快速重新启动计算机的方法和装置,能够实现快速 启动计算机系统。为了解决上述问题,本发明提供了一种快速重新启动计算机的方法,包括当所述计算机接收到重新启动操作系统的命令后,所述计算机保存新内核并加 载引导代码;所述引导代码为与位置无关的代码,相对于当前的运行地址来访问全局变 量;所述计算机执行关闭操作系统;所述计算机准备重新启动时所需的新内核信息,至少包括新内核大小及执行时 入口的物理地址; 所述计算机跳转到所述弓I导代码入口处将所述新内核信息作为参数传入;所述计算机跳转到所述执行时入口的物理地址执行所述新内核,快速启动过程完毕。进一步地,上述方法还具有如下特点
所述计算机将所述新内核保存到RAM中,将所述引导代码保存到RAM中或者 外部模块中。进一步地,上述方法还具有如下特点所述计算机跳转到所述引导代码入口处将所述新内核信息作为参数传入之后, 跳转到所述执行时入口的物理地址执行所述新内核之前,还包括所述引导代码以拷贝方式将所述新内核信息备份到所述执行时入口的物理地址。进一步地,上述方法还具有如下特点 所述新内核信息还包括新内核当前虚拟地址、执行时入口的虚拟地址和存储管 理单元状态;当所述存储管理单元状态为使能时,所述计算机跳转到所述引导代码入口处将 所述新内核信息作为参数传入之后,跳转到所述执行时入口的物理地址执行所述新内核 之前,还包括所述引导代码以拷贝方式将所述新内核信息备份到所述执行时入口的虚拟地 址,并禁用存储管理单元功能。进一步地,上述方法还具有如下特点所述引导代码以拷贝方式备份所述新内核信息后,处理重要数据段,包括代码 段、数据段及bss段。进一步地,上述方法还具有如下特点所述新内核信息还包括当前内核的引导参数;所述计算机跳转到所述执行时入口的物理地址执行所述新内核前,还包括建立新的堆栈,并将所述内核的引导参数拷贝到新的区域,构建所述新内核的 引导参数。为了解决上述问题,本发明还提供了一种快速重新启动计算机的装置,所述装 置包括引导模块,存储模块,操作系统关闭模块和加载模块;其中,所述引导模块,用于在接收到重新启动操作系统的命令后加载引导代码,指示 存储模块保存新内核,并指示所述操作系统关闭模块关闭操作系统;所述引导代码为与 位置无关的代码,相对于当前的运行地址来访问全局变量;所述存储模块,用于保存引导代码,以及在接收到所述引导模块的指示后保存 所述新内核;所述操作系统关闭模块,用于接收到所述引导模块的关闭操作系统的指令后执 行关闭操作系统,执行完毕后指示所述加载模块;所述加载模块,用于接收到所述操作系统关闭模块的指示后,准备重新启动时 所需的新内核信息,所述新内核信息至少包括新内核大小及执行时入口的物理地址;以 及调用所述存储模块中的引导代码,并跳转到所述引导代码的入口处将所述新内核信息 作为参数传入,然后跳转到所述执行时入口的物理地址执行所述新内核。进一步地,上述装置还具有如下特点所述加载模块跳转到所述引导代码入口处将所述新内核信息作为参数传入之 后,跳转到所述执行时入口的物理地址执行所述新内核之前,还包括
所述引导代码以拷贝方式将所述新内核信息备份到所述执行时入口的物理地址。进一步地,上述装置还具有如下特点所述新内核信 息还包括新内核当前虚拟地址、执行时入口的虚拟地址和存储管 理单元状态;当所述存储管理单元状态为使能时,所述加载模块跳转到所述引导代码入口处 将所述新内核信息作为参数传入之后,跳转到所述执行时入口的物理地址执行所述新内 核之前,还包括所述引导代码以拷贝方式将所述新内核信息备份到所述执行时入口的虚拟地 址,并禁用存储管理单元功能。进一步地,上述装置还具有如下特点所述新内核信息还包括当前内核的引导参数;所述加载模块跳转到所述执行时入口的物理地址执行所述新内核前,还包括建立新的堆栈,并将所述当前内核的引导参数拷贝到新的区域,构建所述新内 核的引导参数。上述方法和装置采用直接加载操作系统的内核的方法,大大缩短了操作系统离 线的时间,可以在保证操作系统的稳定性和功能完整性的基础上,跳过不必要的启动步 骤,即可以不对处理器复位,不对系统进行内部自检,不需要初始化外围的必需硬件, 因而简化了启动流程,减少了启动时间,从而实现快速地重新启动系统。此外,平均无 故障时间(Mean Time BetweenFailures,MTBF)等性能指标也会随着系统离线时间的减少 而增加,系统的服务可靠性也会大大的提高。


图1是本发明实施例的快速重新启动计算机的流程图;图2是实现本发明实施例的快速重新启动计算机的装置结构图;图3是本发明应用示例的快速重新启动流程图。
具体实施例方式下面结合附图对本发明装置以及方法的具体实施方式
进一步地详细描述。本实施例的快速重新启动计算机系统的方法如图1所示,包括以下步骤(a)当计算机接收到重新启动操作系统的命令后,计算机保存新内核(重启以后 的操作系统内核)并加载引导代码;为了简化重新启动的过程,系统可以将新内核保存到RAM(如内存)中,当然 也可以是其他约定的位置。引导代码用于在重新启动操作系统时,拷贝并加载新内核;该引导代码不使用 绝对地址进行访问,即与位置无关,而是使用相对于当前的运行地址来访问全局变量。该引导代码可以与新内核一起保存到RAM中,也可以保存到外部模块中用外部 模块的方式加载到新内核中,并不需与新内核存于一体。(b)计算机执行关闭操作系统功能;
现有的重新启动过程包括操作系统关闭和操作系统复位两个部分,本发明仅仅 执行操作系统关闭,而不进行操作系统复位,这样就不会对高级电源管理芯片和看门狗 进行复位;其中,关闭操作系统功能中包括禁止外部中断的操作,从而保证之后的所有步 骤能顺序执行,不出现其他分支;此外,由于本步骤中不关闭高级电源管理芯片,因此步骤(a)所保存的新内核的 信息不会丢失。(c)计算机准备重新启动时所需的新内核信息;其中,新内核信息包括新内核执行时入口的物理地址,还可以进一步包括新内 核当前虚拟地址、执行时入口的虚拟地址、存储管理单元状态、新内核大小以及当前内 核的引导参数等;如果计算机的处理器没有存储管理单元(MMU),或者不使用存储管理单元功能 时,新内核信息不需要包括存储管理单元状态,新内核当前虚拟地址以及执行时入口的 虚拟地址;执行时入口的虚拟地址是在关闭MMU之前使用,执行时入口的物理地址在 关闭MMU之后使用。(d)计算机跳转到引导代码的入口处,并将步骤(C)中收 集的新内核信息作为参 数传入到引导代码的入口;其中,引导代码的入口对于计算机的操作系统是确定;(e)计算机以拷贝方式备份新内核信息到执行时入口的虚拟地址;本步骤中,为了避免新内核信息因为操作系统的失效而被破坏,本步骤可选; 如果系统不具有MMU功能或MMU未使能,此处备份到执行时入口的物理地址。(f)计算机将新内核备份到执行时入口的物理地址,处理重要数据段如bss段, 本步骤可选;如果存储管理单元状态表示具有MMU且已使能,本步骤需先将新内核备份到 执行时入口的虚拟地址,然后禁用存储管理单元功能;如果处理器不具有存储管理单元,或者存储管理单元状态表示禁止使用,此处 无需禁用存储管理单元功能,直接将新内核备份到执行时入口的物理地址即可。(g)计算机建立新的堆栈,并将步骤(d)中备份的当前内核的引导参数拷贝到新 的区域,并根据内核需求处理,构建新内核的引导参数;(h)计算机跳转到执行时入口的物理地址处,新内核开始执行,快速启动过程完毕。相应地,本实施例还提供了一种实现上述方法的一种快速重新启动计算机的装 置,如图2所示,该装置包括引导模块,存储模块,操作系统关闭模块和加载模块;其 中,引导模块,用于在接收到重新启动操作系统的命令后加载引导代码,指示存储 模块保存新内核,并指示操作系统关闭模块关闭操作系统;引导代码与位置无关的代 码,相对于当前的运行地址来访问全局变量;存储模块,用于保存引导代码,以及在接收到引导模块的指示后保存新内核;操作系统关闭模块,用于接收到引导模块的关闭操作系统的指令后执行关闭操作系统,执行完毕后指示加载模块;加载模块,用于接收到操作系统关闭模块的指示后,准备重新启动时所需的新 内核信息,新内核信息至少包括新内核大小及执行时入口的物理地址,以及调用存储模 块中的引导代码,并跳转到引导代码的入口处将新内核信息作为参数传入,然后跳转到 执行时入口的物理地址执行新内核。加载模块跳转到所述引导代码入口处将所述新内核信息作为参数传入之后,跳 转到所述执行时入口的物理地址执行所述新内核之前,还包括弓丨导代码以拷贝方式将新内核信息备份到执行时入口的物理地址。新内核信息还包括新内核当前虚拟地址、执行时入口的虚拟地址和存储管理 单 元状态;当存储管理单元状态为使能时,加载模块跳转到引导代码入口处将新内核信息 作为参数传入之后,跳转到执行时入口的物理地址执行新内核之前,还包括引导代码以拷贝方式将新内核信息备份到执行时入口的虚拟地址,并禁用存储
管理单元功能。新内核信息还包括当前内核的引导参数;加载模块跳转到所述执行时入口的物理地址执行所述新内核前,还包括建立新的堆栈,并根据当前内核的引导参数,将当前内核的引导参数拷贝到新 的区域,构建新内核的引导参数。下面结合图3,介绍一个应用示例的快速重新启动系统的过程,其中本应用示例 中的处理器具有MMU,且MMU使能。本应用示例中,引导代码已经包含在当前内核中,且为位置无关代码,之后的 快速重新启动流程包括以下步骤步骤110,将新内核文件的代码段、数据段及其他重要数据加载到不会被交换的 内核空间中;其中,不会被交换的内核空间为在MMU中设置为全局的内存区域,这些区 域不会失效,也不会被交换,由操作系统决定;交换(swap),通常指内存和硬件之间的虚拟内存的数据交换;由于并非所有的信息都是有用的,这里是最重要的一部分数据,包括代码段、 数据段和bss段;代码段指存放代码的段;数据段指存放初始化数据的段;bss段指存放 未初始化数据的段;步骤120,记录新内核镜像入口的虚拟地址、执行时入口的虚拟地址和执行时入 口的物理地址、新内核镜像的大小、bss段的起始地址和大小等信息;步骤130,执行系统重启功能,关闭所有用户程序等,同步数据到磁盘,禁止处 理器对外部中断的响应;本步骤中同步数据到磁盘只是一种特例,为了提高执行速度,操作系统通常会 缓存一部分数据,关闭系统时操作系统会将其写入硬盘,以保证数据的完整性;步骤140,记录当前内核的MMU状态,执行时入口的虚拟地址及执行时入口的 物理地址,以及新内核启动时堆栈物理地址等信息;步骤150,跳转到引导代码处执行;
步骤160,将重要信息复制到引导代码数据段对应区域;其中,重要信息包括新内核镜像入口的虚拟地址、执行时入口的虚拟地址和物 理地址、新内核镜像的大小、bss段的起始地址和大小、MMU状态,快速重新启动代码 的虚拟地址及物理地址等;步骤170,将新内核镜像拷贝到执行时入口的虚拟地址处,根据新内核镜像大小 确定拷贝的长度;
步骤180,根据新内核镜像的bss段的起始地址和大小对新内核镜像的bss段进
行清零;步骤190,判断存储管理单元状态为使能状态,关闭存储管理单元,确保存储管 理单元功能处于关闭状态;步骤200,根据新内核启动时堆栈物理地址构建新的堆栈;步骤210,根据当前内核的引导参数构建新内核的引导参数;步骤220,跳转到执行时入口的物理地址处执行,新内核开始执行;快速重新
启动流程结束。此外,上面的应用示例描述只是根据特定操作系统以及处理器特性的一种实实 现,但本发明并不限于此。如上所述,快速重新启动流程并不利用高级电源管理芯片或者看门狗芯片实现 系统的重新启动,避免了不必要的系统引导过程,从而加快了系统重新启动的过程。很显然,本发明并不限于上述实例,可以根据实际的需求进行更改和变化,而 不脱离本发明的范围和要旨。
权利要求
1.一种快速重新启动计算机的方法,包括当所述计算机接收到重新启动操作系统的命令后,所述计算机保存新内核并加载引 导代码;所述引导代码为与位置无关的代码,相对于当前的运行地址来访问全局变量; 所述计算机执行关闭操作系统;所述计算机准备重新启动时所需的新内核信息,至少包括新内核大小及执行时入口 的物理地址;所述计算机跳转到所述引导代码入口处将所述新内核信息作为参数传入; 所述计算机跳转到所述执行时入口的物理地址执行所述新内核,快速启动过程完毕。
2.如权利要求1所述的方法,其特征在于所述计算机将所述新内核保存到RAM中,将所述引导代码保存到RAM中或者外部 模块中。
3.如权利要求1所述的方法,其特征在于所述计算机跳转到所述引导代码入口处将所述新内核信息作为参数传入之后,跳转 到所述执行时入口的物理地址执行所述新内核之前,还包括所述引导代码以拷贝方式将所述新内核信息备份到所述执行时入口的物理地址。
4.如权利要求1所述的方法,其特征在于所述新内核信息还包括新内核当前虚拟地址、执行时入口的虚拟地址和存储管理单 元状态;当所述存储管理单元状态为使能时,所述计算机跳转到所述引导代码入口处将所 述新内核信息作为参数传入之后,跳转到所述执行时入口的物理地址执行所述新内核之 前,还包括所述引导代码以拷贝方式将所述新内核信息备份到所述执行时入口的虚拟地址,并 禁用存储管理单元功能。
5.如权利要求3或4所述的方法,其特征在于所述引导代码以拷贝方式备份所述新内核信息后,处理重要数据段,包括代码段、 数据段及bss段。
6.如权利要求1或2所述的方法,其特征在于 所述新内核信息还包括当前内核的引导参数;所述计算机跳转到所述执行时入口的物理地址执行所述新内核前,还包括 建立新的堆栈,并将所述内核的引导参数拷贝到新的区域,构建所述新内核的引导参数。
7.—种快速重新启动计算机的装置,其特征在于,所述装置包括引导模块,存储模 块,操作系统关闭模块和加载模块;其中,所述引导模块,用于在接收到重新启动操作系统的命令后加载引导代码,指示存储 模块保存新内核,并指示所述操作系统关闭模块关闭操作系统;所述引导代码为与位置 无关的代码,相对于当前的运行地址来访问全局变量;所述存储模块,用于保存引导代码,以及在接收到所述引导模块的指示后保存所述 新内核;所述操作系统关闭模块,用于接收到所述引导模块的关闭操作系统的指令后执行关 闭操作系统,执行完毕后指示所述加载模块;所述加载模块,用于接收到所述操作系统关闭模块的指示后,准备重新启动时所需 的新内核信息,所述新内核信息至少包括新内核大小及执行时入口的物理地址;以及调 用所述存储模块中的引导代码,并跳转到所述引导代码的入口处将所述新内核信息作为 参数传入,然后跳转到所述执行时入口的物理地址执行所述新内核。
8.如权利要求7所述的装置,其特征在于所述加载模块跳转到所述引导代码入口处将所述新内核信息作为参数传入之后,跳 转到所述执行时入口的物理地址执行所述新内核之前,还包括所述弓I导代码以拷贝方式将所述新内核信息备份到所述执行时入口的物理地址。
9.如权利要求7所述的装置,其特征在于所述新内核信息还包括新内核当前虚拟地址、执行时入口的虚拟地址和存储管理单 元状态;当所述存储管理单元状态为使能时,所述加载模块跳转到所述引导代码入口处将所 述新内核信息作为参数传入之后,跳转到所述执行时入口的物理地址执行所述新内核之 前,还包括所述引导代码以拷贝方式将所述新内核信息备份到所述执行时入口的虚拟地址,并 禁用存储管理单元功能。
10.如权利要求7或8或9所述的方法,其特征在于所述新内核信息还包括当前内核的引导参数;所述加载模块跳转到所述执行时入口的物理地址执行所述新内核前,还包括建立新的堆栈,并将所述当前内核的引导参数拷贝到新的区域,构建所述新内核的 引导参数。
全文摘要
一种快速重新启动计算机的方法,包括当所述计算机接收到重新启动操作系统的命令后,所述计算机保存新内核并加载引导代码;所述引导代码为与位置无关的代码,相对于当前的运行地址来访问全局变量;所述计算机执行关闭操作系统;所述计算机准备重新启动时所需的新内核信息,至少包括新内核大小及执行时入口的物理地址;所述计算机跳转到所述引导代码入口处将所述新内核信息作为参数传入;所述计算机跳转到所述执行时入口的物理地址执行所述新内核,快速启动过程完毕。相应地,还提供了一种快速重新启动计算机的装置,包括引导模块,存储模块,操作系统关闭模块和加载模块。上述方法和装置大大缩短了操作系统离线的时间,简化了启动流程。
文档编号G06F9/445GK102012823SQ20091017146
公开日2011年4月13日 申请日期2009年9月4日 优先权日2009年9月4日
发明者李林, 陈正伟, 高亚南 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1