混合內(nèi)存設(shè)備的掛起或關(guān)機(jī)方法
【專利摘要】本申請公開了一種混合內(nèi)存設(shè)備的掛起或關(guān)機(jī)方法,通過逐步關(guān)閉應(yīng)用程序的進(jìn)程,來逐步縮小內(nèi)存中的強(qiáng)制型數(shù)據(jù),最終將易失性內(nèi)存中的強(qiáng)制型數(shù)據(jù)全部轉(zhuǎn)移到非易失性內(nèi)存中。除非關(guān)閉進(jìn)程出錯(cuò),才會(huì)回歸到現(xiàn)有的混合內(nèi)存設(shè)備的掛起或關(guān)機(jī)方法。本申請可以在多種情況下避免數(shù)據(jù)壓縮、數(shù)據(jù)從內(nèi)存轉(zhuǎn)移到外存儲(chǔ)器等操作,因而大大加快了掛起或關(guān)機(jī)的處理時(shí)間,也就相應(yīng)地加快了喚醒或開機(jī)的處理時(shí)間,同時(shí)避免了喚醒或開機(jī)初期的系統(tǒng)性能下降問題。
【專利說明】混合內(nèi)存設(shè)備的掛起或關(guān)機(jī)方法
【技術(shù)領(lǐng)域】
[0001] 本申請涉及一種智能電子設(shè)備的掛起和喚醒機(jī)制,特別是涉及一種混合內(nèi)存設(shè)備 的掛起和喚醒機(jī)制。
【背景技術(shù)】
[0002] 諸如計(jì)算機(jī)、平板電腦、手機(jī)等智能電子設(shè)備中,都具有CPU、內(nèi)存、外存儲(chǔ)器等組 成部分。外存儲(chǔ)器通常都是非易失性存儲(chǔ)器,即掉電后數(shù)據(jù)保留,例如磁盤、閃存(flash存 儲(chǔ)器)等。如果內(nèi)存全部是易失性存儲(chǔ)器,即掉電后數(shù)據(jù)丟失,則稱為易失性內(nèi)存的智能電 子設(shè)備(簡稱為易失性內(nèi)存設(shè)備)。如果內(nèi)存分為易失性和非易失性兩部分,則稱為混合內(nèi) 存的智能電子設(shè)備(簡稱為混合內(nèi)存設(shè)備)。
[0003] 混合內(nèi)存設(shè)備中,通常采用DRAM (動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器)作為易失性內(nèi)存、NVRAM (非易失性隨機(jī)存取存儲(chǔ)器)作為非易失性內(nèi)存。NVRAM集中了 RAM的快速隨機(jī)存取和閃存 的掉電后不丟失數(shù)據(jù)的優(yōu)點(diǎn),但是成本較高。在混合內(nèi)存設(shè)備中非易失性內(nèi)存與易失性內(nèi) 存的容量之比通常在1 :10?1 :40之間。
[0004] 智能電子設(shè)備所運(yùn)行的軟件分為兩部分:操作系統(tǒng)、運(yùn)行在操作系統(tǒng)之上的應(yīng)用 程序。在任意時(shí)刻,所有運(yùn)行中的軟件(也稱為所有軟件的運(yùn)行狀態(tài))在內(nèi)存中的數(shù)據(jù)被分 為強(qiáng)制型(mandatory)和可丟棄型(droppable)兩種;如者必須保留在內(nèi)存中;后者可以丟 棄或轉(zhuǎn)移到外存儲(chǔ)器中。
[0005] 請參閱圖1,這是現(xiàn)有的混合內(nèi)存設(shè)備實(shí)現(xiàn)掛起或關(guān)機(jī)的方法,包括如下步驟:
[0006] 第1步,當(dāng)操作系統(tǒng)準(zhǔn)備掛起或關(guān)機(jī)時(shí),判斷非易失性內(nèi)存中的空閑空間是否可 容納易失性內(nèi)存中的強(qiáng)制型數(shù)據(jù)。如果是,則操作系統(tǒng)將易失性內(nèi)存中的強(qiáng)制型數(shù)據(jù)轉(zhuǎn)移 到非易失性內(nèi)存的空閑空間,完成掛起或關(guān)機(jī)。如果否,則進(jìn)入第2步。
[0007] 第2步,操作系統(tǒng)將非易失性內(nèi)存中的可丟棄型數(shù)據(jù)或者丟棄、或者轉(zhuǎn)移到外存 儲(chǔ)器中,然后進(jìn)入第3步。
[0008] 第3步,操作系統(tǒng)再次判斷非易失性內(nèi)存中的空閑空間是否可容納易失性內(nèi)存中 的強(qiáng)制型數(shù)據(jù)。如果是,則操作系統(tǒng)將易失性內(nèi)存中的強(qiáng)制型數(shù)據(jù)轉(zhuǎn)移到非易失性內(nèi)存的 空閑空間,完成掛起或關(guān)機(jī)。如果否,則進(jìn)入第4步。
[0009] 第4步,操作系統(tǒng)將易失性內(nèi)存中的強(qiáng)制型數(shù)據(jù)不經(jīng)壓縮(優(yōu)選)或壓縮后(次選), 全部轉(zhuǎn)移到外存儲(chǔ)器中,完成掛起或關(guān)機(jī)。
[0010] 請參閱圖2,這是圖1所示的混合內(nèi)存設(shè)備實(shí)現(xiàn)掛起或關(guān)機(jī)的方法的第一種變形。 第1步?第3步不變,第4步變?yōu)榈?A步如下。
[0011] 第4A步,操作系統(tǒng)判斷非易失性內(nèi)存中的空閑空間是否可容納壓縮后的易失性 內(nèi)存中的強(qiáng)制型數(shù)據(jù)。如果是,則操作系統(tǒng)將易失性內(nèi)存中的強(qiáng)制型數(shù)據(jù)壓縮后全部轉(zhuǎn)移 到非易失性內(nèi)存的空閑空間,完成掛起或關(guān)機(jī)。如果否,則操作系統(tǒng)將易失性內(nèi)存中的強(qiáng)制 型數(shù)據(jù)不經(jīng)壓縮(優(yōu)選)或壓縮后(次選),全部轉(zhuǎn)移到外存儲(chǔ)器中,完成掛起或關(guān)機(jī)。
[0012] 請參閱圖3,這是圖1所示的混合內(nèi)存設(shè)備實(shí)現(xiàn)掛起或關(guān)機(jī)的方法的第二種變形。 第1步?第3步不變,第4步變?yōu)榈?B步如下。
[0013] 第4B步,操作系統(tǒng)判斷非易失性內(nèi)存中的空閑空間是否可容納壓縮后的易失性 內(nèi)存中的強(qiáng)制型數(shù)據(jù)。如果是,則操作系統(tǒng)將易失性內(nèi)存中的強(qiáng)制型數(shù)據(jù)壓縮后全部轉(zhuǎn)移 到非易失性內(nèi)存的空閑空間,完成掛起或關(guān)機(jī)。如果否,則操作系統(tǒng)將易失性內(nèi)存中的強(qiáng)制 型數(shù)據(jù)不經(jīng)壓縮(優(yōu)選)或壓縮后(次選),一部分轉(zhuǎn)移到非易失性內(nèi)存的空閑空間(優(yōu)選首 先填滿非易失性內(nèi)存的空閑空間),剩余部分再轉(zhuǎn)移到外存儲(chǔ)器中,完成掛起或關(guān)機(jī)。
[0014] 圖1?圖3所示的混合內(nèi)存設(shè)備實(shí)現(xiàn)掛起或關(guān)機(jī)的方法中,在完成掛起或關(guān)機(jī)之 前操作系統(tǒng)還將易失性內(nèi)存中的可丟棄型數(shù)據(jù)或者丟棄、或者轉(zhuǎn)移到外存儲(chǔ)器中,該操作 可以放在任意步驟中進(jìn)行。涉及到將易失性內(nèi)存中的數(shù)據(jù)轉(zhuǎn)移到非易失性內(nèi)存中,可采用 內(nèi)存熱插拔(memory hot plug)技術(shù)。涉及到將內(nèi)存中的數(shù)據(jù)轉(zhuǎn)移到外存儲(chǔ)器中的,可采用 強(qiáng)制移出(force swap out)技術(shù),并優(yōu)選轉(zhuǎn)移到外存儲(chǔ)器的交換(swap)分區(qū)(針對Linux 系統(tǒng))或虛擬內(nèi)存空間(針對windows系統(tǒng))。內(nèi)存熱插拔與強(qiáng)制移出均為現(xiàn)有技術(shù),不再贅 述。
[0015] 混合內(nèi)存設(shè)備在掛起狀態(tài)下全部斷電,包括內(nèi)存斷電;因而掛起狀態(tài)等同于關(guān)機(jī) 狀態(tài)。所不同的只是掛起通常是由操作系統(tǒng)自動(dòng)進(jìn)入的,而關(guān)機(jī)通常是由用戶觸發(fā)的。
[0016] 請參閱圖4,這是現(xiàn)有的混合內(nèi)存設(shè)備實(shí)現(xiàn)喚醒或開機(jī)的方法,包括如下步驟:
[0017] 第1步,在混合內(nèi)存設(shè)備處于掛起或關(guān)機(jī)狀態(tài)下,開機(jī)程序捕捉到來自于按鈕、鍵 盤等的觸發(fā)喚醒或觸發(fā)開機(jī)的操作。所述開機(jī)程序通常存儲(chǔ)在智能電子設(shè)備的單獨(dú)一個(gè)非 易失性存儲(chǔ)器中,用于喚醒或啟動(dòng)操作系統(tǒng)。
[0018] 第2步,開機(jī)程序根據(jù)內(nèi)存中的非壓縮數(shù)據(jù)數(shù)據(jù)進(jìn)行喚醒或啟動(dòng)。如果內(nèi)存中的 非壓縮數(shù)據(jù)滿足系統(tǒng)喚醒或啟動(dòng)的需求,則開機(jī)程序不報(bào)錯(cuò),進(jìn)入第6步。如果內(nèi)存中的非 壓縮數(shù)據(jù)不滿足系統(tǒng)喚醒或啟動(dòng)的需求,開機(jī)程序就會(huì)報(bào)錯(cuò),錯(cuò)誤信息可能是如下三種情 況中的一種或多種:
[0019] -A :喚醒或啟動(dòng)操作系統(tǒng)要用到非易失性內(nèi)存中的壓縮數(shù)據(jù),進(jìn)入第3步; [0020] --B :喚醒或啟動(dòng)操作系統(tǒng)要用到外存儲(chǔ)器中的非壓縮數(shù)據(jù),進(jìn)入第4步。
[0021] --C :喚醒或啟動(dòng)操作系統(tǒng)要用到外存儲(chǔ)器中的壓縮數(shù)據(jù),進(jìn)入第5步。
[0022] 第3步,開機(jī)程序從非易失性內(nèi)存中將該壓縮數(shù)據(jù)解壓縮到內(nèi)存中,然后回到第2 止 /J/ 〇
[0023] 第4步,開機(jī)程序從外存儲(chǔ)器中將該非壓縮數(shù)據(jù)加載到內(nèi)存中,然后回到第2步。
[0024] 第5步,開機(jī)程序從外存儲(chǔ)器中將該壓縮數(shù)據(jù)解壓縮后加載到內(nèi)存中,然后回到 第2步。
[0025] 第6步,開機(jī)程序完成喚醒或啟動(dòng)操作系統(tǒng)。
[0026] 易失性內(nèi)存設(shè)備在開機(jī)時(shí)需要在內(nèi)存中加載操作系統(tǒng)映像文件,然后對外圍設(shè)備 初始化,接著對跟隨操作系統(tǒng)一起開機(jī)啟動(dòng)的應(yīng)用程序初始化。
[0027] 混合內(nèi)存設(shè)備在喚醒或開機(jī)時(shí)可以從非易失性內(nèi)存和/或外存儲(chǔ)器中直接加載 上一次掛起或關(guān)機(jī)時(shí)的所有運(yùn)行中的軟件,而恢復(fù)到上一次掛起或關(guān)機(jī)時(shí)狀態(tài)。與易失性 內(nèi)存設(shè)備在喚醒時(shí)總是需要從外存儲(chǔ)器中加載上一次掛起時(shí)的所有運(yùn)行中的軟件相比,混 合內(nèi)存設(shè)備縮短了喚醒或開機(jī)的時(shí)間。
[0028] 但是,混合內(nèi)存設(shè)備中的非易失性內(nèi)存的容量有限,在掛起或關(guān)機(jī)時(shí)往往需要進(jìn) 行數(shù)據(jù)壓縮、數(shù)據(jù)從內(nèi)存轉(zhuǎn)移到外存儲(chǔ)器等操作。而數(shù)據(jù)壓縮速度、外存儲(chǔ)器的數(shù)據(jù)讀寫速 度都遠(yuǎn)小于內(nèi)存的數(shù)據(jù)讀寫速度,這使得混合內(nèi)存設(shè)備處理掛起或關(guān)機(jī)的時(shí)間較長。相應(yīng) 地,混合內(nèi)存設(shè)備在喚醒或開機(jī)時(shí)也需要進(jìn)行數(shù)據(jù)解壓縮、數(shù)據(jù)從外存儲(chǔ)器轉(zhuǎn)移到內(nèi)存等 操作,也使得在觸發(fā)喚醒或觸發(fā)開機(jī)后的一段時(shí)間(通常為幾十秒)內(nèi),系統(tǒng)的性能大幅度 降低,即處理喚醒或開機(jī)的時(shí)間較長。實(shí)際環(huán)境中,混合內(nèi)存設(shè)備難以實(shí)現(xiàn)頻繁地掛起和喚 醒。
【發(fā)明內(nèi)容】
[0029] 本申請所要解決的技術(shù)問題是提供一種混合內(nèi)存設(shè)備實(shí)現(xiàn)掛起或關(guān)機(jī)的方法,在 非易失性內(nèi)存容量有限的前提下,減少掛起和喚醒的處理時(shí)間,提升喚醒初期的系統(tǒng)性能。
[0030] 為解決上述技術(shù)問題,本申請混合內(nèi)存設(shè)備的掛起或關(guān)機(jī)方法為:
[0031] 第1步,當(dāng)操作系統(tǒng)準(zhǔn)備掛起或關(guān)機(jī)時(shí),判斷非易失性內(nèi)存中的空閑空間是否可 容納易失性內(nèi)存中的強(qiáng)制型數(shù)據(jù);
[0032] 如果是,則操作系統(tǒng)將易失性內(nèi)存中的強(qiáng)制型數(shù)據(jù)轉(zhuǎn)移到非易失性內(nèi)存的空閑空 間,完成掛起或關(guān)機(jī);
[0033] 如果否,則進(jìn)入第2步;
[0034] 第2步,操作系統(tǒng)將非易失性內(nèi)存中的可丟棄型數(shù)據(jù)或者丟棄、或者轉(zhuǎn)移到外存 儲(chǔ)器中,然后進(jìn)入第3步;
[0035] 第3步,操作系統(tǒng)再次判斷非易失性內(nèi)存中的空閑空間是否可容納易失性內(nèi)存中 的強(qiáng)制型數(shù)據(jù);
[0036] 如果是,則操作系統(tǒng)將易失性內(nèi)存中的強(qiáng)制型數(shù)據(jù)轉(zhuǎn)移到非易失性內(nèi)存的空閑空 間,完成掛起或關(guān)機(jī);
[0037] 如果否,則進(jìn)入第4步;
[0038] 第4步,將當(dāng)前在易失性內(nèi)存中具有強(qiáng)制型數(shù)據(jù)的、且屬于應(yīng)用程序的進(jìn)程稱為 目標(biāo)進(jìn)程;操作系統(tǒng)標(biāo)識(shí)當(dāng)前時(shí)刻所有目標(biāo)進(jìn)程的優(yōu)先級(jí)以及目標(biāo)進(jìn)程之間的依賴關(guān)系, 并選擇不被其他目標(biāo)進(jìn)程所依賴的、且優(yōu)先級(jí)最低的目標(biāo)進(jìn)程強(qiáng)制退出;
[0039] 如果強(qiáng)制退出成功,則返回第3步;
[0040] 如果強(qiáng)制退出失敗,則進(jìn)入第5步;
[0041] 第5步,操作系統(tǒng)將易失性內(nèi)存中的強(qiáng)制型數(shù)據(jù)不經(jīng)壓縮或壓縮后,全部轉(zhuǎn)移到 外存儲(chǔ)器中,完成掛起或關(guān)機(jī)。
[0042] 本申請混合內(nèi)存設(shè)備的掛起或關(guān)機(jī)方法通過逐步關(guān)閉應(yīng)用程序的進(jìn)程,來逐步縮 小內(nèi)存中的強(qiáng)制型數(shù)據(jù),最終將易失性內(nèi)存中的強(qiáng)制型數(shù)據(jù)全部轉(zhuǎn)移到非易失性內(nèi)存中。 除非關(guān)閉進(jìn)程出錯(cuò)(少數(shù)情況下),才會(huì)回歸到現(xiàn)有的混合內(nèi)存設(shè)備的掛起或關(guān)機(jī)方法。本 申請可以在多種情況下避免數(shù)據(jù)壓縮、數(shù)據(jù)從內(nèi)存轉(zhuǎn)移到外存儲(chǔ)器等操作,因而大大加快 了掛起或關(guān)機(jī)的處理時(shí)間,也就相應(yīng)地加快了喚醒或開機(jī)的處理時(shí)間,同時(shí)避免了喚醒或 開機(jī)初期的系統(tǒng)性能下降問題。
【專利附圖】
【附圖說明】
[0043] 圖1?圖3是現(xiàn)有的混合內(nèi)存設(shè)備實(shí)現(xiàn)掛起或關(guān)機(jī)的方法的流程圖;
[0044] 圖4是現(xiàn)有的混合內(nèi)存設(shè)備實(shí)現(xiàn)喚醒或開機(jī)的方法的流程圖;
[0045] 圖5?圖7是本申請混合內(nèi)存設(shè)備實(shí)現(xiàn)掛起或關(guān)機(jī)的方法的流程圖;
[0046] 圖8是本申請為目標(biāo)進(jìn)程標(biāo)識(shí)優(yōu)先級(jí)的方法的流程圖;
[0047] 圖9是各個(gè)目標(biāo)進(jìn)程之間的依賴關(guān)系的樹狀示意圖;
[0048] 圖10是本申請篩選出符合某些條件的目標(biāo)進(jìn)程并強(qiáng)制退出的方法的流程圖。
【具體實(shí)施方式】
[0049] 請參閱圖5,這是本申請混合內(nèi)存設(shè)備實(shí)現(xiàn)掛起或關(guān)機(jī)的方法,包括如下步驟:
[0050] 第1步,當(dāng)操作系統(tǒng)準(zhǔn)備掛起或關(guān)機(jī)時(shí),判斷非易失性內(nèi)存中的空閑空間是否可 容納易失性內(nèi)存中的強(qiáng)制型數(shù)據(jù)。如果是,則操作系統(tǒng)將易失性內(nèi)存中的強(qiáng)制型數(shù)據(jù)轉(zhuǎn)移 到非易失性內(nèi)存的空閑空間,完成掛起或關(guān)機(jī)。如果否,則進(jìn)入第2步。
[0051] 第2步,操作系統(tǒng)將非易失性內(nèi)存中的可丟棄型數(shù)據(jù)或者丟棄、或者轉(zhuǎn)移到外存 儲(chǔ)器中,然后進(jìn)入第3步。
[0052] 第3步,操作系統(tǒng)再次判斷非易失性內(nèi)存中的空閑空間是否可容納易失性內(nèi)存中 的強(qiáng)制型數(shù)據(jù)。如果是,則操作系統(tǒng)將易失性內(nèi)存中的強(qiáng)制型數(shù)據(jù)轉(zhuǎn)移到非易失性內(nèi)存的 空閑空間,完成掛起或關(guān)機(jī)。如果否,則進(jìn)入第4步。
[0053] 第4步,將當(dāng)前在易失性內(nèi)存中具有強(qiáng)制型數(shù)據(jù)的、且屬于應(yīng)用程序的進(jìn)程 (process)稱為目標(biāo)進(jìn)程。操作系統(tǒng)標(biāo)識(shí)當(dāng)前時(shí)刻所有目標(biāo)進(jìn)程的優(yōu)先級(jí)以及目標(biāo)進(jìn)程之 間的依賴關(guān)系。接著,操作系統(tǒng)從目標(biāo)進(jìn)程中選擇不被其他目標(biāo)進(jìn)程所依賴的、且優(yōu)先級(jí)最 低的目標(biāo)進(jìn)程強(qiáng)制退出。如果強(qiáng)制退出成功,則返回第3步。如果強(qiáng)制退出失敗,則進(jìn)入第 5步。
[0054] 當(dāng)滿足上述條件的目標(biāo)進(jìn)程被強(qiáng)制退出后,其必然會(huì)釋放內(nèi)存。一種情況下,被強(qiáng) 制退出的進(jìn)程釋放出易失性內(nèi)存的空間,則易失性內(nèi)存中的強(qiáng)制型數(shù)據(jù)減少。另一種情況 下,被強(qiáng)制退出的進(jìn)程釋放出非易失性內(nèi)存的空間,則非易失性內(nèi)存中的空閑空間增加。再 一種情況下,被強(qiáng)制退出的進(jìn)程同時(shí)釋放出易失性內(nèi)存和非易失性內(nèi)存的空間。無論哪種 情況,都增加了非易失性內(nèi)存中的空閑空間可容納易失性內(nèi)存中的強(qiáng)制型數(shù)據(jù)的概率。
[0055] 第5步,操作系統(tǒng)將易失性內(nèi)存中的強(qiáng)制型數(shù)據(jù)不經(jīng)壓縮(優(yōu)選)或壓縮后(次選), 全部轉(zhuǎn)移到外存儲(chǔ)器中,完成掛起或關(guān)機(jī)。
[0056] 請參閱圖6,這是圖5所示的混合內(nèi)存設(shè)備實(shí)現(xiàn)掛起或關(guān)機(jī)的方法的第一種變形。 第1步?第4步不變,第5步變?yōu)榈?A步如下。
[0057] 第5A步,操作系統(tǒng)判斷非易失性內(nèi)存中的空閑空間是否可容納壓縮后的易失性 內(nèi)存中的強(qiáng)制型數(shù)據(jù)。如果是,則操作系統(tǒng)將易失性內(nèi)存中的強(qiáng)制型數(shù)據(jù)壓縮后全部轉(zhuǎn)移 到非易失性內(nèi)存的空閑空間,完成掛起或關(guān)機(jī)。如果否,則操作系統(tǒng)將易失性內(nèi)存中的強(qiáng)制 型數(shù)據(jù)不經(jīng)壓縮(優(yōu)選)或壓縮后(次選),全部轉(zhuǎn)移到外存儲(chǔ)器中,完成掛起或關(guān)機(jī)。
[0058] 請參閱圖7,這是圖5所示的混合內(nèi)存設(shè)備實(shí)現(xiàn)掛起或關(guān)機(jī)的方法的第二種變形。 第1步?第4步不變,第5步變?yōu)榈?B步如下。
[0059] 第5B步,操作系統(tǒng)判斷非易失性內(nèi)存中的空閑空間是否可容納壓縮后的易失性 內(nèi)存中的強(qiáng)制型數(shù)據(jù)。如果是,則操作系統(tǒng)將易失性內(nèi)存中的強(qiáng)制型數(shù)據(jù)壓縮后全部轉(zhuǎn)移 到非易失性內(nèi)存的空閑空間,完成掛起或關(guān)機(jī)。如果否,則操作系統(tǒng)將易失性內(nèi)存中的強(qiáng)制 型數(shù)據(jù)不經(jīng)壓縮(優(yōu)選)或壓縮后(次選),一部分轉(zhuǎn)移到非易失性內(nèi)存的空閑空間(優(yōu)選首 先填滿非易失性內(nèi)存的空閑空間),剩余部分再轉(zhuǎn)移到外存儲(chǔ)器中,完成掛起或關(guān)機(jī)。
[0060] 圖5?圖7所示的混合內(nèi)存設(shè)備實(shí)現(xiàn)掛起或關(guān)機(jī)的方法中,在完成掛起或關(guān)機(jī)之 前操作系統(tǒng)還將易失性內(nèi)存中的可丟棄型數(shù)據(jù)或者丟棄、或者轉(zhuǎn)移到外存儲(chǔ)器中,該操作 可以放在任意步驟中進(jìn)行。涉及到將易失性內(nèi)存中的數(shù)據(jù)轉(zhuǎn)移到非易失性內(nèi)存中,可采用 內(nèi)存熱插拔技術(shù)。涉及到將內(nèi)存中的數(shù)據(jù)轉(zhuǎn)移到外存儲(chǔ)器中的,可采用強(qiáng)制移出技術(shù),并優(yōu) 選轉(zhuǎn)移到外存儲(chǔ)器的交換分區(qū)或虛擬內(nèi)存空間。
[0061] 在任意時(shí)刻,智能電子設(shè)備的所有軟件的運(yùn)行狀態(tài)(runtime)在內(nèi)存中的強(qiáng)制型 數(shù)據(jù)分為兩部分,第一部分是操作系統(tǒng)的運(yùn)行狀態(tài)(即運(yùn)行中的操作系統(tǒng))在內(nèi)存中的強(qiáng)制 型數(shù)據(jù),第二部分是應(yīng)用程序的運(yùn)行狀態(tài)(即運(yùn)行中的應(yīng)用程序)在內(nèi)存中的強(qiáng)制型數(shù)據(jù)。 其中,后者的容量遠(yuǎn)大于前者。本申請就是逐一關(guān)閉應(yīng)用程序的進(jìn)程,同時(shí)始終保留操作系 統(tǒng)的進(jìn)程;直至所有軟件的運(yùn)行狀態(tài)在內(nèi)存中的強(qiáng)制型數(shù)據(jù)可以全部轉(zhuǎn)移到非易失性內(nèi)存 為止。這樣,本申請就在非易失性內(nèi)存有限的前提下,在掛起或關(guān)機(jī)時(shí)不用進(jìn)行數(shù)據(jù)壓縮、 數(shù)據(jù)從內(nèi)存轉(zhuǎn)移到外存儲(chǔ)器的操作,從而大大加快了掛起和關(guān)機(jī)的處理時(shí)間。采用本申請 所述的掛起或關(guān)機(jī)方法后,相應(yīng)的喚醒或開機(jī)時(shí)不用進(jìn)行數(shù)據(jù)解壓縮、數(shù)據(jù)從外存儲(chǔ)器轉(zhuǎn) 移到內(nèi)存的操作,從而大大加快了喚醒和開機(jī)的處理時(shí)間,也避免了喚醒和開機(jī)后的一段 時(shí)間內(nèi)系統(tǒng)性能降低的問題。
[0062] 圖5?圖7所示方法的第4步中涉及到標(biāo)識(shí)目標(biāo)進(jìn)程的優(yōu)先級(jí),下面就給出一種 具體的標(biāo)識(shí)優(yōu)先級(jí)的做法,如圖8所示。
[0063] 第1步,操作系統(tǒng)為每個(gè)目標(biāo)進(jìn)程均添加自啟動(dòng)標(biāo)識(shí)、10 (輸入和/或輸出)標(biāo)識(shí) 和窗口標(biāo)識(shí)。
[0064] 所述自啟動(dòng)標(biāo)識(shí)用來表明該目標(biāo)進(jìn)程是否需要自行啟動(dòng)。自啟動(dòng)標(biāo)識(shí)例如以一位 二進(jìn)制數(shù)來表示,為1表明在喚醒或開機(jī)后用戶希望該目標(biāo)進(jìn)程能夠自行啟動(dòng),為〇表明在 喚醒或開機(jī)后用戶不希望該目標(biāo)進(jìn)程自行啟動(dòng)。操作系統(tǒng)可為所有進(jìn)程預(yù)先設(shè)置自啟動(dòng)標(biāo) 識(shí),然后只需從中摘選出符合目標(biāo)進(jìn)程定義的進(jìn)程的自啟動(dòng)標(biāo)識(shí)即可。各個(gè)進(jìn)程的自啟動(dòng) 標(biāo)識(shí)也可由用戶自行設(shè)置或更改。
[0065] 所述10標(biāo)識(shí)用來記錄該目標(biāo)進(jìn)程在當(dāng)前時(shí)刻是否正在進(jìn)行10處理,例如從網(wǎng)絡(luò) 接口上傳或下載數(shù)據(jù)、或者從磁盤讀寫數(shù)據(jù)等。10標(biāo)識(shí)例如以一位二進(jìn)制數(shù)來表示,為1表 明當(dāng)前正在進(jìn)行10處理,為0表示當(dāng)前沒有進(jìn)行10處理。
[0066] 所述窗口標(biāo)識(shí)用來記錄該目標(biāo)進(jìn)程在當(dāng)前時(shí)刻之前的一段時(shí)間內(nèi)處于最前方窗 口(topview)的次數(shù)。窗口標(biāo)識(shí)例如以多位二進(jìn)制數(shù)來表示,優(yōu)選為6位。所述一段時(shí)間 例如取30秒、60秒、90秒等。
[0067] 第2步,操作系統(tǒng)根據(jù)上述三個(gè)標(biāo)識(shí)計(jì)算各個(gè)目標(biāo)進(jìn)程的優(yōu)先級(jí)??偟脑瓌t是自 啟動(dòng)標(biāo)識(shí)的權(quán)重最高,10標(biāo)識(shí)次之,窗口標(biāo)識(shí)最低。例如優(yōu)先級(jí)是長度為一個(gè)字節(jié)的二進(jìn) 制數(shù),最高位是自啟動(dòng)標(biāo)識(shí),次高位是10標(biāo)識(shí),剩余6位是窗口標(biāo)識(shí)。
[0068] 圖5?圖7所示方法的第4步中還涉及到標(biāo)識(shí)目標(biāo)進(jìn)程之間的依賴關(guān)系。通常, 操作系統(tǒng)對于任意時(shí)刻所有運(yùn)行中的進(jìn)程之間的依賴關(guān)系是已知的,只需從中摘選出符合 目標(biāo)進(jìn)程定義的進(jìn)程之間的依賴關(guān)系即可。請參閱圖9,假設(shè)其表現(xiàn)的是某一時(shí)刻正在運(yùn)行 中的所有目標(biāo)進(jìn)程,其中箭頭末端的進(jìn)程要依賴箭頭尖端的進(jìn)程才能運(yùn)行。A進(jìn)程不依賴于 其他的目標(biāo)進(jìn)程即可運(yùn)行,同時(shí)A進(jìn)程被B1和B2進(jìn)程所依賴。B1和B2進(jìn)程均需要依賴A 進(jìn)程才能正常運(yùn)行,同時(shí)B1進(jìn)程被Cl和C3進(jìn)程所依賴,B2進(jìn)程被C2和C3進(jìn)程所依賴。 Cl、C2和C3均需要依賴B1和/或B2進(jìn)程才能正常運(yùn)行,同時(shí)Cl、C2和C3進(jìn)程均沒有被 其他的目標(biāo)進(jìn)程所依賴。
[0069] 可選地,本申請還可由操作系統(tǒng)為每個(gè)目標(biāo)進(jìn)程均添加依賴標(biāo)識(shí),用來表明該目 標(biāo)進(jìn)程是否被其他目標(biāo)進(jìn)程所依賴以及被依賴程度。如果第一目標(biāo)進(jìn)程不被任何其他的目 標(biāo)進(jìn)程所依賴,則該第一目標(biāo)進(jìn)程的依賴標(biāo)識(shí)取值為〇 (或其他特定值)。如果第二目標(biāo)進(jìn) 程僅被第三目標(biāo)進(jìn)程所依賴,則該第二目標(biāo)進(jìn)程的依賴標(biāo)識(shí)取值為第三目標(biāo)進(jìn)程的依賴標(biāo) 識(shí)+1。如果第四目標(biāo)進(jìn)程同時(shí)被多個(gè)其他目標(biāo)進(jìn)程所依賴,則該第四目標(biāo)進(jìn)程的依賴標(biāo)識(shí) 取值為多個(gè)其他目標(biāo)進(jìn)程的依賴標(biāo)識(shí)中的最大值+1。
[0070] 圖5?圖7所示方法的第4步中還涉及到將符合某些條件的目標(biāo)進(jìn)程強(qiáng)制退出, 在操作系統(tǒng)已為各個(gè)目標(biāo)進(jìn)程計(jì)算出優(yōu)先級(jí)的情況下,該方法如圖10所示,包括如下步 驟:
[0071] 第1步,選擇出所有不被任何其他的目標(biāo)進(jìn)程所依賴的目標(biāo)進(jìn)程。
[0072] 如果有依賴標(biāo)識(shí)、且依賴標(biāo)識(shí)取值為0表示不被任何其他的目標(biāo)進(jìn)程所依賴的目 標(biāo)進(jìn)程,那么就相當(dāng)于選擇出所有依賴標(biāo)識(shí)為0的目標(biāo)進(jìn)程。
[0073] 第2步,將第1步所選出的目標(biāo)進(jìn)程根據(jù)優(yōu)先級(jí)由低到高排成一個(gè)隊(duì)列。
[0074] 第3步,將位于所述隊(duì)列開頭的進(jìn)程強(qiáng)制退出。如果強(qiáng)制退出成功,且需要再次強(qiáng) 制退出新的目標(biāo)進(jìn)程,則需要回到第1步,這是由于各個(gè)目標(biāo)進(jìn)程的依賴標(biāo)識(shí)和優(yōu)先級(jí)都 可能隨著時(shí)間發(fā)生變化。
[0075] 本申請僅提供了一種新型的混合內(nèi)存設(shè)備實(shí)現(xiàn)掛起或關(guān)機(jī)的方法,對混合內(nèi)存設(shè) 備實(shí)現(xiàn)喚醒或開機(jī)的方法并無改變,仍可采用圖4所示的現(xiàn)有方法。
[0076] 以上僅為本申請的優(yōu)選實(shí)施例,并不用于限定本申請。對于本領(lǐng)域的技術(shù)人員來 說,本申請可以有各種更改和變化。凡在本申請的精神和原則之內(nèi),所作的任何修改、等同 替換、改進(jìn)等,均應(yīng)包含在本申請的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1. 一種混合內(nèi)存設(shè)備的掛起或關(guān)機(jī)方法,其特征是,包括如下步驟: 第1步,當(dāng)操作系統(tǒng)準(zhǔn)備掛起或關(guān)機(jī)時(shí),判斷非易失性內(nèi)存中的空閑空間是否可容納 易失性內(nèi)存中的強(qiáng)制型數(shù)據(jù); 如果是,則操作系統(tǒng)將易失性內(nèi)存中的強(qiáng)制型數(shù)據(jù)轉(zhuǎn)移到非易失性內(nèi)存的空閑空間, 完成掛起或關(guān)機(jī); 如果否,則進(jìn)入第2步; 第2步,操作系統(tǒng)將非易失性內(nèi)存中的可丟棄型數(shù)據(jù)或者丟棄、或者轉(zhuǎn)移到外存儲(chǔ)器 中,然后進(jìn)入弟3步; 第3步,操作系統(tǒng)再次判斷非易失性內(nèi)存中的空閑空間是否可容納易失性內(nèi)存中的強(qiáng) 制型數(shù)據(jù); 如果是,則操作系統(tǒng)將易失性內(nèi)存中的強(qiáng)制型數(shù)據(jù)轉(zhuǎn)移到非易失性內(nèi)存的空閑空間, 完成掛起或關(guān)機(jī); 如果否,則進(jìn)入第4步; 第4步,將當(dāng)前在易失性內(nèi)存中具有強(qiáng)制型數(shù)據(jù)的、且屬于應(yīng)用程序的進(jìn)程稱為目標(biāo) 進(jìn)程;操作系統(tǒng)標(biāo)識(shí)當(dāng)前時(shí)刻所有目標(biāo)進(jìn)程的優(yōu)先級(jí)以及目標(biāo)進(jìn)程之間的依賴關(guān)系,并選 擇不被其他目標(biāo)進(jìn)程所依賴的、且優(yōu)先級(jí)最低的目標(biāo)進(jìn)程強(qiáng)制退出; 如果強(qiáng)制退出成功,則返回第3步; 如果強(qiáng)制退出失敗,則進(jìn)入第5步; 第5步,操作系統(tǒng)將易失性內(nèi)存中的強(qiáng)制型數(shù)據(jù)不經(jīng)壓縮或壓縮后,全部轉(zhuǎn)移到外存 儲(chǔ)器中,完成掛起或關(guān)機(jī)。
2. 根據(jù)權(quán)利要求1所述的混合內(nèi)存設(shè)備的掛起或關(guān)機(jī)方法,其特征是,所述方法第5步 改為第5A步:操作系統(tǒng)判斷非易失性內(nèi)存中的空閑空間是否可容納壓縮后的易失性內(nèi)存 中的強(qiáng)制型數(shù)據(jù); 如果是,則操作系統(tǒng)將易失性內(nèi)存中的強(qiáng)制型數(shù)據(jù)壓縮后全部轉(zhuǎn)移到非易失性內(nèi)存的 空閑空間,完成掛起或關(guān)機(jī); 如果否,則操作系統(tǒng)將易失性內(nèi)存中的強(qiáng)制型數(shù)據(jù)不經(jīng)壓縮或壓縮后,全部轉(zhuǎn)移到外 存儲(chǔ)器中,完成掛起或關(guān)機(jī)。
3. 根據(jù)權(quán)利要求1所述的混合內(nèi)存設(shè)備的掛起或關(guān)機(jī)方法,其特征是,所述方法第5步 改為第5B步:操作系統(tǒng)判斷非易失性內(nèi)存中的空閑空間是否可容納壓縮后的易失性內(nèi)存 中的強(qiáng)制型數(shù)據(jù); 如果是,則操作系統(tǒng)將易失性內(nèi)存中的強(qiáng)制型數(shù)據(jù)壓縮后全部轉(zhuǎn)移到非易失性內(nèi)存的 空閑空間,完成掛起或關(guān)機(jī); 如果否,則操作系統(tǒng)將易失性內(nèi)存中的強(qiáng)制型數(shù)據(jù)不經(jīng)壓縮或壓縮后,一部分轉(zhuǎn)移到 非易失性內(nèi)存的空閑空間,剩余部分再轉(zhuǎn)移到外存儲(chǔ)器中,完成掛起或關(guān)機(jī)。
4. 根據(jù)權(quán)利要求1所述的混合內(nèi)存設(shè)備的掛起或關(guān)機(jī)方法,其特征是,所述方法第4步 中,操作系統(tǒng)標(biāo)識(shí)當(dāng)前時(shí)刻所有目標(biāo)進(jìn)程的優(yōu)先級(jí)的方法為: 首先,操作系統(tǒng)為每個(gè)目標(biāo)進(jìn)程均添加自啟動(dòng)標(biāo)識(shí)、10標(biāo)識(shí)和窗口標(biāo)識(shí); 所述自啟動(dòng)標(biāo)識(shí)表明該目標(biāo)進(jìn)程是否需要自行啟動(dòng); 所述10標(biāo)識(shí)記錄該目標(biāo)進(jìn)程在當(dāng)前時(shí)刻是否正在進(jìn)行10處理; 所述窗口標(biāo)識(shí)記錄該目標(biāo)進(jìn)程在當(dāng)前時(shí)刻之前的一段時(shí)間內(nèi)處于最前方窗口的次 數(shù); 然后,操作系統(tǒng)根據(jù)上述三個(gè)標(biāo)識(shí)計(jì)算各個(gè)目標(biāo)進(jìn)程的優(yōu)先級(jí);所述自啟動(dòng)標(biāo)識(shí)的權(quán) 重最高,10標(biāo)識(shí)的權(quán)重次之,窗口標(biāo)識(shí)的權(quán)重最低。
5. 根據(jù)權(quán)利要求1所述的混合內(nèi)存設(shè)備的掛起或關(guān)機(jī)方法,其特征是,所述方法第4步 中,操作系統(tǒng)標(biāo)識(shí)當(dāng)前時(shí)刻所有目標(biāo)進(jìn)程的依賴關(guān)系的方法為:操作系統(tǒng)根據(jù)已知的當(dāng)前 時(shí)刻所有運(yùn)行中的進(jìn)程之間的依賴關(guān)系,從中摘選出當(dāng)前時(shí)刻所有目標(biāo)進(jìn)程之間的依賴關(guān) 系。
6. 根據(jù)權(quán)利要求1所述的混合內(nèi)存設(shè)備的掛起或關(guān)機(jī)方法,其特征是,所述方法第4步 中,操作系統(tǒng)選擇不被其他目標(biāo)進(jìn)程所依賴的、且優(yōu)先級(jí)最低的目標(biāo)進(jìn)程強(qiáng)制退出的方法 為: 首先,操作系統(tǒng)選擇出所有不被任何其他的目標(biāo)進(jìn)程所依賴的目標(biāo)進(jìn)程; 然后,操作系統(tǒng)將所選出的目標(biāo)進(jìn)程根據(jù)優(yōu)先級(jí)由低到高排成一個(gè)隊(duì)列; 最后,操作系統(tǒng)將位于所述隊(duì)列開頭的目標(biāo)進(jìn)程強(qiáng)制退出。
【文檔編號(hào)】G06F9/445GK104156226SQ201310178446
【公開日】2014年11月19日 申請日期:2013年5月15日 優(yōu)先權(quán)日:2013年5月15日
【發(fā)明者】徐景, 朱峰, 蔡俊杰, 趙浩, 陳虎 申請人:索尼公司