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