基于混合内存的Linux系统的关机、开机方法及系统的制作方法

文档序号:6542869阅读:242来源:国知局
基于混合内存的Linux系统的关机、开机方法及系统的制作方法
【专利摘要】本发明公开了一种基于混合内存的Linux系统的关机、开机方法及系统,属于移动终端【技术领域】。关机方法包括:检测Linux系统的当前进程状态,如果所述当前进程状态为可冻结状态,则冻结所述当前进程状态,并保存寄存器中的值;将保存在DRAM中的数据迁移到PRAM中;执行关机操作。开机方法,包括:检测用户选择的开机模式;如果所述开机模式为快速开机模式,则将PRAM中的数据迁移到DRAM中,并恢复寄存器的值;执行开机操作。基于混合内存的Linux系统的关机、开机方法及系统,在开关机过程中将PRAM作为二级存储设备,能够快速实现数据在DRAM和PRAM之间的迁移,访问延时短,开关机速度快。
【专利说明】基于混合内存的Linux系统的关机、开机方法及系统
【技术领域】
[0001]本发明涉及移动终端【技术领域】,特别涉及一种基于混合内存的Linux系统的关机、开机方法及系统。
【背景技术】
[0002]DRAM (Dynamic Random Access Memory,动态随机存取存储器)是最为常见的系统内存,长期以来担当着移动终端设备主内存的角色。由于DRAM具有易失性,需要不断充电刷新来保持其中所存储的数据,一旦关机断电,存储在DRAM中的信息,以及操作系统本身的镜像都会丢失。随着集成电路关键尺寸的减小,DRAM存储器在尺寸收缩、功耗控制和存储密度方面的发展遇到了极大的困难,DRAM内存技术已接近瓶颈。
[0003]PRAM (Phase-Change Random Access Memory,相变随机存取存储器),具有非易挥发性的特点,即电流关掉后所存储的数据依旧不会丢失。由于PRAM有着与DRAM相似的低功耗、低延时性能,成为最有可能取代DRAM地位的存储器件。
[0004]为了充分发挥PRAM和DRAM各自的优点,并尽可能避开各自的缺点,可以利用大容量的PRAM和小容量的DRAM构成I3DRAM(PRAM&DRAM Hybrid Memory)混合内存,将具有不同读写特性的数据放于相应的存储空间内,这样既可以降低内存系统的静态功耗、增大内存容量,又可以充分发挥PRAM和DRAM在读、写方面的性能优势,降低内存系统的动态功耗。
[0005]现有技术中,移动终端大多搭载安卓操作系统,其为以Linux内核为底层基础的半开源操作系统,其架构还包含了由C语言编写的中间件、库、API和基于Java库应用程序架构。然而,传统的Linux内核的内存管理体系是针对DRAM主内存架构开发的,在开关机时需要在内存和磁盘间进行数据转移,导致开关机速度慢,延时较长。

【发明内容】

[0006]本发明实施例的目的在于提供一种基于混合内存的Linux系统的关机、开机方法及系统,访问延时短,开关机速度快。
[0007]本发明实施例提供的技术方案如下:
[0008]—方面,提供了一种基于混合内存的Linux系统的关机方法,包括:
[0009]检测Linux系统的当前进程状态,如果所述当前进程状态为可冻结状态,则冻结所述当前进程状态,并保存寄存器中的值;
[0010]将保存在DRAM中的数据迁移到PRAM中;
[0011]执行关机操作。
[0012]优选地,所述可冻结状态包括:可运行状态,可中断等待状态,不可中断等待状态和交换状态。
[0013]优选地,所述将保存在所述DRAM中的数据迁移到PRAM中,包括:将保存在所述DRAM中的部分选定数据迁移到所述PRAM中。
[0014]另一方面,提供了一种基于混合内存的Linux系统的开机方法,包括:[0015]检测用户选择的开机模式;
[0016]如果所述开机模式为快速开机模式,则将PRAM中的数据迁移到DRAM中,并恢复寄存器的值;
[0017]执行开机操作。
[0018]优选地,如果所述开机模式为全新开机模式,则复制磁盘数据到所述混合内存中,并重新加载操作系统。
[0019]优选地,所述开机方法还包括:在所述将所述PRAM中的数据迁移到所述DRAM之前,检查标志位是否被置位,如果是,则清空所述PRAM中的数据,并将所述标志位复位。
[0020]第三方面,提供了一种基于混合内存的Linux系统的开关机系统,包括:
[0021 ] 开机模块和关机模块;
[0022]所述开机模块,用于执行开机;
[0023]所述关机模块包括:
[0024]进程检测单元,用于检测Linux系统的当前进程状态;
[0025]判断单元,用于判断所述当前进程状态是否为可冻结状态;
[0026]冻结单元,用于在所述判断单元判断所述当前进程状态为可冻结状态后,冻结所述当前进程状态;
[0027]保存单元,用于保存寄存器中的值;
[0028]第一迁移单元,用于将保存在DRAM中的数据迁移到PRAM中;
[0029]关机单元,用于执行关机操作。
[0030]优选地,所述关机模块还包括:选择单元,用于从保存在所述DRAM中的数据中选定部分需要迁移到PRAM中的数据。
[0031]优选地,所述开机模块包括:模式检测单元、第二迁移单元、恢复单元、加载单元和开机单元;
[0032]所述模式检测单元,用于检测用户选择的开机模式;
[0033]所述第二迁移单元,用于在所述模式检测单元检测到用户选择的开机模式为快速开机模式后,将所述PRAM中的数据迁移到所述DRAM中;
[0034]所述恢复单元,用于恢复寄存器的值;
[0035]所述第二迁移单元,还用于在所述模式检测单元检测到用户选择的开机模式为全新开机模式后,复制磁盘数据到所述混合内存中;
[0036]所述加载单元,用于重新加载操作系统;
[0037]所述开机单元,用于执行开机操作。
[0038]优选地,所述开机模块还包括:
[0039]检查单元,用于在所述将所述PRAM中的数据迁移到所述DRAM中之前,检查标志位是否置位;
[0040]清空及复位单元,用于在所述检查单元检查到所述标志位被置位后,清空所述PRAM中的数据,并将所述标志位复位。
[0041]本发明实施例提供的基于混合内存的Linux系统的关机、开机方法及系统,能够充分发挥PRAM和DRAM各自的优点,在开关机过程中将PRAM作为二级存储设备,不需要内存与磁盘之间的数据交互操作,由于PRAM的访问速度要远远快于磁盘,从而能够快速实现 数据在DRAM和PRAM之间的迁移,访问延时短,可以大大提高开关机速度。
【专利附图】

【附图说明】
[0042]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
[0043]图1为本发明实施例提供的一种I3DRAM混合内存的布局示意图;
[0044]图2为本发明实施例提供的一种关机方法的流程图;
[0045]图3为本发明实施例提供的一种开机方法的流程图;
[0046]图4为本发明实施例提供的另外一种开机方法的流程图;
[0047]图5为本发明实施例提供的一种开关机系统的结构示意图;
[0048]图6为本发明实施例提供的一种关机模块的结构示意图;
[0049]图7为本发明实施例提供的另外一种关机模块的结构示意图;
[0050]图8为本发明实施例提供的一种开机模块的结构示意图;
[0051]图9为本发明实施例提供的另外一种开机模块的结构示意图。
【具体实施方式】
[0052]为了使本【技术领域】的人员更好地理解本发明实施例的方案,下面结合附图和实施方式对本发明实施例作进一步的详细说明。
[0053]以下先对本发明实施例中所涉及的TORAM混合内存,以及如何进行内存分配加以简要介绍。
[0054]如图1所示,为本发明实施例提供的一种I3DRAM混合内存的布局示意图。
[0055]现有技术中的DRAM内存通常包括三个内存域:DMA、NORMAL和HIGHMEM,而本发明实施例所采用的I3DRAM混合内存,可以在原有内存域基础上新增一个内存域,形成四个内存域的结构,具体可以通过枚举结构来创建这四个内存域。其中,原有的内存域DMA、NORMAL、HIGHMEM可以用于管理 PRAM 页帧(Z0NE_DMA 的值为 O、Z0NE_N0RMAL 的值为 1、Z0NE_HIGHMEM的值为2),而新增加的内存域DRAM来管理DRAM页帧(Z0NE_DRAM的值为3)。
[0056]借助此枚举结构,各个内存域之间存在优先次序,内存管理体系在进行内存分配时,如果在首选分配的内存域中没有空闲的内存页帧,Linux内核就会按照代价由低到高的优先次序(例如,Z0NE_DRAM — Z0NE_HIGHMEM — Z0NE_N0RMAL — Z0NE_DMA)进行页帧分配。例如,Linux内核要分配PRAM页帧,会首先尝试在内存域HIGHMEM中查找适合大小的空闲页中贞,如果失败,则尝试在内存域NORMAL中查找,如果还失败,则尝试在内存域DMA中查找,如果最后仍旧失败,则会导致系统崩溃。Linux内核通过对I3DRAM混合内存架构中不同物理内存页帧的区分,可以完成页帧的分配、回收和换入换出。
[0057]通常情况下,用于ISA (Industrial Standard Architecture,工业标准结构)设备进行直接内存访问操作的内存域DMA的物理地址范围为4KB-16MB ;用于直接映射到内核地址空间的内存域NORMAL的物理地址范围为16MB-896MB。假设混合内存总大小为2GB,PRAM和DRAM大小比例为4:1,其内存布局可以如图1所示。图中Z0NE_HIGHMEM由三部分组成:白色区域表示可用于分配及访问的内存;浅灰色区域为保留区域的第一个页帧表示4KB大小的标记为PG_RESERVE的保留页帧,包括512位寄存器的值和I位标志位,在操作系统运行时不可当作内存被分配及访问,但可以在开关机时用作二级存储设备来备份或恢复寄存器的值;深灰色区域表示与ZONE_DRAM大小相同的镜像区,每一个页帧都标记为PG_RESERVE,在操作系统运行时都不可当作内存被分配及访问,但可以在开关机时用作二级存储设备来备份或恢复ZONE_DRAM中的必要数据。
[0058]如图2所示,为本发明实施例提供的一种基于混合内存的Linux系统的关机方法的流程图,可以包括以下步骤:
[0059]步骤101:检测Linux系统的当前进程状态,如果当前进程状态为可冻结状态,则冻结当前进程状态,并保存寄存器的值。
[0060]对于Linux系统而言,主要包括以下七种进程状态:TASK_RUNNING (可运行状态)、TASK_INTERRUPTIBLE (可中断等待状态)、TASK_UNINTERRUPTIBLE (不可中断等待状态)、TASK_Z0MBIE (僵死状态)、TASK_DEAD (退出状态)、TASK_ST0PPED (暂停状态)、TASK_SWAPPING(交换状态)。这七种进程状态按照是否可被冻结可以分为:可冻结状态和不可冻结状态,其中,不可冻结状态包括无需冻结状态。如果当前进程状态处于僵死状态或者被标志为PF_N0FREEZE (不能冻结),那么可以认为当前进程状态不可冻结;如果当前进程处于退出状态、暂停状态或者被标志为PF_FR0ZEN (已冻结),那么可以认为当前进程状态无需冻结。
[0061]具体地,当前进程处于可运行状态,可中断等待状态,不可中断等待状态或交换状态时,可以认为当前进程处于可冻结状态。此时,可以调用suspend_freeze_processes O函数对当前进程状态进行冻结并保存,同时将进程标志改为PF_FREEZE (冻结),意味着其不会被调度以及获得相关资源,从而保证与之相关联的内存数据和寄存器的值不会被改变。
[0062]步骤102:将保存在DRAM中的数据迁移到PRAM中。
[0063]在通过冻结当前进程状态,终止相关活动后,可以将保存在DRAM中的数据迁移到PRAM中。其中,可以将保存在DRAM中的全部数据迁移到PRAM中,也可以根据需要仅将选定的部分数据迁移到PRAM中。选择将DRAM中部分数据迁移到PRAM中,由于迁移数据量减小,可以进一步提高关机速度。在上述步骤101中对寄存器中的值进行保存后,如果数值被保存到DRAM中,在数据迁移过程中,也可以一并迁移到PRAM中。
[0064]例如,可以通过汇编指令将DRAM中保存的以下数据迁移到PRAM中:代码段寄存器(存放当前进程代码的段基址CS和偏移量IP)、数据段寄存器(存放当前进程使用的数据所存放段的段基址)、堆栈段寄存器(存放当前进程堆栈段的段基址)、附加段寄存器(存放当前进程使用附加数据段的段基址,该段是串操作指令中目的串所在的段)、控制寄存器(CR0存放控制处理器操作模式和状态的系统控制标志;CR1保留不用;CR2存放导致缺页异常的线性地址;CR3存放页目录表物理内存的基地址)和通用寄存器(EAX、EBX、ECX、EDX、EBP、ESP、ES1、EDI)的值储存在Z0NE_HIGHMEM保留区域的第一个页帧(图1中的浅灰色区域)的前512位。
[0065]接下来可以遍历内存域DRAM,检测所有DRAM页帧,将未标记PG_RESERVE的非空页帧(包括内存数据、页表和系统信息)平行迁移到Z0NE_HIGHMEM剩余的保留区域(图1中的深灰色区域)中。
[0066]由于深灰色保留区域与Z0NE_DRAM相同大小,因此,迁移的目的地址和DRAM页帧地址有固定的差值400MB,S卩100K个页帧。在完成数据迁移后,可以将Z0NE_HIGHMEM保留区域的第一个页帧的第513位(即标志位)置位。操作系统运行过程中,内存控制器会检查内存的空闲状态,如果处于空闲状态则对保留区域第一个页帧(图1中的浅灰色区域)的前512位和DRAM镜像(图1中的深灰色区域)随时进行清空,完成清空后则将保留区域的第一个页帧的第513位(即标志位)复位。
[0067]步骤103:执行关机操作。
[0068]本发明实施例提供的基于混合内存的Linux系统的关机方法,由于将PRAM作为二级存储设备,可以快速地实现从DRAM到PRAM的数据迁移,避免在磁盘与内存之间的数据交互操作,可以大大提升关机速度。
[0069]本发明实施例另外提供一种基于混合内存的Linux系统的开机方法,如图3所示,开机方法可以包括以下步骤:
[0070]步骤201:检测用户选择的开机模式。
[0071]本发明实施例为用户提供的开机模式选择可以包括:快速开机模式和全新开机模式,用户可以根据需要选择任意一种开机模式。通过向用户提供人性化的模式选择,能够给用户更好的操作体验。根据用户所选择开机模式的不同,可以在PRAM和DRAM之间进行数据迁移或者在磁盘和混合内存之间进行数据迁移。
[0072]步骤202:如果在步骤201中检测到用户选择的开机模式为快速开机模式,则将PRAM中的数据迁移到DRAM中,并恢复寄存器的值。
[0073]具体地,先通过硬件方式将Z0NE_HIGHMEM保留区域与Z0NE_DRAM大小相同的镜像(图1中的深灰色区域)中非空的PRAM页帧平行复制到Z0NE_DRAM。由于虚拟空间与物理空间的映射关系维持不变,因此页表无需修改。内存复制完成后,由硬件从Z0NE_HIGHMEM保留区域的第一个页帧(图1中的浅灰色区域)恢复各个寄存器的值。采用快速开机模式完成开机过程后,操作系统将会恢复到上一次关机之前的工作状态。在开机过程中,可以免除BIOS (Basic Input Output System,基本输入输出系统)引导、从磁盘加载操作系统镜像、初始化操作系统等复杂工作,将PRAM作为二级存储设备,由于PRAM的访问速度要远远大于磁盘,能够快速实现数据从PRAM到DRAM中的迁移,访问延时短,可以大大提高开机速度。
[0074]步骤204:执行开机操作。
[0075]如图4所示,为本发明实施例提供的另外一种开机方法的流程图。
[0076]该开机方法与图3所示的开机方法的区别在于,两者所采用的开机模式不同,相应地在不同的存储媒介之间进行数据迁移。
[0077]如果在上述步骤201中检测到用户选择的开机模式为全新开机模式,则不再执行步骤202,转而执行步骤203:复制磁盘数据到混合内存中,并重新加载操作系统。
[0078]如果出现非正常关机等异常情况,导致第513位(标志位)没有置位,或用户选择了全新开机模式,则执行全新开机,复制磁盘数据到混合内存,完成BIOS (Basic InputOutput System,基本输入输出系统)引导、从磁盘加载操作系统镜像、初始化操作系统等工作。
[0079]进一步地,上述开机方法还包括:在将PRAM中的数据迁移到DRAM之前,检查标志位是否置位。如果标志位置位,则清空备份在PRAM中的数据,例如DRAM镜像,并将标志位复位。如果标志位没有置位,则自动切换到全新开机模式。
[0080]本发明实施例提供的基于混合内存的Linux系统的开机方法,能够充分发挥PRAM和DRAM各自的优点,在开机过程中将PRAM作为二级存储设备,不需要内存与磁盘之间的数据交互操作,由于PRAM的访问速度要远远快于磁盘,从而能够快速实现数据在DRAM和PRAM之间的迁移,访问延时短,可以大大提高开机速度。
[0081]相应地,本发明实施例还提供了一种基于混合内存的Linux系统的开关机系统,如图5所示,开关机系统301可以包括:关机模块401和开机模块402 ;其中,开机模块401,用于执行开机;如图6所示,关机模块401可以包括:进程检测单元501,用于检测Linux系统的当前进程状态;
[0082]判断单元502,用于判断当前进程状态是否为可冻结状态;
[0083]冻结单元503,用于在判断单元判断当前进程状态为可冻结状态后,冻结当前进程状态;
[0084]保存单元504,用于保存寄存器的值;
[0085]第一迁移单元506,用于将保存在DRAM中的数据迁移到PRAM中;
[0086]关机单元507,用于执行关机操作。
[0087]其中,上述可冻结状态可以包括:可运行状态,可中断等待状态,不可中断等待状态和交换状态。
[0088]如图7所示,关机模块401还可以进一步包括:选择单元505,用于从保存在DRAM中的数据中选定部分需要迁移到PRAM中的数据。
[0089]如图8所示,开机模块402可以包括:模式检测单元601、第二迁移单元604、恢复单元605、加载单元606和开机单元607 ;
[0090]上述模式检测单元601,用于检测用户选择的开机模式;
[0091]第二迁移单元604,用于在模式检测单元检测到用户选择的开机模式为快速开机模式后,将PRAM中的数据迁移到DRAM中;
[0092]恢复单元605,用于恢复寄存器中的值;
[0093]第二迁移单元604,还用于在模式检测单元检测到用户选择的开机模式为全新开机模式后,复制磁盘数据到混合内存中;
[0094]加载单元606,用于重新加载操作系统;
[0095]开机单元607,用于执行开机操作。
[0096]如图9所示,上述开机模块402还可以进一步包括:
[0097]检查单元602,用于在将PRAM中的数据迁移到DRAM中之前,检查标志位是否置位;
[0098]清空及复位单元603,用于在检查单元检查标志位置位后,清空PRAM中的数据,并将标志位复位。
[0099]本发明实施例提供的基于混合内存的Linux系统的开关机系统,能够充分发挥PRAM和DRAM各自的优点,在开关机过程中将PRAM作为二级存储设备,不需要内存与磁盘之间的数据交互操作,由于PRAM的访问速度要远远快于磁盘,从而能够快速实现数据在DRAM和PRAM之间的迁移,访问延时短,可以大大提高开关机速度。
[0100]本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0101]以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种基于混合内存的Linux系统的关机方法,其特征在于,包括: 检测Linux系统的当前进程状态,如果所述当前进程状态为可冻结状态,则冻结所述当前进程状态,并保存寄存器中的值; 将保存在DRAM中的数据迁移到PRAM中; 执行关机操作。
2.根据权利要求1所述的方法,其特征在于,所述可冻结状态包括:可运行状态,可中断等待状态,不可中断等待状态和交换状态。
3.根据权利要求1或2任一项所述的方法,其特征在于,所述将保存在所述DRAM中的数据迁移到PRAM中,包括:将保存在所述DRAM中的部分选定数据迁移到所述PRAM中。
4.一种基于混合内存的Linux系统的开机方法,其特征在于,包括: 检测用户选择的开机模式; 如果所述开机模式为快速开机模式,则将PRAM中的数据迁移到DRAM中,并恢复寄存器的值; 执行开机操作。
5.根据权利要求4所述的方法,其特征在于:如果所述开机模式为全新开机模式,则复制磁盘数据到所述混合内存中,并重新加载操作系统。
6.根据权利要求4或5任一项所述的方法,其特征在于,所述开机方法还包括:在所述将所述PRAM中的数据迁移到所述DRAM之前,检查标志位是否被置位,如果是,则清空所述PRAM中的数据,并将所述标志位复位。
7.一种基于混合内存的Linux系统的开关机系统,其特征在于,包括:开机模块和关机模块;所述开机模块,用于执行开机; 所述关机模块包括: 进程检测单元,用于检测Linux系统的当前进程状态; 判断单元,用于判断所述当前进程状态是否为可冻结状态; 冻结单元,用于在所述判断单元判断所述当前进程状态为可冻结状态后,冻结所述当前进程状态; 保存单元,用于保存寄存器中的值; 第一迁移单元,用于将保存在DRAM中的数据迁移到PRAM中; 关机单元,用于执行关机操作。
8.根据权利要求7所述的系统,其特征在于,所述关机模块还包括:选择单元,用于从保存在所述DRAM中的数据中选定部分需要迁移到PRAM中的数据。
9.根据权利要求7或8任一项所述的系统,其特征在于,所述开机模块包括:模式检测单元、第二迁移单元、恢复单元、加载单元和开机单元; 所述模式检测单元,用于检测用户选择的开机模式; 所述第二迁移单元,用于在所述模式检测单元检测到用户选择的开机模式为快速开机模式后,将所述PRAM中的数据迁移到所述DRAM中; 所述恢复单元,用于恢复寄存器的值; 所述第二迁移单元,还用于在所述模式检测单元检测到用户选择的开机模式为全新开机模式后,复制磁盘数据到所述混合内存中;所述加载单元,用于重新加载操作系统; 所述开机单元,用于执行开机操作。
10.根据权利要求9所述的系统,其特征在于,所述开机模块还包括: 检查单元,用于 所述将所述PRAM中的数据迁移到所述DRAM中之前,检查标志位是否置位; 清空及复位单元,用于在所述检查单元检查到所述标志位被置位后,清空所述PRAM中的数据,并将所述标志位复位。
【文档编号】G06F9/445GK103914325SQ201410132590
【公开日】2014年7月9日 申请日期:2014年4月2日 优先权日:2014年4月2日
【发明者】陈岚, 李功, 郝晓冉 申请人:中国科学院微电子研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1