计算机设备及计算机设备内存启动的方法与流程

文档序号:18337861发布日期:2019-08-03 15:59阅读:281来源:国知局
计算机设备及计算机设备内存启动的方法与流程

本发明涉及信息技术领域,尤其涉及一种计算机设备以及内存启动的方法。



背景技术:

内存是计算机中重要的部件之一,计算机中所有程序的运行都是在内存中进行。内存的作用是用于暂时存放中央处理器(CPU,central processing unit)中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。

随着CPU技术的发展以及内存的容量增大及价格的降低,计算机开始使用越来越多的内存来提升自己的整体性能。随之而来的系统启动过程中对内存的training及自检的时间也会线性的增长,当使用TB级的内存的时候,传统的处理方式会在启动阶段初化完系统所有的内存后开始training及自检操作,自检耗时也许会增加到十几分钟,导致计算机启动过慢,影响用户感受。



技术实现要素:

本发明实施例提供一种计算机设备和计算机内存启动的方法,以解决现有技术中计算设备内存初始化时间过长,用户等待时间过长的问题。

本发明实施例的第一方面,提供一种计算机的内存启动方法,包括:

所述计算机的基本输入输出系统在所述计算机上电启动时,在内存的初始化阶段只初始化所述计算机的第一部分内存,所述第一部分内存是预先设定的所述计算机内存的部分内存,经过初始化的所述第一部分内存能够满足所述计算机上运行的操作系统启动对内存的需求;

所述基本输入输出系统,在所述计算机的操作系统启动后继续初始化所述计算机内存中所述第一部分内存之外的内存,并将初始化后的所述第一部分内存之外的内存通知所述计算机的操作系统,使得所述计算机的操作系统对所述计算机内存中所述第一部分内存之外的内存进一步初始化,并将进一步初始化后的内存加入到所述操作系统的可用内存中。

结合第一方面,在第一方面第一种可能的实现方式中,所述计算机的操作系统对所述计算机内存中所述第一部分内存之外的内存进一步初始化包括:

所述计算机的操作系统通过内核线程或内核驱动的方式启动操作系统阶段的内存初始化,并将初始化后的所述计算机内存中除所述第一部分内存之外的内存加入到所述操作系统的可用内存中。

结合第一方面,在第一方面第二种可能的实现方式中,所述方法还包括:

所述计算机的操作系统在启动后,对所述基本输入输出系统初始化后的内存进一步初始化,并将进一步初始化的所述第一部分内存加入到所述操作系统的可用内存中。

结合第一方面,在第一方面第三种可能的实现方式中,所述第一部分内存的大小是通过硬件信号或配置文件的方式设定的;其中,所述硬件信号方式,是通过硬件输出的电平信号以及按照预先设定的电平信号与内存大小的关系来设定所述第一部分内存的大小;所述配置文件方式,是通过在基本输入输出系统中增加配置选项,根据接收到的所述配置选项中输入的内存大小确定所述第一部分内存的大小。

结合第一方面,在第一方面第四种可能的实现方式中,所述第一部分内存的大小是通过预先设定的内存槽位确定的,在基本输入输出系统启动阶段上电的内存槽位对应的内存的大小,为所述第一部分内存的大小。

结合第一方面,在第一方面和第五种可能的实现方式中,所述操作系统对所述基本输入输出系统初始化后的所述第一部分内存之外的内存进一步的初始化包括:

所述操作系统判断所述进一步初始化后的内存是否满足待启动进程所需的内存大小,在所述进一步初始化后的内存大小不满足所述待启动进程所需的内存大小时,等待预定的时间;

所述操作系统在进一步初始化后的内存大小满足所述待启动的进程的要求时,启动所述待启动的进程。

结合第一方面,在第一方面第六种可能的实现方式中,所述方法还包括:

当进一步初始化后的内存大小满足两个以上的进程启动所需的内存时,优先启动优先级高的进程。

结合第一方面,在第一方面第七种可能的实现方式中,其特征在于,所述计算机的操作系统为Linux操作系统,相应的,所述计算机的操作系统对所述计算机内存中所述第一部分内存进行初始化包括:

所述计算机的操作系统通过main函数和start_kernel函数对所述计算机内存中除所述第一部分内存之外的内存进行初始化;

其中,所述计算机的操作系统通过main函数对所述基本输入输出系统初始化完成的内存进行探测,并写入全局e820表中;

所述start_kernel函数用于初始化内存管理区。

第二方面,本发明实施例还提供了一种计算机设备,包括内存和中央处理器,以及运行在所述计算机设备上的基本输入输出系统和操作系统,

所述基本输入输出系统,用于在所述计算机设备上电启动时,在内存的初始化阶段只初始化所述计算机设备的第一部分内存,所述第一部分内存是预先设定的所述计算机设备内存的部分内存,经过初始化的所述第一部分内存能够满足所述计算机设备上运行的操作系统启动对内存的需求;并在所述操作系统启动后继续初始化所述计算机内存中所述第一部分内存之外的内存,并将初始化后的所述第一部分内存之外的内存通知所述操作系统;

所述操作系统,用于对所述计算机设备内存中所述第一部分内存之外的内存进一步初始化,并将进一步初始化后的内存加入到所述操作系统的可用内存中。

结合第二方面,在第二方面第一种可能的实现方式中,所述操作系统对所述计算机内存中除所述第一部分内存之外的内存进一步初始化包括:

所述操作系统通过内核线程或内核驱动的方式启动操作系统阶段的内存初始化,并将初始化后的所述计算机内存中除所述第一部分内存之外的内存加入到所述操作系统的可用内存中。

结合第二方面,在第二方面第二种可能的实现方式中,所述操作系统还用于,在启动后对所述基本输入输出系统初始化后的所述第一部分内存进一步初始化,并将进一步初始化的所述第一部分内存加入到所述操作系统的可用内存中。

结合第二方面,在第二方面第三种可能的实现方式中,

所述第一部分内存的大小是通过硬件信号或配置文件的方式设定的;其中,所述硬件信号方式,是通过硬件输出的电平信号以及按照预先设定的电平信号与内存大小的关系来设定所述第一部分内存的大小;所述配置文件方式,是通过在基本输入输出系统中增加配置选项,根据接收到的所述配置选项中输入的内存大小确定所述第一部分内存的大小。

结合第二方面,在第二方面第四种可能的实现方式中,

所述第一部分内存的大小是通过预先设定的内存槽位确定的,在所述基本输入输出系统的程序启动阶段上电的内存槽位对应的内存的大小,为所述第一部分内存的大小。

结合第二方面,在第二方面第五种可能的实现方式中,所述操作系统对所述基本输入输出系统初始化后的所述第一部分内存之外的内存进一步的初始化包括:

所述操作系统判断所述进一步初始化后的内存是否满足待启动进程所需的内存大小,在所述进一步初始化后的内存大小不满足所述待启动进程所需的内存大小时,等待预定的时间,在进一步初始化后的内存大小满足所述待启动的进程的要求时,启动所述待启动的进程。

结合第二方面,在第二方面第六种可能的实现方式中,

所述操作系统对所述基本输入输出系统初始化后的所述第一部分内存之外的内存进一步的初始化时,如果进一步初始化后的内存大小满足两个以上的进程启动所需的内存时,优先启动优先级高的进程。

结合第二方面,在第二方面第七种可能的实现方式中,所述操作系统为Linux操作系统,相应的,所述操作系统对所述计算机内存中除所述第一部分内存之外的内存进行初始化包括:

所述操作系统通过main函数和start_kernel函数对所述计算机内存中除所述第一部分内存之外的内存进行初始化;

所述操作系统通过main函数对所述基本输入输出系统的程序初始化完成的内存进行探测,并写入全局e820表中;

所述start_kernel函数用于初始化内存管理区。

通过本发明实施例提供的计算机设备和计算机的内存启动方法,在计算机上电启动后,基本输入输出系统在内存初始化阶段只初始化第一部分内存,使得操作系统能够启动,并在操作系统启动后,由基本输入输出系统继续初始化计算机中未初始化的内存,使得计算机在启动阶段,不需要等到所有的内存初始化后再启动操作系统,缩短了计算机从启动到进入操作系统的时间,使得用户能够快速进入操作系统进行操作,提高了用户的体验。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例一种计算机的内存启动方法流程示意图;

图2为本发明实施例以UEFI BIOS为例示出的一种计算机的内存启动方法流程图;

图3为本发明实施例中PEI阶段所执行事务的流程示意图;

图4为本发明实施例UEFI BIOS启动过程的流程示意图;

图5为以Linux操作系统为例说明本发明实施例在操作系统启动过程中对内存进行检测和初始化的过程;

图6为本发明实施例一种计算机设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。

在计算机设备上电启动后,会首先进入基本输入输出系统的运行阶段,此阶段主要完成系统硬件的自检及初始化、程序服务启动、中断资源分配、OS引导等操作。基本输入输出系统运行到系统启动选项菜单后,会根据当前的配置跳转到操作系统引导程序,操作系统引导程序会引导操作系统OS(OS,Operating System)的启动,当OS开始启动时OS会接管CPU的控制权,OS继续对系统的硬件、服务等进行初始化,并最终运行到用户登入界面。

本发明实施例提供了一种计算机内存启动的方法,在基本输入输出系统启动过程中,只初始化部分内存,待操作系统启动以后,由基本输入输出系统在后台继续初始化内存,从而能够是计算机快速地进入操作系统的界面,使得用户不需要等待过长的启动时间,能够快速地进入操作系统,实现对操作系统的操作和个性化的设置等等。

参考图1,图1为本发明实施例一种计算机的内存启动方法流程示意图,包括:

步骤100:所述计算机的基本输入输出系统在所述计算机上电启动时,在内存的初始化阶段只初始化所述计算机的第一部分内存,所述第一部分内存是预先设定的所述计算机内存的部分内存,经过初始化的所述第一部分内存能够满足所述计算机上运行的操作系统启动对内存的需求;

步骤102:所述基本输入输出系统,在所述计算机的操作系统启动后继续初始化所述计算机内存中所述第一部分内存之外的内存,并将初始化后的所述第一部分内存之外的内存通知所述计算机的操作系统,使得所述计算机的操作系统对所述计算机内存中所述第一部分内存之外的内存进一步初始化,并将进一步初始化后的内存加入到所述操作系统的可用内存中。

上述计算机的内存启动方法,在计算机上电启动后,基本输入输出系统在内存初始化阶段只初始化第一部分内存,使得操作系统能够启动,并在操作系统启动后,由基本输入输出系统继续初始化计算机中未初始化的内存,使得计算机在启动阶段,不需要等到所有的内存初始化后再启动操作系统,缩短了计算机从启动到进入操作系统的时间,使得用户能够快速进入操作系统进行操作,提高了用户的体验。

其中,本发明实施例中第一部分内存可以是满足基本的操作系统的内存,基本的操作系统是不包括附加功能(例如网页浏览器)的操作系统,只要能够进入操作系统界面,实现操作系统的基本操作,或者计算机用户预先设定的特定功能的操作即可,从而能够更加快速地节省计算机从启动到操作系统的时间,提高用户的体验。

作为一种可选的实现方式,上述步骤102中,所述计算机的操作系统对所述计算机内存中所述第一部分内存之外的内存进一步初始化包括:

所述计算机的操作系统通过内核线程或内核驱动的方式启动操作系统阶段的内存初始化,并将初始化后的所述计算机内存中除所述第一部分内存之外的内存加入到所述操作系统的可用内存中。

上述方法通过内核线程或内核驱动的方式,使得操作系统在启动后进一步的初始化基本输入输出系统初始化后的内存,使得进一步初始化后的内存能够被所述操作系统使用,满足操作系统启动后部分进程或附加功能的内存需求。

在计算机的操作系统启动过程中,操作系统启动需要要的内存是基本输入输出系统初始化后的第一部分内存,所述操作系统在使用所述第一部分内存之前需要对所述第一部分内存进行初始化并能够被所述操作系统使用后,才最终完成所述操作系统的启动。当所述计算机的操作系统为Linux操作系统,可以由Linux操作系统中的main函数和start_kernel函数对所述计算机内存中除所述第一部分内存之外的内存进行初始化;其中,所述Linux操作系统通过main函数对所述基本输入输出系统初始化完成的内存进行探测,并写入全局e820表中;所述start_kernel函数用于初始化内存管理区。

作为一种可选的方式,所述第一部分内存的大小是通过硬件信号或配置文件的方式设定的;其中,所述硬件信号方式,是通过硬件输出的电平信号以及按照预先设定的电平信号与内存大小的关系来设定所述第一部分内存的大小;所述配置文件方式,是通过在基本输入输出系统中增加配置选项,根据接收到的所述配置选项中输入的内存大小确定所述第一部分内存的大小。

或者,所述第一部分内存的大小是通过预先设定的内存槽位确定的,在基本输入输出系统启动阶段上电的内存槽位对应的内存的大小,为所述第一部分内存的大小。

在操作系统启动完成后,在后续的进一步启动过程中,所述操作系统需要对第一部分内存之外的内存进一步的初始化,如果存在有两个以上进程都需要占用内存,则需要判断基本输入输出系统初始化后的第一部分内存之外的内存是否能够满足进程启动或加载的需要。作为一种可选的实现方式,本发明实施例中的操作系统还可以判断所述进一步初始化后的内存是否满足待启动进程所需的内存大小,在所述进一步初始化后的内存大小不满足所述待启动进程所需的内存大小时,等待预定的时间;

所述操作系统在进一步初始化后的内存大小满足所述待启动的进程的要求时,启动所述待启动的进程。进一步的,当进一步初始化后的内存大小满足两个以上的进程启动所需的内存时,优先启动优先级高的进程。

下面以具体的实例,对本发明实施例一种计算机的内存启动方法做进一步的详细说明。

目前常用的基本输入输出系统包括但不限于基本输入输出系统(BIOS,Basic Input Output System)、统一的可扩展固件接口(UEFI,Unified Extensible Firmware Interface)BIOS、以及嵌入式系统中使用的统一引导加载(uboot,Universal Boot Loader)等。本发明实施例以UEFI BIOS下的技术方案为例进行举例说明。

图2以UEFI BIOS为例示意性地示出了根据本发明实施例的一种计算机的内存启动方法具体实现方式一的流程示意图。此流程分为两个阶段,UEFI BIOS运行阶段以及OS启动阶段,下面分阶段介绍这两个阶段的处理流程。

UEFI BIOS运行阶段:

在UEFI BIOS中,执行内存检测及初始化的过程在可扩展固件接口(EFI,Extensible Firmware Interface)的预初始化(PEI,Pre-EFI Initialization)阶段,此阶段主要负责系统运行所需的基本的硬件的初始化准备,图3示意性的示出了PEI阶段所执行的事务;包括C语言代码在Flash中运行,Cache作为堆栈使用,按照事先设定的顺序执行每一个模块,初始化通用输入/输出(GPIO,General Purpose Input and Output)、串口、PCI Bus,分配CPLD资源,初始化CPU互联、CPU与南桥间的总线及相关的设置,内存初始化,在内存中创建HOB(Hand-off Block),该HOB是指在PEI的执行过程中,提供的一种简单的机制来为数据存储分配内存,用于数据存储的区被称为HOB,创建HOB后填入必要信息(例如内存容量等),还包括一些必要的软件设置,例如Cache或堆栈等,之后跳转到驱动运行环境(DXE,Driver Execution Enbironment)。现有技术中,内存的检测及初始化过程即在此PEI阶段中完成。在本发明实施例中,在PEI阶段不检测及初始化计算设备的所有内存,而是只检测及初始化指定大小的内存,然后继续去执行PEI阶段的其它初始化事务。未在PEI阶段检测和初始化的内存,在OS启动后进行检测和初始化。例如,BIOS通过中断(SMI)或是其它可选的方式通知OS,OS接收到BIOS的中断后对BIOS初始化完成的内存继续初始化并加入所述OS的可用内存中。对于应由BIOS检测和初始化的操作,由BIOS继续在后台运行。

上述PEI阶段内存的初始化,检测指定大小的内存的方法可以通过如下方式实现:

方式一:通过硬件信号或配置文件的方式,决定UEFI BIOS程序检测和初始化内存的大小

对于使用硬件信号的方式,可以在连接内存的电路板上确定硬件信号的个数,每个硬件信号有高低电平两种状态,用低电平表示0,高电平表示1。以硬件上共5个信号供BIOS程序读取为例,该5个信号通过5bit的数据表示,并通过采用拔码开关等方式组成一系列的高低电平。BIOS程序检测到这5个信号后,查询预先设定的硬件信号与需要检测的内存大小之间的对应关系,确定具体的需要检测和初始化的内存大小。例如,预先设定的硬件信号与需要检测的内存大小之间的对应关系为:当5个bit全为1时表示检测所有的内存;只有第1个bit为1时,只检测前4G的内存;只有第2个bit为1时只检测前8G的内存等等。如果BIOS检测到的实际的硬件信号所对应的bit位为10000时,即确定需要检测和初始化内存的大小为4G。

对于采用配置文件的方式,可以将配置文件写到BIOS的启动菜单内部(即CMOS菜单选项),并在BIOS设置界面提供用户配置选项,用户可根据实际需要输入要检测数据的大小(如输入2048即表检测前2048M内存,为0即表示检测所有内存)。BIOS检测内存前先读取用户输入的配置信息,即要检测的内存大小,然后再根据接收到的用户输入的内存大小进行内存的检测和初始化。

方式二:通过硬件电路设定内存槽位的方式,决定UEFI BIOS程序检测和初始化内存的大小

通过硬件电路来控制内存槽位的上下电,在BIOS程序启动阶段,只检测和初始化上电的内存槽位,即可实现BIOS程序检测和初始化指定大小的内存。在具体实现时,使用一组印刷板丝印来表示每个内存的槽位号,BIOS在检测内存时,通过识别槽位号确定具体的内存。例如,印刷板上的J110的位置号代表CPU所控制的第3个内存条,通过该对应关系,以及预先配置的需要上电进行内存检测和初始化的内存槽位,确定检测和初始化的内存大小;所述预先的配置可以是用户根据实际的需要进行的配置。计算机设备在最开始启动的时候,将需要检测的内存单元上电,其它内存槽位暂时不上电,待BIOS检测完上电槽位的内存后,进入OS启动阶段,再分别对其它内存进行上电操作。

上述UEFI BIOS启动的过程还可以参考图4所示的流程图实现,不再赘述。

在BIOS启动完成后,计算设备进入OS启动阶段。本实施例以Linux操作系统为例进行说明。

当UEFI BIOS阶段的bootloader将linux内核引导起来后,会进入kernel boot阶段,此阶段主要是bootsect.S和setup.S两段汇编代码完成解压的过程。其中bootsect.S负责生成引导扇区的汇编源码,将setup.S和sytem模块加载到内存中去,并且分别把自己和setup.S代码移动到物理内存中。setup.S将从ROM BIOS的中断程序中获取到的系统参数拷贝到内存中,以便以后这些参数被保护模式下的代码来读取,同时将system模块加载到内存地址中,最后,setup.S将系统转换到保护模式后再跳转到head.s将内核vmlinuz解压到内存,并做初始化中断符、检测地址线等实现内存管理的准备。最后由start_kernel调用初始化函数,完成kernel本身的设置并启动系统的init进程以完成整个系统的启动。

参考图5,图5为以Linux操作系统为例说明本发明实施例在操作系统启动过程中对内存进行检测和初始化的过程。如图D所示,操作系统启动过程中的内存初始化阶段是在main函数和start_kernel中完成的,两者的过程分别如下:

main函数在实模式下运行,过程中对内存进行探测并写入全局e820表,只探测UEFI BIOS阶段已经初始化后的内存。其中,所述e820是在BIOS启动阶段获取到的内存分布表。

start_kernel在保护模式下运行,初始化main函数探测后的内存,包括但不限于内存空间的分配以及使用区域的划分等。

剩余的内存初始化,可以由Linux kernel的逻辑层面的热插拔技术实现内存的检测和初始化;也可以在UEFI BIOS后台检测及初始化后由OS进一步的初始化,使得OS能够利用初始化后的内存。

当通过UEFI BIOS后台检测及初始化后,OS根据BIOS程序发出的通知,通过内核线程或内核驱动等方式启动OS阶段的内存初始化并将其加入系统的可用内存区域。例如,如图E所示的剩余内存初始化过程的一种实现方式,在OS阶段初始化完成后,启动一个监控进程,例如:thread1;Thread1判断计算设备内存是否已经完全初始化,如果还有部分内存未初始化,则继续对未初始化的内存进行初始化。例如计算设备共有1T内存,但是只有4G的内存被初始化,则剩余的6G内存需要初始化。

如果存在未被OS初始化的内存,Thread1可以先判断BIOS是否有新的初始化后的内存信息上报,如果有,则解析上报信息,包括但不限于内存的大小、地址信息等,然后内存进行基本的配置,包括简单测试等自检过程后,

Thread1调用系统的内存热插拔接口,将新上报的内存信息传入系统接口,内存热插拔模块根据传入的信息将新的可用内存加入系统资源。内存热插拔模块依赖于OS提供的功能,如linux 2.6.32后便支持内存热插拔技术。

linux kernel在2.6.23之后的版本陆续支持了内存的热插拔,内存热插拔分为物理层面的热插拔、逻辑层面的热插拔。物理层面的内存热插拔必须依赖硬件和固件提供必要的支持,以提供物理内存热插拔的环境。本发明实施例可以采用逻辑层面的热插拔技术,即通过软件方式,来实现内存初始化完成后加入系统可用资源的过程。

如果所有内存的初始化都已完成,例如总共1G内存的计算设备可用内存为1T,则退出线程thread1。

作为一种可选的实现方式,本发明实施例还提供了一种系统可用内存探测与进程启动的管理机制。当操作系统OS启动后,所有的进程会根据OS的配置文件先后启动,在出现当前可用内存不足时,有可能造成进程启动的失败。本发明实施例进一步包括:在操作系统初始化完成后,启动内存控测管理进程,例如进程thread 2,Thread2读取特定的配置文件,该特定的配置文件记录有需要启动的进程以及该需要启动的进程需要的内存大小等,从而获取待启动进程所需的内存大小。作为可选的实现方式,所述特定的配置文件还可以包含进程的优先级,从而确定待启动的进程。例如,进程A需要2G内存、启动优先级3,进程B需要4G内存启动优先级1,进程C需要6G、内存启动优先级2等等;进程Thread2根据该配置文件记录的信息,判断当前系统可用内存大小,根据可用内存大小,确定可启动的进程。假设当前可用内存2G,根据上述获取到的信息,可以启动A进程,但是A进程优先级为3,以优先级越小的进程先启动为例,此时没有满足条件的进程可以启动,thread2等待特定时间后再次查询当前系统可用内存,假设第二次查询可用内存为6G,满足进程B的启动需要,则启动进程B,并在启动进程B后再次等待,并依据内存大小依次启动进程C及进程A。

对于计算设备运行的操作系统为Windows操作系统或Uboot操作系统的情况,可以参照上述实施例中Linux操作系统的实现方式来实现,不再赘述。

参考图6,图6为本发明实施例一种计算机设备600的结构示意图,包括:

内存601和中央处理器602,以及运行在所述计算机设备上的基本输入输出系统603和操作系统604,其特征在于:

所述基本输入输出系统603,用于在所述计算机设备上电启动时,在内存的初始化阶段只初始化所述计算机设备的第一部分内存,所述第一部分内存是预先设定的所述计算机设备内存的部分内存,经过初始化的所述第一部分内存能够满足所述计算机设备上运行的操作系统启动对内存的需求;并在所述操作系统启动后继续初始化所述计算机内存中所述第一部分内存之外的内存,并将初始化后的所述第一部分内存之外的内存通知所述操作系统;

所述操作系统604,用于对所述计算机设备内存中所述第一部分内存之外的内存进一步初始化,并将进一步初始化后的内存加入到所述操作系统的可用内存中。

上述计算机设备,在计算机上电启动后,基本输入输出系统603在内存初始化阶段只初始化第一部分内存,使得操作系统604能够启动,并在操作系统604启动后,由基本输入输出系统603继续初始化计算机中未初始化的内存,使得计算机在启动阶段,不需要等到所有的内存初始化后再启动操作系统,缩短了计算机从启动到进入操作系统的时间,使得用户能够快速进入操作系统进行操作,提高了用户的体验。

其中,所述操作系统604对所述计算机内存中除所述第一部分内存之外的内存进一步初始化包括:

所述操作系统604通过内核线程或内核驱动的方式启动操作系统阶段的内存初始化,并将初始化后的所述计算机内存中除所述第一部分内存之外的内存加入到所述操作系统的可用内存中。

上述通过内核线程或内核驱动的方式,使得操作系统604在启动后进一步的初始化基本输入输出系统603初始化后的内存,使得进一步初始化后的内存能够被所述操作系统604使用,满足操作系统604启动后部分进程或附加功能的内存需求。

作为一种可选的实现方式,所述操作系统604还用于,在启动后对所述基本输入输出系统初始化后的第一部分内存进一步初始化,并将进一步初始化的所述第一部分内存加入到所述操作系统的可用内存中。当所述操作系统604为Linux操作系统时,所述Linux操作系统的main函数和start_kernel函数对所述计算机内存中除所述第一部分内存之外的内存进行初始化;通过main函数对所述基本输入输出系统的程序初始化完成的内存进行探测,并写入全局e820表中;所述start_kernel函数用于初始化内存管理区。

作为可选的实现方式,所述第一部分内存的大小是通过硬件信号或配置文件的方式设定的;其中,所述硬件信号方式,是通过硬件输出的电平信号以及按照预先设定的电平信号与内存大小的关系来设定所述第一部分内存的大小;所述配置文件方式,是通过在基本输入输出系统中增加配置选项,根据接收到的所述配置选项中输入的内存大小确定所述第一部分内存的大小。或者,所述第一部分内存的大小是通过预先设定的内存槽位确定的,在所述基本输入输出系统的程序启动阶段上电的内存槽位对应的内存的大小,为所述第一部分内存的大小。

在本发明计算机设备的实施例中,所述操作系统604对所述基本输入输出系统603初始化后的所述第一部分内存之外的内存进一步的初始化包括:

所述操作系统604判断所述进一步初始化后的内存是否满足待启动进程所需的内存大小,在所述进一步初始化后的内存大小不满足所述待启动进程所需的内存大小时,等待预定的时间,在进一步初始化后的内存大小满足所述待启动的进程的要求时,启动所述待启动的进程。可选的,所述操作系统604对所述基本输入输出系统603初始化后的所述第一部分内存之外的内存进一步的初始化时,如果进一步初始化后的内存大小满足两个以上的进程启动所需的内存时,优先启动优先级高的进程。

上述计算机设备的实现方式,可以参考上述图2至图5所示流程中计算机启动的方法的具体实现方式来实现,不再赘述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1