一種在基于容器的多系統(tǒng)中進行電源管理的方法和裝置的制造方法
【技術領域】
[0001]本申請涉及智能設備節(jié)電領域,尤其涉及一種在基于容器的多系統(tǒng)中進行電源管理的方法和裝置。
【背景技術】
[0002]基于Linux的智能設備如移動電話的電源管理非常復雜,其涉及到系統(tǒng)級的待機、頻率電壓的變換、系統(tǒng)空閑時的處理以及每個設備驅動對于系統(tǒng)待機的支持和每個設備運行時的電源管理,可以說和系統(tǒng)中的每個設備驅動都息息相關。
[0003]對于消費電子產(chǎn)品來說,尤其是嵌入式終端設備,其體積的大小有限,使得電池的容量有很大限制,從而其電源管理顯得更加重要。目前開發(fā)有各種各樣的電源管理方法和裝置。例如,中國專利CN 101697095 B公開了一種基于Linux嵌入式系統(tǒng)的動態(tài)電源管理的方法,該方法十分復雜。中國專利申請CN 103902002A公開了一種電源管理方法及裝置,該方法按不同場景管理電源。然而,這些方法和裝置均不適用于或者不能有效地適用于基于容器的雙系統(tǒng)或者多系統(tǒng)中的電源管理。在基于容器的多系統(tǒng)中,容器作為設備可以獨立運行的一個子操作系統(tǒng),子操作系統(tǒng)擁有自己的主界面、啟動程序、應用程序以及各種小部件。現(xiàn)有技術難以解決這樣的多系統(tǒng)中的電源管理。
【發(fā)明內(nèi)容】
[0004]本申請的目標在于提供一種既適用于基于容器的多系統(tǒng)中的電源管理又簡單、有效的方法和裝置。
[0005]本申請的目標由一種在基于容器的多系統(tǒng)中進行電源管理的方法實現(xiàn),該方法包括:
[0006]在前臺系統(tǒng)的用戶空間發(fā)起電源睡眠時,前臺系統(tǒng)的服務向后臺系統(tǒng)發(fā)送通知消息;
[0007]后臺系統(tǒng)在接收到通知消息后進行后臺系統(tǒng)的睡眠鎖的釋放;
[0008]使包括前臺系統(tǒng)和后臺系統(tǒng)的整個系統(tǒng)陷入內(nèi)核;
[0009]內(nèi)核檢查睡眠鎖是否存在;
[0010]在睡眠鎖不存在時,凍結進程并使外圍設備休眠;
[0011]禁用非啟動中央處理單元(cpu);
[0012]關整個系統(tǒng)的中斷;
[0013]關閉啟動中央處理單元。
[0014]本發(fā)明的目標還由一種在基于容器的多系統(tǒng)中進行電源管理的裝置實現(xiàn),該裝置包括:
[0015]前臺消息處理單元,用于前臺系統(tǒng)的服務在前臺系統(tǒng)的用戶空間發(fā)起電源睡眠時向后臺系統(tǒng)發(fā)送通知消息;
[0016]后臺處理單元,用于在后臺系統(tǒng)接收到通知消息后進行后臺系統(tǒng)的睡眠鎖的釋放;
[0017]內(nèi)核陷入單元,用于使包括前臺系統(tǒng)和后臺系統(tǒng)的整個系統(tǒng)陷入內(nèi)核;
[0018]睡眠鎖檢查單元,用于使內(nèi)核檢查睡眠鎖是否存在;
[0019]凍結單元,用于在睡眠鎖不存在時凍結進程并使外圍設備休眠;
[0020]禁用單元,用于禁用非啟動中央處理單元;
[0021]關中斷單元,用于關整個系統(tǒng)的中斷;
[0022]關閉單元,用于關閉啟動中央處理單元。
[0023]本發(fā)明的方法和裝置綜合考慮了基于容器的多雙系統(tǒng)的復雜情況,如用戶空間的策略、系統(tǒng)切換時電源管理的狀態(tài)等,可在多系統(tǒng)中實現(xiàn)簡單、有效的電源管理,節(jié)電能力尚O
[0024]除非明確指出,在此所用的單數(shù)形式“一”、“該”均包括復數(shù)含義(即具有“至少一”的意思)。應當進一步理解,說明書中使用的術語“具有”、“包括”和/或“包含”表明存在所述的特征、步驟、操作、元件和/或部件,但不排除存在或增加一個或多個其他特征、步驟、操作、元件、部件和/或其組合。如在此所用的術語“和/或”包括一個或多個列舉的相關項目的任何及所有組合。除非明確指出,在此公開的任何方法的步驟不必精確按照所公開的順序執(zhí)行。
【附圖說明】
[0025]本發(fā)明將在下面參考附圖并結合優(yōu)選實施例進行更完全地說明。
[0026]圖1為根據(jù)本發(fā)明方法的一實施例的流程圖。
[0027]圖2為根據(jù)本發(fā)明方法的另一實施例的流程圖。
[0028]圖3為根據(jù)本發(fā)明裝置的一實施例的結構示意圖。
[0029]為清晰起見,這些附圖均為示意性及簡化的圖,它們只給出了對于理解本發(fā)明所必要的細節(jié),而省略其他細節(jié)。
【具體實施方式】
[0030]通過下面給出的詳細描述,本發(fā)明的適用范圍將顯而易見。然而,應當理解,在詳細描述和具體例子表明本發(fā)明優(yōu)選實施例的同時,它們僅為說明目的給出。
[0031]圖1示出了根據(jù)本發(fā)明方法的一實施例,其用于在基于容器的多系統(tǒng)中的電源管理。其中多系統(tǒng)可包括任何數(shù)量的子操作系統(tǒng),如一個、兩個或三個子操作系統(tǒng)等,每一子操作系統(tǒng)位于一容器中。該實施例的方法開始于步驟S10,在前臺系統(tǒng)的用戶空間發(fā)起電源睡眠時,前臺系統(tǒng)的服務向后臺系統(tǒng)發(fā)送消息通知后臺系統(tǒng)其將要睡眠。發(fā)起電源睡眠由用戶空間決定,例如通過按下電源鍵進入睡眠、屏幕超時進入睡眠、或任何其他方式。前臺系統(tǒng)向后臺系統(tǒng)發(fā)送的通知消息可以是一個字節(jié)的消息,不僅傳輸快,而且減小處理負荷。在一個字節(jié)中,第0-1位表示通知消息發(fā)送的起始系統(tǒng),例如這兩位為01時表示前臺系統(tǒng)及為10時表示后臺系統(tǒng);第2和3位表示通知消息的目的地系統(tǒng),例如這兩位為01時表示前臺系統(tǒng)及為10時表示后臺系統(tǒng);第4-7位表示要進行的動作,例如這四位為0001時表示睡眠等。之后,處理進行到步驟S11。
[0032]在步驟SI I,后臺系統(tǒng)在接收到前臺系統(tǒng)發(fā)送的消息后,釋放后臺系統(tǒng)的睡眠鎖(wakelock)。睡眠鎖指用戶空間和內(nèi)核空間均可以申請的一種鎖,只要持有睡眠鎖,系統(tǒng)就不會進入睡眠。之后,處理進行到步驟S12。
[0033]在步驟S12,包括前臺系統(tǒng)和后臺系統(tǒng)的整個系統(tǒng)通過向系統(tǒng)電源狀態(tài)(/sys/power/state)節(jié)點中寫入具有標準定義的字符串“mem”而陷入內(nèi)核。之后,處理進行到步驟 S13。
[0034]在步驟S13,內(nèi)核檢查睡眠鎖是否存在。如果存在睡眠鎖,則放棄本次睡眠,并繼續(xù)檢查睡眠鎖的存在。如果不存在睡眠鎖,處理進行到步驟S14。
[0035]在步驟S14,凍結所有活