基于混合內存的Linux系統(tǒng)的關機、開機方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種基于混合內存的Linux系統(tǒng)的關機、開機方法及系統(tǒng),屬于移動終端【技術領域】。關機方法包括:檢測Linux系統(tǒng)的當前進程狀態(tài),如果所述當前進程狀態(tài)為可凍結狀態(tài),則凍結所述當前進程狀態(tài),并保存寄存器中的值;將保存在DRAM中的數(shù)據(jù)遷移到PRAM中;執(zhí)行關機操作。開機方法,包括:檢測用戶選擇的開機模式;如果所述開機模式為快速開機模式,則將PRAM中的數(shù)據(jù)遷移到DRAM中,并恢復寄存器的值;執(zhí)行開機操作?;诨旌蟽却娴腖inux系統(tǒng)的關機、開機方法及系統(tǒng),在開關機過程中將PRAM作為二級存儲設備,能夠快速實現(xiàn)數(shù)據(jù)在DRAM和PRAM之間的遷移,訪問延時短,開關機速度快。
【專利說明】基于混合內存的Linux系統(tǒng)的關機、開機方法及系統(tǒng)
【技術領域】
[0001]本發(fā)明涉及移動終端【技術領域】,特別涉及一種基于混合內存的Linux系統(tǒng)的關機、開機方法及系統(tǒng)。
【背景技術】
[0002]DRAM (Dynamic Random Access Memory,動態(tài)隨機存取存儲器)是最為常見的系統(tǒng)內存,長期以來擔當著移動終端設備主內存的角色。由于DRAM具有易失性,需要不斷充電刷新來保持其中所存儲的數(shù)據(jù),一旦關機斷電,存儲在DRAM中的信息,以及操作系統(tǒng)本身的鏡像都會丟失。隨著集成電路關鍵尺寸的減小,DRAM存儲器在尺寸收縮、功耗控制和存儲密度方面的發(fā)展遇到了極大的困難,DRAM內存技術已接近瓶頸。
[0003]PRAM (Phase-Change Random Access Memory,相變隨機存取存儲器),具有非易揮發(fā)性的特點,即電流關掉后所存儲的數(shù)據(jù)依舊不會丟失。由于PRAM有著與DRAM相似的低功耗、低延時性能,成為最有可能取代DRAM地位的存儲器件。
[0004]為了充分發(fā)揮PRAM和DRAM各自的優(yōu)點,并盡可能避開各自的缺點,可以利用大容量的PRAM和小容量的DRAM構成I3DRAM(PRAM&DRAM Hybrid Memory)混合內存,將具有不同讀寫特性的數(shù)據(jù)放于相應的存儲空間內,這樣既可以降低內存系統(tǒng)的靜態(tài)功耗、增大內存容量,又可以充分發(fā)揮PRAM和DRAM在讀、寫方面的性能優(yōu)勢,降低內存系統(tǒng)的動態(tài)功耗。
[0005]現(xiàn)有技術中,移動終端大多搭載安卓操作系統(tǒng),其為以Linux內核為底層基礎的半開源操作系統(tǒng),其架構還包含了由C語言編寫的中間件、庫、API和基于Java庫應用程序架構。然而,傳統(tǒng)的Linux內核的內存管理體系是針對DRAM主內存架構開發(fā)的,在開關機時需要在內存和磁盤間進行數(shù)據(jù)轉移,導致開關機速度慢,延時較長。
【發(fā)明內容】
[0006]本發(fā)明實施例的目的在于提供一種基于混合內存的Linux系統(tǒng)的關機、開機方法及系統(tǒng),訪問延時短,開關機速度快。
[0007]本發(fā)明實施例提供的技術方案如下:
[0008]—方面,提供了一種基于混合內存的Linux系統(tǒng)的關機方法,包括:
[0009]檢測Linux系統(tǒng)的當前進程狀態(tài),如果所述當前進程狀態(tài)為可凍結狀態(tài),則凍結所述當前進程狀態(tài),并保存寄存器中的值;
[0010]將保存在DRAM中的數(shù)據(jù)遷移到PRAM中;
[0011]執(zhí)行關機操作。
[0012]優(yōu)選地,所述可凍結狀態(tài)包括:可運行狀態(tài),可中斷等待狀態(tài),不可中斷等待狀態(tài)和交換狀態(tài)。
[0013]優(yōu)選地,所述將保存在所述DRAM中的數(shù)據(jù)遷移到PRAM中,包括:將保存在所述DRAM中的部分選定數(shù)據(jù)遷移到所述PRAM中。
[0014]另一方面,提供了一種基于混合內存的Linux系統(tǒng)的開機方法,包括:[0015]檢測用戶選擇的開機模式;
[0016]如果所述開機模式為快速開機模式,則將PRAM中的數(shù)據(jù)遷移到DRAM中,并恢復寄存器的值;
[0017]執(zhí)行開機操作。
[0018]優(yōu)選地,如果所述開機模式為全新開機模式,則復制磁盤數(shù)據(jù)到所述混合內存中,并重新加載操作系統(tǒng)。
[0019]優(yōu)選地,所述開機方法還包括:在所述將所述PRAM中的數(shù)據(jù)遷移到所述DRAM之前,檢查標志位是否被置位,如果是,則清空所述PRAM中的數(shù)據(jù),并將所述標志位復位。
[0020]第三方面,提供了一種基于混合內存的Linux系統(tǒng)的開關機系統(tǒng),包括:
[0021 ] 開機模塊和關機模塊;
[0022]所述開機模塊,用于執(zhí)行開機;
[0023]所述關機模塊包括:
[0024]進程檢測單元,用于檢測Linux系統(tǒng)的當前進程狀態(tài);
[0025]判斷單元,用于判斷所述當前進程狀態(tài)是否為可凍結狀態(tài);
[0026]凍結單元,用于在所述判斷單元判斷所述當前進程狀態(tài)為可凍結狀態(tài)后,凍結所述當前進程狀態(tài);
[0027]保存單元,用于保存寄存器中的值;
[0028]第一遷移單元,用于將保存在DRAM中的數(shù)據(jù)遷移到PRAM中;
[0029]關機單元,用于執(zhí)行關機操作。
[0030]優(yōu)選地,所述關機模塊還包括:選擇單元,用于從保存在所述DRAM中的數(shù)據(jù)中選定部分需要遷移到PRAM中的數(shù)據(jù)。
[0031]優(yōu)選地,所述開機模塊包括:模式檢測單元、第二遷移單元、恢復單元、加載單元和開機單元;
[0032]所述模式檢測單元,用于檢測用戶選擇的開機模式;
[0033]所述第二遷移單元,用于在所述模式檢測單元檢測到用戶選擇的開機模式為快速開機模式后,將所述PRAM中的數(shù)據(jù)遷移到所述DRAM中;
[0034]所述恢復單元,用于恢復寄存器的值;
[0035]所述第二遷移單元,還用于在所述模式檢測單元檢測到用戶選擇的開機模式為全新開機模式后,復制磁盤數(shù)據(jù)到所述混合內存中;
[0036]所述加載單元,用于重新加載操作系統(tǒng);
[0037]所述開機單元,用于執(zhí)行開機操作。
[0038]優(yōu)選地,所述開機模塊還包括:
[0039]檢查單元,用于在所述將所述PRAM中的數(shù)據(jù)遷移到所述DRAM中之前,檢查標志位是否置位;
[0040]清空及復位單元,用于在所述檢查單元檢查到所述標志位被置位后,清空所述PRAM中的數(shù)據(jù),并將所述標志位復位。
[0041]本發(fā)明實施例提供的基于混合內存的Linux系統(tǒng)的關機、開機方法及系統(tǒng),能夠充分發(fā)揮PRAM和DRAM各自的優(yōu)點,在開關機過程中將PRAM作為二級存儲設備,不需要內存與磁盤之間的數(shù)據(jù)交互操作,由于PRAM的訪問速度要遠遠快于磁盤,從而能夠快速實現(xiàn) 數(shù)據(jù)在DRAM和PRAM之間的遷移,訪問延時短,可以大大提高開關機速度。
【專利附圖】
【附圖說明】
[0042]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明中記載的一些實施例,對于本領域普通技術人員來講,還可以根據(jù)這些附圖獲得其他的附圖。
[0043]圖1為本發(fā)明實施例提供的一種I3DRAM混合內存的布局示意圖;
[0044]圖2為本發(fā)明實施例提供的一種關機方法的流程圖;
[0045]圖3為本發(fā)明實施例提供的一種開機方法的流程圖;
[0046]圖4為本發(fā)明實施例提供的另外一種開機方法的流程圖;
[0047]圖5為本發(fā)明實施例提供的一種開關機系統(tǒng)的結構示意圖;
[0048]圖6為本發(fā)明實施例提供的一種關機模塊的結構示意圖;
[0049]圖7為本發(fā)明實施例提供的另外一種關機模塊的結構示意圖;
[0050]圖8為本發(fā)明實施例提供的一種開機模塊的結構示意圖;
[0051]圖9為本發(fā)明實施例提供的另外一種開機模塊的結構示意圖。
【具體實施方式】
[0052]為了使本【技術領域】的人員更好地理解本發(fā)明實施例的方案,下面結合附圖和實施方式對本發(fā)明實施例作進一步的詳細說明。
[0053]以下先對本發(fā)明實施例中所涉及的TORAM混合內存,以及如何進行內存分配加以簡要介紹。
[0054]如圖1所示,為本發(fā)明實施例提供的一種I3DRAM混合內存的布局示意圖。
[0055]現(xiàn)有技術中的DRAM內存通常包括三個內存域:DMA、NORMAL和HIGHMEM,而本發(fā)明實施例所采用的I3DRAM混合內存,可以在原有內存域基礎上新增一個內存域,形成四個內存域的結構,具體可以通過枚舉結構來創(chuàng)建這四個內存域。其中,原有的內存域DMA、NORMAL、HIGHMEM可以用于管理 PRAM 頁幀(Z0NE_DMA 的值為 O、Z0NE_N0RMAL 的值為 1、Z0NE_HIGHMEM的值為2),而新增加的內存域DRAM來管理DRAM頁幀(Z0NE_DRAM的值為3)。
[0056]借助此枚舉結構,各個內存域之間存在優(yōu)先次序,內存管理體系在進行內存分配時,如果在首選分配的內存域中沒有空閑的內存頁幀,Linux內核就會按照代價由低到高的優(yōu)先次序(例如,Z0NE_DRAM — Z0NE_HIGHMEM — Z0NE_N0RMAL — Z0NE_DMA)進行頁幀分配。例如,Linux內核要分配PRAM頁幀,會首先嘗試在內存域HIGHMEM中查找適合大小的空閑頁中貞,如果失敗,則嘗試在內存域NORMAL中查找,如果還失敗,則嘗試在內存域DMA中查找,如果最后仍舊失敗,則會導致系統(tǒng)崩潰。Linux內核通過對I3DRAM混合內存架構中不同物理內存頁幀的區(qū)分,可以完成頁幀的分配、回收和換入換出。
[0057]通常情況下,用于ISA (Industrial Standard Architecture,工業(yè)標準結構)設備進行直接內存訪問操作的內存域DMA的物理地址范圍為4KB-16MB ;用于直接映射到內核地址空間的內存域NORMAL的物理地址范圍為16MB-896MB。假設混合內存總大小為2GB,PRAM和DRAM大小比例為4:1,其內存布局可以如圖1所示。圖中Z0NE_HIGHMEM由三部分組成:白色區(qū)域表示可用于分配及訪問的內存;淺灰色區(qū)域為保留區(qū)域的第一個頁幀表示4KB大小的標記為PG_RESERVE的保留頁幀,包括512位寄存器的值和I位標志位,在操作系統(tǒng)運行時不可當作內存被分配及訪問,但可以在開關機時用作二級存儲設備來備份或恢復寄存器的值;深灰色區(qū)域表示與ZONE_DRAM大小相同的鏡像區(qū),每一個頁幀都標記為PG_RESERVE,在操作系統(tǒng)運行時都不可當作內存被分配及訪問,但可以在開關機時用作二級存儲設備來備份或恢復ZONE_DRAM中的必要數(shù)據(jù)。
[0058]如圖2所示,為本發(fā)明實施例提供的一種基于混合內存的Linux系統(tǒng)的關機方法的流程圖,可以包括以下步驟:
[0059]步驟101:檢測Linux系統(tǒng)的當前進程狀態(tài),如果當前進程狀態(tài)為可凍結狀態(tài),則凍結當前進程狀態(tài),并保存寄存器的值。
[0060]對于Linux系統(tǒng)而言,主要包括以下七種進程狀態(tài):TASK_RUNNING (可運行狀態(tài))、TASK_INTERRUPTIBLE (可中斷等待狀態(tài))、TASK_UNINTERRUPTIBLE (不可中斷等待狀態(tài))、TASK_Z0MBIE (僵死狀態(tài))、TASK_DEAD (退出狀態(tài))、TASK_ST0PPED (暫停狀態(tài))、TASK_SWAPPING(交換狀態(tài))。這七種進程狀態(tài)按照是否可被凍結可以分為:可凍結狀態(tài)和不可凍結狀態(tài),其中,不可凍結狀態(tài)包括無需凍結狀態(tài)。如果當前進程狀態(tài)處于僵死狀態(tài)或者被標志為PF_N0FREEZE (不能凍結),那么可以認為當前進程狀態(tài)不可凍結;如果當前進程處于退出狀態(tài)、暫停狀態(tài)或者被標志為PF_FR0ZEN (已凍結),那么可以認為當前進程狀態(tài)無需凍結。
[0061]具體地,當前進程處于可運行狀態(tài),可中斷等待狀態(tài),不可中斷等待狀態(tài)或交換狀態(tài)時,可以認為當前進程處于可凍結狀態(tài)。此時,可以調用suspend_freeze_processes O函數(shù)對當前進程狀態(tài)進行凍結并保存,同時將進程標志改為PF_FREEZE (凍結),意味著其不會被調度以及獲得相關資源,從而保證與之相關聯(lián)的內存數(shù)據(jù)和寄存器的值不會被改變。
[0062]步驟102:將保存在DRAM中的數(shù)據(jù)遷移到PRAM中。
[0063]在通過凍結當前進程狀態(tài),終止相關活動后,可以將保存在DRAM中的數(shù)據(jù)遷移到PRAM中。其中,可以將保存在DRAM中的全部數(shù)據(jù)遷移到PRAM中,也可以根據(jù)需要僅將選定的部分數(shù)據(jù)遷移到PRAM中。選擇將DRAM中部分數(shù)據(jù)遷移到PRAM中,由于遷移數(shù)據(jù)量減小,可以進一步提高關機速度。在上述步驟101中對寄存器中的值進行保存后,如果數(shù)值被保存到DRAM中,在數(shù)據(jù)遷移過程中,也可以一并遷移到PRAM中。
[0064]例如,可以通過匯編指令將DRAM中保存的以下數(shù)據(jù)遷移到PRAM中:代碼段寄存器(存放當前進程代碼的段基址CS和偏移量IP)、數(shù)據(jù)段寄存器(存放當前進程使用的數(shù)據(jù)所存放段的段基址)、堆棧段寄存器(存放當前進程堆棧段的段基址)、附加段寄存器(存放當前進程使用附加數(shù)據(jù)段的段基址,該段是串操作指令中目的串所在的段)、控制寄存器(CR0存放控制處理器操作模式和狀態(tài)的系統(tǒng)控制標志;CR1保留不用;CR2存放導致缺頁異常的線性地址;CR3存放頁目錄表物理內存的基地址)和通用寄存器(EAX、EBX、ECX、EDX、EBP、ESP、ES1、EDI)的值儲存在Z0NE_HIGHMEM保留區(qū)域的第一個頁幀(圖1中的淺灰色區(qū)域)的前512位。
[0065]接下來可以遍歷內存域DRAM,檢測所有DRAM頁幀,將未標記PG_RESERVE的非空頁幀(包括內存數(shù)據(jù)、頁表和系統(tǒng)信息)平行遷移到Z0NE_HIGHMEM剩余的保留區(qū)域(圖1中的深灰色區(qū)域)中。
[0066]由于深灰色保留區(qū)域與Z0NE_DRAM相同大小,因此,遷移的目的地址和DRAM頁幀地址有固定的差值400MB,S卩100K個頁幀。在完成數(shù)據(jù)遷移后,可以將Z0NE_HIGHMEM保留區(qū)域的第一個頁幀的第513位(即標志位)置位。操作系統(tǒng)運行過程中,內存控制器會檢查內存的空閑狀態(tài),如果處于空閑狀態(tài)則對保留區(qū)域第一個頁幀(圖1中的淺灰色區(qū)域)的前512位和DRAM鏡像(圖1中的深灰色區(qū)域)隨時進行清空,完成清空后則將保留區(qū)域的第一個頁幀的第513位(即標志位)復位。
[0067]步驟103:執(zhí)行關機操作。
[0068]本發(fā)明實施例提供的基于混合內存的Linux系統(tǒng)的關機方法,由于將PRAM作為二級存儲設備,可以快速地實現(xiàn)從DRAM到PRAM的數(shù)據(jù)遷移,避免在磁盤與內存之間的數(shù)據(jù)交互操作,可以大大提升關機速度。
[0069]本發(fā)明實施例另外提供一種基于混合內存的Linux系統(tǒng)的開機方法,如圖3所示,開機方法可以包括以下步驟:
[0070]步驟201:檢測用戶選擇的開機模式。
[0071]本發(fā)明實施例為用戶提供的開機模式選擇可以包括:快速開機模式和全新開機模式,用戶可以根據(jù)需要選擇任意一種開機模式。通過向用戶提供人性化的模式選擇,能夠給用戶更好的操作體驗。根據(jù)用戶所選擇開機模式的不同,可以在PRAM和DRAM之間進行數(shù)據(jù)遷移或者在磁盤和混合內存之間進行數(shù)據(jù)遷移。
[0072]步驟202:如果在步驟201中檢測到用戶選擇的開機模式為快速開機模式,則將PRAM中的數(shù)據(jù)遷移到DRAM中,并恢復寄存器的值。
[0073]具體地,先通過硬件方式將Z0NE_HIGHMEM保留區(qū)域與Z0NE_DRAM大小相同的鏡像(圖1中的深灰色區(qū)域)中非空的PRAM頁幀平行復制到Z0NE_DRAM。由于虛擬空間與物理空間的映射關系維持不變,因此頁表無需修改。內存復制完成后,由硬件從Z0NE_HIGHMEM保留區(qū)域的第一個頁幀(圖1中的淺灰色區(qū)域)恢復各個寄存器的值。采用快速開機模式完成開機過程后,操作系統(tǒng)將會恢復到上一次關機之前的工作狀態(tài)。在開機過程中,可以免除BIOS (Basic Input Output System,基本輸入輸出系統(tǒng))引導、從磁盤加載操作系統(tǒng)鏡像、初始化操作系統(tǒng)等復雜工作,將PRAM作為二級存儲設備,由于PRAM的訪問速度要遠遠大于磁盤,能夠快速實現(xiàn)數(shù)據(jù)從PRAM到DRAM中的遷移,訪問延時短,可以大大提高開機速度。
[0074]步驟204:執(zhí)行開機操作。
[0075]如圖4所示,為本發(fā)明實施例提供的另外一種開機方法的流程圖。
[0076]該開機方法與圖3所示的開機方法的區(qū)別在于,兩者所采用的開機模式不同,相應地在不同的存儲媒介之間進行數(shù)據(jù)遷移。
[0077]如果在上述步驟201中檢測到用戶選擇的開機模式為全新開機模式,則不再執(zhí)行步驟202,轉而執(zhí)行步驟203:復制磁盤數(shù)據(jù)到混合內存中,并重新加載操作系統(tǒng)。
[0078]如果出現(xiàn)非正常關機等異常情況,導致第513位(標志位)沒有置位,或用戶選擇了全新開機模式,則執(zhí)行全新開機,復制磁盤數(shù)據(jù)到混合內存,完成BIOS (Basic InputOutput System,基本輸入輸出系統(tǒng))引導、從磁盤加載操作系統(tǒng)鏡像、初始化操作系統(tǒng)等工作。
[0079]進一步地,上述開機方法還包括:在將PRAM中的數(shù)據(jù)遷移到DRAM之前,檢查標志位是否置位。如果標志位置位,則清空備份在PRAM中的數(shù)據(jù),例如DRAM鏡像,并將標志位復位。如果標志位沒有置位,則自動切換到全新開機模式。
[0080]本發(fā)明實施例提供的基于混合內存的Linux系統(tǒng)的開機方法,能夠充分發(fā)揮PRAM和DRAM各自的優(yōu)點,在開機過程中將PRAM作為二級存儲設備,不需要內存與磁盤之間的數(shù)據(jù)交互操作,由于PRAM的訪問速度要遠遠快于磁盤,從而能夠快速實現(xiàn)數(shù)據(jù)在DRAM和PRAM之間的遷移,訪問延時短,可以大大提高開機速度。
[0081]相應地,本發(fā)明實施例還提供了一種基于混合內存的Linux系統(tǒng)的開關機系統(tǒng),如圖5所示,開關機系統(tǒng)301可以包括:關機模塊401和開機模塊402 ;其中,開機模塊401,用于執(zhí)行開機;如圖6所示,關機模塊401可以包括:進程檢測單元501,用于檢測Linux系統(tǒng)的當前進程狀態(tài);
[0082]判斷單元502,用于判斷當前進程狀態(tài)是否為可凍結狀態(tài);
[0083]凍結單元503,用于在判斷單元判斷當前進程狀態(tài)為可凍結狀態(tài)后,凍結當前進程狀態(tài);
[0084]保存單元504,用于保存寄存器的值;
[0085]第一遷移單元506,用于將保存在DRAM中的數(shù)據(jù)遷移到PRAM中;
[0086]關機單元507,用于執(zhí)行關機操作。
[0087]其中,上述可凍結狀態(tài)可以包括:可運行狀態(tài),可中斷等待狀態(tài),不可中斷等待狀態(tài)和交換狀態(tài)。
[0088]如圖7所示,關機模塊401還可以進一步包括:選擇單元505,用于從保存在DRAM中的數(shù)據(jù)中選定部分需要遷移到PRAM中的數(shù)據(jù)。
[0089]如圖8所示,開機模塊402可以包括:模式檢測單元601、第二遷移單元604、恢復單元605、加載單元606和開機單元607 ;
[0090]上述模式檢測單元601,用于檢測用戶選擇的開機模式;
[0091]第二遷移單元604,用于在模式檢測單元檢測到用戶選擇的開機模式為快速開機模式后,將PRAM中的數(shù)據(jù)遷移到DRAM中;
[0092]恢復單元605,用于恢復寄存器中的值;
[0093]第二遷移單元604,還用于在模式檢測單元檢測到用戶選擇的開機模式為全新開機模式后,復制磁盤數(shù)據(jù)到混合內存中;
[0094]加載單元606,用于重新加載操作系統(tǒng);
[0095]開機單元607,用于執(zhí)行開機操作。
[0096]如圖9所示,上述開機模塊402還可以進一步包括:
[0097]檢查單元602,用于在將PRAM中的數(shù)據(jù)遷移到DRAM中之前,檢查標志位是否置位;
[0098]清空及復位單元603,用于在檢查單元檢查標志位置位后,清空PRAM中的數(shù)據(jù),并將標志位復位。
[0099]本發(fā)明實施例提供的基于混合內存的Linux系統(tǒng)的開關機系統(tǒng),能夠充分發(fā)揮PRAM和DRAM各自的優(yōu)點,在開關機過程中將PRAM作為二級存儲設備,不需要內存與磁盤之間的數(shù)據(jù)交互操作,由于PRAM的訪問速度要遠遠快于磁盤,從而能夠快速實現(xiàn)數(shù)據(jù)在DRAM和PRAM之間的遷移,訪問延時短,可以大大提高開關機速度。
[0100]本說明書中的各個實施例均采用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于系統(tǒng)實施例而言,由于其基本相似于方法實施例,所以描述得比較簡單,相關之處參見方法實施例的部分說明即可。以上所描述的系統(tǒng)實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。本領域普通技術人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
[0101]以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。
【權利要求】
1.一種基于混合內存的Linux系統(tǒng)的關機方法,其特征在于,包括: 檢測Linux系統(tǒng)的當前進程狀態(tài),如果所述當前進程狀態(tài)為可凍結狀態(tài),則凍結所述當前進程狀態(tài),并保存寄存器中的值; 將保存在DRAM中的數(shù)據(jù)遷移到PRAM中; 執(zhí)行關機操作。
2.根據(jù)權利要求1所述的方法,其特征在于,所述可凍結狀態(tài)包括:可運行狀態(tài),可中斷等待狀態(tài),不可中斷等待狀態(tài)和交換狀態(tài)。
3.根據(jù)權利要求1或2任一項所述的方法,其特征在于,所述將保存在所述DRAM中的數(shù)據(jù)遷移到PRAM中,包括:將保存在所述DRAM中的部分選定數(shù)據(jù)遷移到所述PRAM中。
4.一種基于混合內存的Linux系統(tǒng)的開機方法,其特征在于,包括: 檢測用戶選擇的開機模式; 如果所述開機模式為快速開機模式,則將PRAM中的數(shù)據(jù)遷移到DRAM中,并恢復寄存器的值; 執(zhí)行開機操作。
5.根據(jù)權利要求4所述的方法,其特征在于:如果所述開機模式為全新開機模式,則復制磁盤數(shù)據(jù)到所述混合內存中,并重新加載操作系統(tǒng)。
6.根據(jù)權利要求4或5任一項所述的方法,其特征在于,所述開機方法還包括:在所述將所述PRAM中的數(shù)據(jù)遷移到所述DRAM之前,檢查標志位是否被置位,如果是,則清空所述PRAM中的數(shù)據(jù),并將所述標志位復位。
7.一種基于混合內存的Linux系統(tǒng)的開關機系統(tǒng),其特征在于,包括:開機模塊和關機模塊;所述開機模塊,用于執(zhí)行開機; 所述關機模塊包括: 進程檢測單元,用于檢測Linux系統(tǒng)的當前進程狀態(tài); 判斷單元,用于判斷所述當前進程狀態(tài)是否為可凍結狀態(tài); 凍結單元,用于在所述判斷單元判斷所述當前進程狀態(tài)為可凍結狀態(tài)后,凍結所述當前進程狀態(tài); 保存單元,用于保存寄存器中的值; 第一遷移單元,用于將保存在DRAM中的數(shù)據(jù)遷移到PRAM中; 關機單元,用于執(zhí)行關機操作。
8.根據(jù)權利要求7所述的系統(tǒng),其特征在于,所述關機模塊還包括:選擇單元,用于從保存在所述DRAM中的數(shù)據(jù)中選定部分需要遷移到PRAM中的數(shù)據(jù)。
9.根據(jù)權利要求7或8任一項所述的系統(tǒng),其特征在于,所述開機模塊包括:模式檢測單元、第二遷移單元、恢復單元、加載單元和開機單元; 所述模式檢測單元,用于檢測用戶選擇的開機模式; 所述第二遷移單元,用于在所述模式檢測單元檢測到用戶選擇的開機模式為快速開機模式后,將所述PRAM中的數(shù)據(jù)遷移到所述DRAM中; 所述恢復單元,用于恢復寄存器的值; 所述第二遷移單元,還用于在所述模式檢測單元檢測到用戶選擇的開機模式為全新開機模式后,復制磁盤數(shù)據(jù)到所述混合內存中;所述加載單元,用于重新加載操作系統(tǒng); 所述開機單元,用于執(zhí)行開機操作。
10.根據(jù)權利要求9所述的系統(tǒng),其特征在于,所述開機模塊還包括: 檢查單元,用于 所述將所述PRAM中的數(shù)據(jù)遷移到所述DRAM中之前,檢查標志位是否置位; 清空及復位單元,用于在所述檢查單元檢查到所述標志位被置位后,清空所述PRAM中的數(shù)據(jù),并將所述標志位復位。
【文檔編號】G06F9/445GK103914325SQ201410132590
【公開日】2014年7月9日 申請日期:2014年4月2日 優(yōu)先權日:2014年4月2日
【發(fā)明者】陳嵐, 李功, 郝曉冉 申請人:中國科學院微電子研究所