信息处理装置和信息处理方法

文档序号:6370767阅读:93来源:国知局
专利名称:信息处理装置和信息处理方法
技术领域
本发明涉及一种用于高速启动包括休眠机制(hibernation mechanism)的信息处理装置的技术。
背景技术
近年来,信息处理装置中所利用的可降低当该信息处理装置处于待机状态时的功耗的休眠引起了关注。休眠是用于中断系统的机制。在系统运行期间,休眠时,存储器或中央处理单元(CPU)寄存器中所包括的信息块(以下称为“休眠图像”)被保存到诸如硬盘的非易失性存储装置中。如果随后关闭电源,则当下次启动系统时,可通过读取休眠图像来恢复与之前相同的状态(以下,称为“休眠启动”)。休眠可用于缩短系统的启动时间的目的。
休眠启动大致分为两种类型。一种是通过基本输入/输出系统(BIOS)功能或引导读取器(boot reader)功能来执行恢复的方法,另一种是通过操作系统的内核功能来执行恢复的方法。
当通过内核功能执行休眠启动时,可在内核几乎完全初始化之后通过读取先前存储在非易失性存储装置中的休眠图像来恢复系统状态。将通过内核功能执行的休眠启动与通过BIOS功能执行的休眠启动进行比较,因为设备通过执行通常的引导序列而被初始化, 所以通过内核功能执行的休眠启动就一般的通用性而言是优良的,并且可容易地使各种类型的设备驱动器对休眠作出响应。
然而,与通过BIOS功能或引导读取器功能执行的休眠启动相比,通过内核功能执行的休眠启动需要对于引导序列的处理时间,因而花费长的启动时间。
如日本专利申请公开No. 2010-157017中所述的,可通过从初始化目标中移除在休眠启动时不需要初始化的设备来缩短启动时间。然而,需要选择从初始化目标中移除的设备,使得可丧失通用性。
—般来讲,如果使用直接存储器存取(DMA)控制器,则可与特定处理并行地在存储装置之间读取信息以及写入信息。如果DMA机制可并入到休眠启动,则可事先与内核的初始化并行地读取休眠图像,使得可缩短用于休眠启动的时间。
然而,在包括复杂存储器管理机制的内核(诸如Linux (注册商标))上,DMA控制器不能将数据写入到由该内核管理的存储区中的任意地址内。因而,通过常规的休眠启动方法,与内核的初始化并行地读取休眠图像是困难的。发明内容
根据本发明的一方面,提供了一种信息处理装置,其包括易失性存储器;非易失性存储器,被配置为存储休眠信息;和读取单元,被配置为与在所述易失性存储器中扩展的内核的初始化并行地,将存储在所述非易失性存储器中的休眠信息的一部分读取到不用于所述内核的初始化的区域中。
根据以下参照附图对示例性实施例的详细描述,本发明的其它的特征和方面将会变得清楚。


并入到本说明书中并构成本说明书的一部分的附图示出了本发明的示例性实施例、附图和方面,并且与描述一起用于解释本发明的原理。
图1示意性地示出信息处理装置的配置。
图2示出根据本发明的示例性实施例的休眠机制中的功能关系。
图3是示出用于创建休眠图像的处理的流程图。
图4示出休眠图像的格式的例子。
图5是示出用于启动系统的处理的流程图。
图6示出内核中的存取区与DMA控制器中的存取区之间的差别。
图7是示出用于恢复休眠图像的处理的流程图。
具体实施方式
以下将参照附图来详细描述本发明的各种示例性实施例、特征和方面。
图1示出了可应用本发明的第一示例性实施例的信息处理装置的使用例子。
在图1中,信息处理装置100包括中央处理单元(CPU) 101和直接存储器存取控制器(DMAC) 102。存储器103包括便宜的大容量易失性存储器,诸如动态随机存取存储器 (DRAM)(比如,同步动态随机存取存储器(SDRAM))。CPU 101或DMAC 102从存储器103读取数据/将数据写入到存储器103中。此外,信息处理装置100包括输入/输出控制单元 104 (以下,称为I/O控制器)和非易失性存储装置105 (比如,闪存、硬盘驱动器(HDD)和固态驱动器(SSD))。
CPU 101将只读存储器(ROM)(未示出)中的程序读取到存储器103中,并且从存储器103提取该程序来执行下述处理。
通过休眠创建的休眠图像存储在非易失性存储装置105中,并且通过I/O控制器 104被读取/写入。设备106被CPU 101初始化。一个或多个设备106可包括在信息处理装置100中。
图2示出了根据本发明的示例性实施例的休眠机制的配置。在休眠机制200中,存储器201a、201b和201c表示同一存储器。存储器201a表示当保存休眠图像时的存储器。 存储器201b表示当执行并行读取时的存储器。存储器201c表示当在并行读取之后恢复休眠图像时的存储器。非易失性存储装置202存储休眠图像。非易失性存储装置202存储内核代码、休眠图像和交换数据(swap data)ο
休眠机制200包括保存单元203。当用户请求系统转变为中断状态时,保存单元 203将休眠图像、交换数据和存储器201a中的数据输出到非易失性存储装置202。
休眠机制200包括存储器限制单元204和存储器初始化机制205。存储器限制单元204限制关于存储器初始化机制205可由操作系统使用的存储区大小。存储器初始化机制205基于关于该限制的信息来初始化存储器201b。休眠机制200还包括内核初始化机制206。基于存储在非易失性存储装置202中的内核代码,内核初始化机制206使用存储器 201b的由存储器初始化机制205初始化的内核管理区来初始化内核。
休眠机制200还包括并行读取单元207和DMAC 208。并行读取单元207使用DMAC 208与内核初始化机制206的初始化处理并行地读取存储在非易失性存储装置202中的休眠图像。在初始化处理期间并行读取单元207输出DMA控制器208的休眠图像的目的地限于未被存储器初始化机制205初始化的内核非管理区。
恢复单元209将未被并行读取单元207从非易失性存储装置202读取到存储器 201c的休眠图像读取到内核非管理区和内核管理区中。恢复单元209读取每个休眠图像, 因而存储器201c可恢复回存储器201a的状态,除了一部分数据之外。
根据本示例性实施例,将通过使用Linux (注册商标)版本2. 6. 18作为常规方法来描述休眠启动的加速。
将描述根据本示例性实施例的用于创建休眠图像的流程。
图3是示出从当系统被请求转变为中断状态时到当系统停止时的流程的流程图。 在步骤S300中,停止进程调度程序(process scheduler)。在步骤S301中,停止每个设备。 在步骤S302中,交换出数据。在步骤S303中,保存CPU寄存器。
在步骤S304中,确定是否正在创建休眠图像。通常,因为正在创建休眠图像(在步骤S304中为是),所以处理进入步骤S305。所述处理进入步骤S308的情况是通过休眠启动使系统恢复到紧接着步骤S303中的处理之后的状态的情况,以下将详细描述该情况。
在步骤S305中,输出休眠图像。在步骤S306中,重新开启(resume)每个设备。然后,在步骤S307中,停止系统。
另一方面,在步骤S308中,重新开启每个设备,并且在步骤S309中,重新开启进程调度程序。步骤S306中的处理与步骤S308中的处理相同。
用户(或用户应用程序)访问虚拟文件系统,以请求系统转变为中断状态。为了执行步骤3300、5301、5302、5306、5307、5308和5309中的处理,使用Linux (注册商标)中所包括的常规功能。
在步骤S302中,事先将与在存储器中扩展的进程相关的数据从存储器交换到非易失性存储装置的交换区,使得可确保工作区、缩小休眠图像的大小,并且可缩短启动时间。用户(或用户应用程序)事先访问虚拟文件系统,以指定交换出数据的大小。
在步骤S303中,在专用函数内执行所述处理。当从该函数返回时需要被写回的 CPU通用数据寄存器的值被作为参数保存到存储器上的变量中时,在x86处理器中,寄存器 esp、ebx、ebp、esi和edi与之对应。在恢复时,这些值被写回到存储器和上述CPU寄存器中以从所述函数返回,并且所述函数可恢复到系统停止之前执行的函数。
在步骤S305中,将存储器上剩余的数据作为休眠图像输出到非易失性存储装置。
图4示出了作为休眠信息的例子的休眠图像的格式。标识符400指示休眠图像是否有效。不受内核管理的数据量401指示内核非管理区中所包括的数据块的量。总数据量 402指示内核管理区和内核非管理区这二者中所包括的数据块的总量。地址403存储休眠图像的一组地址。数据404存储休眠图像的一组数据。头部包括标识符400、不受内核管理的数据量401、总数据量402和地址403,而数据部分包括数据404。
数据404按页存储存储器103上的数据。然而,数据404不包括内核代码区、与休眠处理相关的全局变量(以下,称为“休眠全局变量”)和交换出的数据。地址403和数据404 具有彼此对应的关系,数据404中的第N存储数据的位置目的地是地址403中的第N存储地址。地址403中的信息块的量和数据404中的数据量均分别等于总数据量402。
关于将与地址403和数据404相关联地存储的数据,可取的是,将内核非管理区中的数据布置在前面,并且将内核管理区中的数据布置在其后面。该布置的目的是防止该数据在内核被初始化时在内核管理存储器中被恢复。并行读取单元207将可读数据量限制为不受内核管理的数据量401,因而并行读取单元207仅读取数据404的前面部分中的数据, 以不将该数据读取到内核管理存储器中。
为方便休眠启动,依次将休眠图像从特定扇区存储到未被定义为分区的区域(非分区区域)。因而,可取的是,预先在内核代码区中直接设置扇区号。此外,因为设备被停止, 所以不能使用Linux (注册商标)的功能将数据输出到非易失性存储装置。因而,将专用的输出机制添加到内核代码区,以使用该专用的输出机制来执行数据到非易失性存储装置的输出。
接下来,将描述根据本示例性实施例的休眠启动的流程。
图5是示出从当信息处理装置开通时到系统启动时的流程图。在步骤S500中,初始化BIOS。在步骤S501中,引导装载程序装载并扩展内核。
在步骤S502中,检查休眠图像是否存储在非易失性存储装置105中。如果休眠图像被存储(在步骤S502中为是),则在步骤S503a中,对内核进行初始化。在步骤S504中, 恢复休眠图像,然后休眠启动完成。在步骤S503a中,通过DMAC与内核初始化并行地执行并行读取。
如果休眠图像未被存储(在步骤S502中为否),则在步骤S503b中,为了正常启动系统,对内核进行初始化,并且系统的启动完成。
步骤S502和S504中的处理可作为内核初始化处理的一部分来执行。
在步骤S502中,对DMAC进行初始化,将休眠图像的头部从下述区域读取到存储器 103中,在所述区域中,非易失性存储装置的特定扇区(其将为休眠图像存储目的地)位于居前的位置,然后,通过CPU 101的处理检查休眠图像是否被存储。头部优选地被读取到休眠全局变量中,以避免它在被恢复时被覆写。当预定信息被写入到标识符400中时,可确定休眠图像存储在非易失性存储装置中(在步骤S502中为是)。然后,清除关于非易失性存储装置的标识符400的信息,并且开始休眠启动。
另一方面,当确定休眠图像未被存储在非易失性存储装置中时(在步骤S502中为否),在步骤S503b中,对内核进行初始化,以正常启动系统。
Linux (注册商标)特有的休眠机制在内核功能的初始化完成之后读取休眠图像。 因而,当使用内核功能读取休眠图像时,可使用关于非易失性存储装置的分区信息和文件信息。
然而,因为根据本示例性实施例的方法与开始内核初始化并行地开始读取休眠图像,所以不能使用上述分区信息。因此,可取的是,非易失性存储装置设有不被分区信息区分的区域(不被分区信息定义的区域),并且休眠图像通过被转换为具有与文件系统无关的独特格式的数据而被存储在该区域中。
步骤S503a中的内核初始化与步骤S503b中的不使用休眠图像的初始化相比大致有两个不同之处。
第一不同之处在于对将被初始化的系统(内核)可使用的存储器大小施加限制。在通过Linux (注册商标)中的存储器管理机制执行的初始化中,基于从BIOS获得的存储器映射来执行存储器的初始化。另一方面,根据本示例性实施例,在使用Linux (注册商标)的功能执行存储器的初始化之前,重写存储器映射。
当存储器被重写时,可指定特定值(地址),因而可设置仅直到该特定值(地址)的存储区可被内核使用。作为所述特定值,可取的是,可指定作为用于完成内核的初始化(系统的初始化)的工作区所必需的最小大小或更大。改变的区域(存储器映射)的大小不需通过特定处理来恢复,因为它不影响系统恢复之后的操作。这是因为,通过读取休眠图像,关于区域大小的数据被覆写。可取的是,直接在内核的代码区中设置用于设置将由内核使用的上述存储区(以下,称为“内核管理区”)的信息。
通过上述处理,在存储器103中确保包括内核管理区和内核非管理区的两种类型的区域。当安装与极限大小(limit size)相比具有足够大小的存储器时,内核管理区的大小变为等于该极限大小,并且通过从存储器的总大小减去内核管理区而获得的大小对应于内核非管理区(另外可提供其它区域)。然而,当存储器与极限大小相比被不足够地安装时, 不确保内核非管理区。
接下来,第二不同之处在于与内核初始化并行地将休眠图像从非易失性存储装置 105读取到存储器103中。
通过使用DMAC作为并行读取部件,将休眠图像读取到存储器中,以便恢复紧接在休眠图像被保存之前的存储器布置。然而,如果试图一次在整个存储区中恢复休眠图像,则因为内核管理区用于对内核进行初始化,所以存在将在初始化处理中使用的代码被覆写的风险。因而,在并行读取单元中的阶段,将休眠图像读取到其中存储器未被初始化的内核非管理区中。因此,当没有确保内核非管理区时,不执行并行读取。
图6示出了并行读取。存储器600包括内核管理区600a和内核非管理区600b。 内核601仅由CPU 101执行,CPU 101仅访问内核管理区600a。图6示出了 DMAC 602和非易失性存储装置603。DMAC602在内核初始化期间仅将休眠图像传送到内核非管理区600b。
当通过CPU 101指定将用于传送数据的参数(传送源地址、传送目的地地址和数据大小)时,DMAC 602与CPU异步地以被设置为最大大小的预定大小将该数据从非易失性存储装置603传送到存储器。在数据输出完成之后,需要通过CPU 101再次指定新的参数。 可取的是,DMAC 602被设置为使用具有预定大小的数据传送的完成作为触发来中断CPU 101,并且基于地址403来指定接着将读取的数据,以重新执行读取。
另外,可使用本地的高级可编程中断控制器(APIC)定时器来以规律的时间间隔产生中断,并且CPU 101可检查DMAC 602的读取状态。如果读取完成,则可基于地址403来指定接着将读取的数据,并且DMAC 602可重新执行读取。
DMAC 602继续休眠图像的并行读取,直到DMAC 602结束将被读取到内核非管理区中的所有休眠图像的读取为止,或者就在内核初始化结束之后DMAC 602开始将休眠图像读取到内核管理区或内核非管理区中之前。
然而,在高级技术附件(ATA)的初始化期间,不能执行DMA的传送。因此,一旦DMA 完成传送,在ATA的初始化之前临时停止DMA的传送,并且在ATA的初始化之后重新开启 DMA的传送。
在步骤S504中,将非易失性存储装置603中的休眠图像的未被读取到存储器600中的一部分读取到存储器600中。
图7示出了步骤S504中的处理的细节,并且是根据本示例性实施例的用于恢复休眠图像的处理的流程。在步骤S700中,停止进程调度程序。在步骤S701中,停止该设备。 在步骤S702中,改变堆栈。在步骤S703中,停止DMAC的并行读取。在步骤S704中,CPU 101读取休眠图像。在步骤S705中,恢复CPU寄存器。
在步骤S702中,将用于对内核进行初始化的堆栈切换到用于恢复休眠图像的堆栈。在恢复休眠图像的同时未被使用的存储区中指定用于恢复休眠图像的堆栈,以使得其内容在恢复期间不被覆写。在步骤S705中,恢复该堆栈。
在步骤S703中,使所述处理等待,直到操作的DMAC停止为止。当并行读取已经完成时,不使所述处理等待。
在步骤S704中,读取休眠图像的要被读取到、但是还未被读取到内核非管理区中的一部分和该休眠图像的将被读取到内核管理区中的一部分。重复该处理,直到DMA完成传送的数据的计数器变为等于总数据量402为止。
在步骤S705中,在专用函数内执行所述处理。首先,如果包括转换后备缓冲器 (TLB),则执行TLB快闪(flash)。为了通过x86处理器执行TLB快闪,将CR3寄存器的值一次保存到另一个寄存器,然后再次用保存的值覆写CR3寄存器。该数据被从当被保存到CPU 中时所使用的变量恢复到通用数据寄存器。此外,还恢复了交换到非易失性存储装置202 的交换数据。
在从上述函数返回时,数据可恢复到与紧在步骤S303之后的状态相同的状态,除了休眠全局变量和存储器的未使用区域之外。在步骤S304中,因为没有正在创建休眠图像 (在步骤S304中为否),则所述处理进入步骤S308。休眠全局变量用于上述确定。在步骤 S308中,重新开启每个设备。在步骤S309中,重新开启处理调度程序,然后完成休眠启动。
在步骤S302中交换出的数据在系统恢复之后被从储存器读取到存储器中。例如, 如同Linux (注册商标)中所包括的交换机制一样,交换的数据根据页面出错的产生被写回到存储器。如果所有的休眠图像可与内核的初始化并行地被传送到存储器,则可跳过步骤 S703中的处理,并且可通过内核的存储器管理功能释放内核管理区。
根据如上所述的本示例性实施例,当再次使用休眠图像启动系统时,可与内核初始化并行地读取休眠图像的部分,以使得可以以比常规方法高的速度恢复系统。此外,根据本示例性实施例,可缩短休眠启动中存储器管理机制对存储器进行初始化所需的时间。
此外,本发明可通过执行以下处理来实现。更具体地讲,通过网络或各种存储介质将用于实现以上示例性实施例的功能的软件(程序)供给系统或装置,并且该系统或装置的计算机(或CPU或微处理单元(MPU))读取并执行该程序。
虽然已参照示例性实施例描述了本发明,但是要理解本发明不限于所公开的示例性实施例。权利要求的范围应被给予最宽泛的解释,以涵盖所有修改、等同结构和功能。
权利要求
1.一种信息处理装置,包括 易失性存储器; 非易失性存储器,被配置为存储休眠信息;以及 读取单元,被配置为与在所述易失性存储器中扩展的内核的初始化并行地将存储在所述非易失性存储器中的休眠信息的一部分读取到不用于所述内核的初始化的区域中。
2.根据权利要求I所述的信息处理装置,其中,所述读取单元将所述休眠信息的其余部分读取到所述易失性存储器中,以在所述内核的初始化之后启动系统。
3.根据权利要求I所述的信息处理装置,还包括存储器管理单元,被配置为对于所述易失性存储器分配用于所述内核的初始化的内核管理区和不用于所述内核的初始化的内核非管理区。
4.根据权利要求I所述的信息处理装置,还包括启动单元,被配置为如果所述休眠信息未被保存在所述非易失性存储器中,则执行控制以正常启动所述信息处理装置。
5.根据权利要求I所述的信息处理装置,还包括保存单元,被配置为将所述休眠信息保存在所述非易失性存储器中。
6.根据权利要求5所述的信息处理装置,其中,所述保存单元将所述休眠信息在具有与文件系统无关的格式的文件中保存到所述非易失性存储器中。
7.根据权利要求3所述的信息处理装置,其中,所述存储器管理单元将内核管理区的大小设置为所述内核的初始化所需的最小大小或更大。
8.根据权利要求I所述的信息处理装置,其中,所述读取单元包括直接存储器存取(DMA)控制器,并且将存储在所述非易失性存储器中的休眠信息读取到不用于所述内核的初始化的所述区域中。
9.一种在包括易失性存储器和存储休眠信息的非易失性存储器的信息处理装置中执行的用于处理信息的方法,所述方法包括 与在所述易失性存储器中扩展的内核的初始化并行地将存储在所述非易失性存储器中的休眠信息的一部分读取到不用于所述内核的初始化的区域中。
全文摘要
本发明公开了信息处理装置和信息处理方法。通过内核功能执行的休眠启动由于通常的引导序列所需的处理时间而花费长的时间。当启动操作系统时,根据本发明的信息处理装置在存储器管理机制的初始化之前确定是否执行休眠启动处理。当执行休眠启动处理时,使存储器管理机制的大小减小到初始化内核所需的最小大小,并且与硬件的初始化并行地读取休眠图像。通过读取休眠图像,受限的存储器管理区可恢复到不受限制的状态。
文档编号G06F9/445GK102981864SQ20121017882
公开日2013年3月20日 申请日期2012年6月1日 优先权日2011年6月3日
发明者加藤谦介 申请人:佳能株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1