TW201525869A - 用於雙作業系統記憶體切換的系統及方法 - Google Patents

用於雙作業系統記憶體切換的系統及方法 Download PDF

Info

Publication number
TW201525869A
TW201525869A TW103136463A TW103136463A TW201525869A TW 201525869 A TW201525869 A TW 201525869A TW 103136463 A TW103136463 A TW 103136463A TW 103136463 A TW103136463 A TW 103136463A TW 201525869 A TW201525869 A TW 201525869A
Authority
TW
Taiwan
Prior art keywords
memory
computing device
sleep state
firmware
operating system
Prior art date
Application number
TW103136463A
Other languages
English (en)
Inventor
Timothy Andrew Lewis
Mike Nai-Yi Su
Jeremy Zhi-Gao Wang
Original Assignee
Insyde Software Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Insyde Software Corp filed Critical Insyde Software Corp
Publication of TW201525869A publication Critical patent/TW201525869A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/441Multiboot arrangements, i.e. selecting an operating system to be loaded
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context

Abstract

本發明提供一種用於使具有雙作業系統特徵的計算裝置中較多記憶體可用的機制,其使用裝置韌體以在切換作業系統時將由所述作業系統所使用的重疊記憶體位置的內容保存至非揮發性儲存器同時加快切換程序。

Description

用於雙作業系統記憶體切換的系統及方法
本申請案是關於且主張2013年10月23日申請的題為「用於雙OS記憶體切換的系統以及方法(System and Method for Dual OS Memory Switching)」的美國臨時專利申請案第61/894,537號的權利,所述申請案的內容以全文引用的方式併入本文中。
本發明係關於用於雙作業系統(OS)記憶體切換的系統及方法。
計算裝置是由包含於所述裝置內的韌體初始化,且此韌體提供促進作業系統(OS)的開機的一系列軟體服務以及提供在作業系統已開機之後繼續可用的此等服務的較小子集。韌體為已寫入至唯讀記憶體(ROM)模組(包含(但不限於)ROM、PROM、EPROM、EEPROM以及快閃記憶體ROM(下文統稱為「ROM」))上的軟體。除其他服務外,韌體亦負責計算裝置之操作直至可執行將計算裝置的作業系統載入至記憶體中的開機程序為 止。一旦被載入,作業系統便主管計算裝置的正常操作,但出於安全性以及其他原因,在載入作業系統之後佈建某些服務可要求自作業系統返回至韌體之控制轉變。
統一可擴展韌體介面(UEFI)為由非營利行 業主體所產生的詳述作業系統與計算裝置(諸如(但不限於)個人電腦(PC))的所包含韌體之間的程式設計介面的規範。UEFI規範描述計算裝置可藉以用組織方式自電力施加狀態移至完全操作的工具集合。UEFI規範告知所要結果但有意地並不指定實施的內部策略。UEFI韌體規範替換行業先前所使用且通常稱為舊版BIOS(基本輸入輸出系統)的早期作業系統(OS)/韌體介面。當實施於計算裝置中時,用於UEFI韌體的機器碼以及由韌體所使用的所有永久性資料駐留於唯讀記憶體(ROM)中。
一些計算裝置經組態以將多個作業系統開 機。裝備有兩個獨立作業系統的計算裝置可被稱作雙OS系統。習知地,在此雙OS計算裝置中,要求將兩個作業系統同時載入至揮發性記憶體中,或要求計算裝置暫時中止操作且斷電抑或休眠同時切換作業系統,或必須將當前作業系統關機,計算裝置必須重設且接著載入另一作業系統。
本發明的實施例提供一種用於在將兩個獨立 作業系統載入計算裝置上時減少計算裝置中所要求的記憶 體且用於加快在作業系統之間切換所要求的時間的機制。 回應於指示希望自第一作業系統切換至第二作業系統的使用者動作,將第一作業系統自作用中狀態改變至非作用中狀態,且韌體控制程序將由第一作業系統所使用的與將由第二作業系統所使用的記憶體位置重疊的記憶體位置的內容複製至非揮發性儲存器中。接著將第二作業系統自非作用中狀態改變至作用中狀態且將其載入至記憶體中。隨後,當使用者動作將第二作業系統置回至非作用中狀態時,將正由第二作業系統所使用的重疊記憶體位置中的值複製至非揮發性儲存器中,且將由第一作業系統所使用的重疊記憶體位置的先前所儲存之記憶體值載入回至記憶體中。接著可使第一作業系統處於作用中。
在一個實施例中,一種用於在裝備有韌體以 及具有第一OS以及第二OS的增強型雙作業系統(OS)的計算裝置中切換作業系統的計算裝置實施方法包含將第一OS載入至計算裝置的揮發性記憶體中的步驟。所述方法亦識別請求對作業系統進行切換的使用者起始的切換事件。回應於切換事件,裝置韌體將揮發性記憶體中用於第一OS的重疊記憶體位置的內容保存至非揮發性儲存器。 重疊記憶體位置亦由第二OS使用。所述方法進一步將用於第二OS的內容自非揮發性儲存器載入至揮發性記憶體中的重疊記憶體位置,且在第二OS的控制下重新繼續計算裝置的操作。
在另一實施例中,一種裝備有韌體以及包含 第一OS以及第二OS的增強型雙作業系統(OS)的計算裝置包含中央處理單元(CPU)、揮發性記憶體以及非揮發性儲存器。所述計算裝置亦包含裝置韌體。裝置韌體經組態以將第一OS載入至揮發性記憶體中,且識別請求對作業系統進行切換的使用者起始的切換事件。回應於使用者起始的切換事件,裝置韌體經組態以將揮發性記憶體中用於第一OS的重疊記憶體位置的內容保存至非揮發性儲存器。重疊記憶體位置亦由第二OS使用。裝置韌體另外經組態以將用於第二OS的內容自非揮發性儲存器載入至揮發性記憶體中的重疊記憶體位置,其中在第二OS的控制下重新繼續計算裝置的操作。
100、102、104、106、108、202、204、206、208、300、301、302、304、306、307、308、310、312、314‧‧‧步驟
400a‧‧‧第一且較大OS記憶體映像
400b‧‧‧第二且較小OS記憶體映像
400c‧‧‧組合式記憶體映像
402‧‧‧UEFI韌體
404‧‧‧硬體記憶體映射I/O
406‧‧‧第一OS、驅動程式以及應用程式/揮發性記憶體位置
408‧‧‧第二OS、驅動程式以及應用程式
409‧‧‧第二OS資料
410‧‧‧重疊記憶體位置一
420‧‧‧重疊記憶體位置二
430‧‧‧影子記憶體
500‧‧‧計算裝置
501‧‧‧使用者
502‧‧‧CPU
504‧‧‧揮發性記憶體
510‧‧‧硬碟機
512‧‧‧第一OS
514‧‧‧第二OS
520‧‧‧顯示器/ROM
525‧‧‧韌體
530‧‧‧輸入裝置
併入本說明書中且構成本說明書的部分的隨附圖式說明本發明的一或多個實施例,且與描述一起用以解釋本發明。在圖式中:圖1描繪由本發明的實施例所執行的用以在裝備有增強型雙OS的計算裝置中將第一作業系統切換至第二作業系統的例示性總步驟序列。
圖2描繪由本發明的實施例所執行的用以在將第二作業系統切換至非作用中狀態時保存由第二作業系統所使用的重疊記憶體位置的記憶體內容的例示性步驟序列。
圖3描繪由本發明的實施例所執行的用以在增強型雙OS計算裝置中處置切換事件的例示性步驟序列。
圖4描繪本發明的實施例中的用於第一以及第二OS的記憶體映像以及組合式記憶體映像的實例。以及圖5描繪適於實踐本發明的實施例的例示性環境。
在計算裝置的開機序列期間,將計算裝置的 作業系統(OS)載入至諸如隨機存取記憶體(RAM)的揮發性記憶體中。一旦正常操作已開始,一些計算裝置便允許計算裝置的使用者切換至另一作業系統。本發明的實施例藉由在並不要求計算裝置休眠或斷電以進行切換的加速程序中使用裝置韌體而使較多記憶體可用於此雙OS計算裝置中,且保存正由一個以上作業系統所使用的重疊記憶體位置的內容。此方法減少與習知休眠或斷電解決方案相關聯的效能降級,此是因為可快速地執行對重疊記憶體位置的內容的保存以及復原且要求較少揮發性記憶體以保持兩個作業系統。
圖1描繪由本發明的實施例所執行的用以在 裝備有增強型雙OS的計算裝置中將計算裝置的作用中作業系統自第一OS切換至第二OS的例示性總步驟序列。 在一個實施例中,第一OS以及第二OS可為不同類型以及大小的作業系統。舉例而言,第一OS可為具有較小記憶體使用量的ANDROID作業系統,而第二OS可為具有較大記憶體使用量的WINDOWS OS。該序列在第一OS載入至揮發性記憶體中時開始(步驟100)。隨後,在由第 一OS控制的計算裝置的正常操作期間,識別使用者起始的切換事件(諸如,按壓實體按鈕或出於此目的保留的快速鍵或選擇作業系統中的選項或作業系統應用程式)。舉例而言,當使用者起始的事件發生時,裝置韌體或OS駐留應用程式或驅動程式可偵測到事件且設定可由裝置韌體讀取的旗標(步驟102)。回應於識別到切換事件,裝置韌體將揮發性記憶體中正用於第一OS且與將由第二OS使用的記憶體位置重疊的記憶體位置的內容保存至非揮發性儲存器(步驟104)。揮發性記憶體中待由第一OS以及第二OS兩者使用(以非同時方式)的此等記憶體位置在下文中被稱為「重疊記憶體位置」。保存有重疊揮發性記憶體位置的內容的非揮發性儲存器可為硬碟機、固態磁碟機(SSD)、快閃記憶體ROM或一些其他類型的非揮發性儲存器。如下文將更詳細地解釋,對重疊記憶體位置的內容的保存可在由裝置韌體處置由切換事件所產生的睡眠狀態請求之後。在已由裝置韌體將重疊記憶體位置的內容保存至非揮發性儲存器(步驟104)之後,裝置韌體可將第二OS的內容載入至重疊記憶體位置(步驟106),且計算裝置在第二OS的控制下重新繼續正常操作(步驟108)。
應瞭解,若第二OS大於第一OS且第二OS 先前尚未載入,則上文關於圖1所描述的將第二OS的內容載入至揮發性記憶體中的重疊記憶體位置亦可伴隨有將第二OS的額外內容載入至揮發性記憶體中的其他非重疊 位置。舉例而言,在第一OS為具有較小記憶體使用量的ANDROID OS且第二OS為先前尚未載入的具有較大記憶體使用量的WINDOWS OS的情況下,重疊位置將等同於ANDROID記憶體映像,且在將所有WINDOWS OS載入至包含重疊位置的揮發性記憶體位置中之前,將正用於ANDROID OS的重疊位置的內容保存至非揮發性儲存器。 替代地,若先前已載入WINDOWS OS且接著計算裝置在切換回至WINDOWS OS之前已切換至ANDROID OS,則將僅需要復原當啟動ANDROID OS時已保存的由WINDOWS OS所使用的重疊位置的先前所保存內容,此是因為駐留於揮發性記憶體中的非重疊位置中的來自初始載入的WINDOWS OS部分將尚未受到正啟動以及撤銷啟動的ANDROID OS干擾。無論哪個作業系統在作用中,僅保存並復原重疊記憶體位置的內容的此機制使較多計算裝置記憶體可用。對於較小記憶體組態系統(其中一個作業系統比另一作業系統使用較少記憶體),記憶體內容之此交換是尤其重要的。因此,本發明的實施例提供具有相同於如正常WINDOWS實施中將可用的實體記憶體量的可用於WINDOWS OS的實體記憶體量的操作環境。將瞭解,在不脫離本發明的範疇的情況下,其他作業系統可取代ANDROID及/或WINDOWS。
自圖1的實例繼續,一旦計算裝置已自第一 OS切換至第二OS,其亦可切換回第一OS。圖2描繪由本發明的實施例所執行的用以在將第二OS切換至非作用 中狀態且復原第一OS以控制計算裝置的操作時保存由第二OS所使用的重疊記憶體位置的記憶體內容的例示性步驟序列。所述序列在識別到第二使用者起始的切換事件時開始(步驟202)。回應於切換事件,裝置韌體將揮發性記憶體中的重疊記憶體位置的內容(現在正用於第二OS)保存至非揮發性儲存器(步驟204)。如上文所提到,對重疊記憶體位置的內容的保存可在處置由切換事件所產生的睡眠狀態請求之後。接著,韌體將第一OS的先前所保存內容自非揮發性儲存器載入至重疊記憶體位置(步驟206)。計算裝置可接著在第一OS的控制下重新繼續操作(步驟208)。
本發明的實施例可利用不同睡眠狀態以便切 換計算裝置的作用中作業系統。特定睡眠狀態將取決於計算裝置的組態而變化。作為一個實例,進階組態與電源介面(ACPI)規範定義用於待由計算裝置中的作業系統(OS)實施的裝置組態以及電力管理的標準。ACPI標準定義計算裝置的自G0(隨監視器關機而工作)執行至G3(機械性關機)的四個全域電力狀態。所述標準亦在此等全域狀態內定義範圍介於S0(接通)至S5(斷開)的六個睡眠狀態。睡眠狀態描述逐漸較大程度的電力節省,以及使系統可用於使用者所需要的逐漸較大時間長度。較高編號的睡眠狀態節省較多電力但要求較多時間以返回至正常操作。舉例而言,處於S3電力狀態的計算裝置節省的電力比處於S1狀態的計算裝置多,而處於S5狀態的系統 要求比處於S3電力狀態的系統多的時間以對使用者輸入命令作出回應。在符合ACPI的計算裝置中,作業系統藉由將特定「睡眠值」寫入至睡眠暫存器而控制計算裝置在睡眠狀態之間的轉變。
由ACPI規範所定義的六個睡眠狀態為:
S0:接通(未睡眠)(在G0電力狀態內)。
S1:S1睡眠狀態為低喚醒潛時睡眠狀態。在此狀態中,並未遺失系統上下文(CPU或晶片組)且硬體維持所有系統上下文。
S2:S2睡眠狀態為低喚醒潛時睡眠狀態。此狀態類似於S1睡眠狀態,除了遺失CPU以及系統快取記憶體上下文(OS負責維持快取記憶體以及CPU上下文)之外。在偵測到喚醒事件之後,控制自處理器的重設向量開始。
S3:S3睡眠狀態為低喚醒潛時睡眠狀態,其中除系統記憶體之外遺失所有系統上下文。CPU、快取記憶體以及晶片組上下文在此狀態中遺失。硬體維持記憶體上下文且復原一些CPU以及L2組態上下文。在偵測到喚醒事件之後,控制自處理器的重設向量開始。
S4:S4睡眠(休眠)狀態為由ACPI所支援的最低電力、最長喚醒潛時睡眠狀態。為了將電力減少至最小,假定硬體平台已將所有裝置斷電。維持平台上下文。S1至S4睡眠狀態為發生於G1(睡眠)全域電力狀態內的區段。
S5:軟關機狀態。S5睡眠狀態類似於S4狀 態,除了OS並不保存任何上下文之外。電力供應單元供應電力以允許返回至S0狀態。系統處於「軟」關機狀態且當其喚醒時要求完全開機。軟體使用不同狀態值以在S5睡眠狀態與S4睡眠狀態之間區分,從而允許BIOS內的初始開機操作區分開機是否待自所保存記憶體影像喚醒。S5軟關機狀態發生於G2全域電力狀態內(G3(機械性關機)電力狀態不同於G2電力狀態之處在於,電腦系統的電力供應單元不再供應電力,此是因為已經由機械開關自系統移除電力)。
在符合ACPI的計算裝置中,「睡眠控制暫存 器」為固定ACPI描述表(FADT)中所定義的I/O暫存器。FADT為描述數個固定硬體資源(包含睡眠控制暫存器)的ACPI定義式表。習知地,為了觸發睡眠狀態轉變,作業系統檢查FADT中所定義的睡眠控制暫存器的位址,且將與所要睡眠狀態相關聯的睡眠類型值寫入至位址。ACPI規範基於作業系統希望轉變至的睡眠狀態的識別碼定義應寫入至PM1控制或睡眠控制暫存器之SLP_TYP欄位的不同值。
如上文所提到,由本發明的實施例對揮發性 記憶體中的重疊記憶體位置的內容的保存可在處置由切換事件所產生的睡眠狀態請求之後。在一個實施例中,使用者起始的切換事件可藉由將適當命令寫入至睡眠控制暫存器(如(例如)ACPI規範中所描述)而致使作業系統指 示硬體進入休眠(S4)睡眠狀態,但硬體定義式機制(諸如,大部分INTEL以及AMD南橋接器的睡眠狀態轉變截獲能力)替代地產生將對計算裝置的控制傳遞至由韌體所提供的暫存式SMI處理常式的軟體系統管理中斷(SMI)。此SMI處理常式初始化硬體以準備將在完成睡眠狀態轉變之後幾乎即刻發生的喚醒事件。接著,SMI處理常式將系統置於暫時中止S3睡眠狀態而非休眠S4睡眠狀態中。在自S3睡眠狀態喚醒之後(相比自S4休眠睡眠狀態喚醒,此喚醒較快速地發生),裝置韌體如上文所描述地保存且復原重疊記憶體位置的內容。應注意,使用S3狀態而非S2或S1狀態,此是因為當前OS準備在進入S3之前重設所附接裝置,且因此準備好由下一OS重新初始化,而S2以及S1並非如此。又,S3提供手動控制韌體的有效方式以便執行記憶體交換動作。
在另一實施例中,作業系統指示硬體進入暫 時中止(S3)睡眠狀態,但硬體定義式機制(諸如,因特爾(Intel)以及AMD晶片組中所發現的睡眠狀態轉變截獲)替代地產生將控制傳遞回至由韌體所提供的暫存式SMI處理常式的軟體SMI。此SMI處理常式初始化硬體以準備將在完成睡眠狀態轉變之後幾乎即刻發生的喚醒事件。接著,SMI處理常式將系統置於S3睡眠狀態中。先前所設置的喚醒事件激發,從而致使系統自S3睡眠狀態重新繼續,之後UEFI(或其他類型的)韌體如上文所描述地執行復原記憶體組態以及重疊記憶體內容所要求的必 要動作。
在一個實施例中,作業系統指示硬體進入暫 時中止(S3)睡眠狀態,但用於進行此轉變的在ACPI表中所描述的硬體機制實際上描述CPU重設暫存器,從而將控制返回至CPU重設向量處的韌體。韌體如上文所描地保存且復原重疊記憶體位置的內容以便如由使用者所請求地切換OS。當平台上並不存在S3支援時可使用此方法,且所述方法具有無需組態喚醒信號以便起始其的優勢。
在另一實施例中,使用者起始OS切換事件, 但作業系統並不支援暫時中止(S3)或休眠(S4)睡眠狀態。在此狀況下,韌體截獲OS切換且產生僅CPU重設。 可經由SMI(SMI產生於OS切換事件上且SMI處理常式保存CPU保存狀態並觸發重設)或經由硬體支援完成此操作。此方法具有將控制返回至CPU重設向量處的韌體,但保留記憶體內容的效果。在CPU重設之後仍組態記憶體,因此並不需要復原記憶體組態。當切換回時,重新繼續碼如上文所描述地復原重疊記憶體位置,但接著產生SMI、復原CPU狀態且重新繼續回至替代OS中。
在一些計算裝置中,CPU具有正常操作模式 以及稱為系統管理模式(SMM)的第二操作模式。當CPU處於正常操作模式中時,其可存取除排外地專用於SMM的某些記憶體區之外的所有電腦元件。相比之下,當CPU以SMM進行操作時,其能夠存取包含專用記憶體 的計算裝置的所有元件。計算裝置的電路內可用可指示CPU何時在SMM內操作的電信號。可由包含由韌體所觸發的SMI事件的SMI事件引導CPU裝置以自正常操作模式轉變至SMM。系統設計中可用的準確觸發器略微不同,但當使用平台適當觸發器時結果始終為立即暫時中止主記憶體中的執行且在SMM記憶體中的特定位置處開始執行。在本發明的一個實施例中,使用者起始OS切換事件,但作業系統並不支援暫時中止(S3)或休眠(S4)睡眠狀態。實情為,韌體藉由產生SMI或致使截獲驅動程式的硬體提供式暫存器的描述(諸如,使用ACPI中的固定特徵硬體暫存器)替換ACPI表中的睡眠狀態轉變硬體提供式暫存器的描述。韌體保存CPU保存狀態、一些其他額外硬體狀態,準備緊接著的喚醒事件且使用睡眠型以及睡眠啟用暫存器(例如,ACPI定義式)直接觸發S3睡眠狀態。喚醒系統(其中CPU執行於CPU重設向量處)、復原重疊記憶體組態、重新建立SMM環境,且接著韌體產生SMI、復原硬體以及CPU狀態且重新繼續回至替代OS中。
在另一實施例中,使用者起始OS切換事件, 且作業系統未經組態以支援暫時中止(S3)或休眠(S4)睡眠狀態但其仍具有所述能力。在此狀況下,實施例修改作業系統的組態使得使用S3睡眠狀態。舉例而言,在OS以及平台支援極低電力狀態S0的狀況下,OS電力管理策略通常藉由預設停用S3,但可經由OS API或OS註冊表 調整此策略。
在一個實施例中,使用者起始OS切換事件,且作業系統未經組態以支援暫時中止(S3)睡眠狀態但確實支援休眠(S4)睡眠狀態。在此狀況下,實施例使用S4睡眠狀態。雖然此方法缺乏自S3睡眠狀態喚醒的效能優勢,但其仍提供上文所描述的減少記憶體使用的益處。另外,在減少記憶體使用的情況下能減少重新繼續時間,此是因為自磁碟的所保存記憶體內容的傳遞隨所保存記憶體的量而線性地增加,使得在保存較少記憶體內容的情況下,要求較少時間以用於S4式樣的重新繼續。
在另一實施例中,使用者起始OS切換事件,且作業系統經組態以支援低電力狀態S0,但亦支援S3抑或S4睡眠狀態。在此狀況下,實施例首先自低電力狀態S0喚醒系統且接著使用S3睡眠狀態(若支援)或S4睡眠狀態。使用其他睡眠狀態以便將控制傳遞回至韌體,其中系統處於使其便利於讀取所儲存記憶體內容且將控制傳遞至替代OS的狀態,而系統裝置處於靜止狀態。
在處置切換事件之前,在實施例中,裝置韌體可已首先驗證計算裝置的能力以執行本文中所描述的增強型雙OS機制。圖3描繪由本發明的實施例所執行的用以在增強型雙OS計算裝置中處置切換事件的例示性步驟序列。作業系統切換序列藉由處於完全關機(G3)電力狀態的計算裝置而開始。在將電力施加至計算裝置之後,開始開機序列(步驟300)。最初,在預OS開機程序期間 (在載入作業系統之前),本發明的裝置韌體可檢查以查 看系統是否能夠支援本文中所描述的增強型雙OS行為(步驟301)。此偵測可涉及確保存在可用以支援所保存重疊揮發性記憶體內容的足夠非揮發性儲存器。作為一實例,韌體可檢查是否附接SSD儲存裝置且準備所要求分割區。作為另一實例,韌體可檢查主機板上是否存在次要快閃記憶體裝置且已抹除所述裝置。作為又一實例,韌體可檢查是否附接硬碟機且準備所要求分割區。作為另一實例,韌體可檢查是否存在硬碟或SSD,且是否存在足夠空間以產生所要求分割區。若並不存在用以支援增強型雙OS行為的所述條件,則由韌體停用增強型雙OS行為(步驟302)。替代地,在此條件下,雙OS支援可根據先前條件繼續操作,且記憶體映像可被調整以保留用於第二OS的記憶體。
若存在用以支援增強型雙OS行為的條件(亦 即,存在足夠非揮發性儲存器)(步驟301),則由韌體啟用增強型雙OS行為且將第一OS開機(亦即,載入至記憶體中)(步驟304)。隨後,在計算裝置的正常操作期間,可偵測到使用者起始的切換事件且產生睡眠狀態請求(步驟306)。舉例而言,可告知作業系統進入S4睡眠狀態。裝置韌體進行檢查以查看是否已啟用增強型雙OS行為(步驟307)。若尚未啟用增強型雙OS行為(步驟307),則計算裝置進入所請求睡眠狀態且在完全休眠之後根據習知技術切換作業系統(步驟308)。若已啟用 增強型雙OS行為(步驟307),則韌體如上文所描述地處置請求(例如,進入不同睡眠狀態、產生僅CPU重設等)(步驟310),將重疊揮發性記憶體位置的內容保存至非揮發性儲存器(步驟312),且將第二OS載入至揮發性記憶體中(步驟314),之後在第二OS的控制下重新繼續計算裝置的正常操作。
儘管本文中所含有的描述已描述雙OS系統, 但應瞭解,在一個實施例中,裝置韌體在兩個以上作業系統之間切換的多OS系統亦屬於本發明的範疇內。
圖4描繪由本發明的實施例中的第一以及第 二作業系統所使用的重疊揮發性記憶體位置的實例。在此圖式中,左欄繪示用於第一OS的例示性記憶體映像(400a)。中間欄繪示用於相比第一OS具有較小記憶體使用量的第二OS的例示性記憶體映像(400b)。右欄繪示描繪重疊記憶體的組合式記憶體映像(400c)。在一個實施例中,第一且較大OS可為WINDOWS作業系統,且第二且較小OS可為ANROID作業系統。所有三個記憶體映像(400a至400c)包含分配給韌體(諸如,UEFI韌體402)、硬體記憶體映射I/O 404以及影子記憶體430的記憶體位置。第一且較大OS記憶體映像400a亦包含分配給第一OS、其驅動程式以及應用程式406的大量揮發性記憶體。相比之下,較小第二OS的記憶體映像包含分別分配給第二OS、驅動程式以及應用程式408以及第二OS資料409的揮發性記憶體中的兩個較小位置。如組合式記憶 體映像400c可見,當增強型雙OS行為系統利用較大以及較小OS兩者時,因為較小OS的通常較小的記憶體使用量,所以重疊記憶體位置一410以及重疊記憶體位置二420將通常表示較小OS的記憶體使用(在上文的實例中為Android OS)。然而,在作業系統為相同類型的作業系統的兩個不同執行個體的狀況下,重疊記憶體將為兩個作業系統的記憶體映像之間的相交部分。當切換作業系統時,本發明的實施例將重疊記憶體位置一410以及重疊記憶體位置二420的內容交換出至非揮發性儲存器。在所述即時實例中,將把WINDOWS OS作為第一OS初始地載入至記憶體中。後續切換至ANDROID OS將僅將重疊記憶體位置一410以及重疊記憶體位置二420中的WINDOWS OS部分保存至非揮發性儲存器,此是因為第一OS的剩餘部分將保持於揮發性記憶體位置406中而不由ANDROID OS使用且將在切換程序期間被維持。結果,當接著隨後重新啟動WINDOWS OS時,將僅需要載入先前所保存內容而非整個OS,因此加快切換程序。儘管上文的實例已集中於WINDOWS以及ANDROID作業系統,但應瞭解,亦可由本發明的實施例切換其他作業系統。
圖5描繪適於實踐本發明的實施例的例示性 環境。計算裝置500包含用於處理指令的CPU 502。計算裝置500可為PC、膝上型電腦、平板計算裝置、伺服器、智慧型電話,或裝備有處理器且能夠支援本文中所描 述的增強型雙OS行為的一些其他類型的計算裝置。CPU 502可支援SMM。然而,應理解,在不脫離本發明的範疇的情況下,亦可藉由其他單獨執行環境(諸如,ARM處理器中的TrustZone(TEE))替換上文描述中對SMM的參考。可由使用者501使用輸入裝置530存取計算裝置。 顯示器520可與計算裝置500通信且可由使用者501檢視。
計算裝置500可包含諸如隨機存取記憶體(RAM)的揮發性記憶體504。儲存於硬碟機510或在計算裝置500中或與所述計算裝置通信的位置中的其他非揮發性儲存器上的第一OS 512或第二OS 514可作為由計算裝置所執行的開機程序的部分載入至記憶體504中,且隨後可如本文中所描述地進行切換。計算裝置500亦可包含快閃記憶體或其他ROM 520。在一些狀況下,系統設計可併有多個快閃記憶體ROM裝置。ROM 520可包含可在計算裝置的不同操作點處操作的如上文所描述的韌體525。韌體525可為UEFI韌體。然而,雖然本文中的描述描述利用UEFI韌體的實施,但在不脫離本發明的範疇的情況下可使用並不符合UEFI規範的其他韌體實施。舉例而言,可利用CoreBootTM或uBootTM。計算裝置500可支援如本文中所描述的增強型雙OS行為,當在第一OS 512與第二OS 514之間切換時,所述行為允許將揮發性記憶體504中的重疊記憶體位置的內容保存至非揮發性儲存器(諸如(但不限於)硬碟機510或ROM 520)。
將瞭解,可實施除參看圖式所特定描述的彼 等實施例之外的本發明的其他實施例。可由本發明的實施例利用支援用以處置S3睡眠狀態的必要睡眠狀態基礎架構的另外其他作業系統。
可將本發明實施例中的部分或全部提供為體 現於一或多個非暫時性媒體上或媒體中的一或多個電腦可讀程式或程式碼。媒體可為(但不限於)硬碟、光碟、數位影音光碟、ROM、PROM、EPROM、EEPROM、快閃記憶體、RAM或磁帶。大體而言,可以任何計算語言實施電腦可讀程式或程式碼。
由於可在不脫離本發明的範疇的情況下作出 某些改變,因此希望將上文描述中所含有或隨附圖式中所繪示的所有物質解釋為說明性而非字面意義。習此相關技藝之人士將認識到,可在不脫離本發明的範疇的情況下,變更圖式中所描繪的步驟序列以及架構,且本文中所含有的說明為本發明的眾多可能描繪的單數實例。
本發明的實例實施例的前述描述提供說明以 及描述,但並不意欲為詳盡的或將本發明限為所揭露的精確形式。有可能根據上文教示進行修改以及變化或可自本發明的實踐獲得修改以及變化。舉例而言,雖然已描述一系列動作,但可在與本發明原理一致的其他實施中修改動作的次序。另外,可並行地執行非相依性動作。
400a‧‧‧第一且較大OS記憶體映像
400b‧‧‧第二且較小OS記憶體映像
400c‧‧‧組合式記憶體映像
402‧‧‧UEFI韌體
404‧‧‧硬體記憶體映射I/O
406‧‧‧第一OS、驅動程式以及應用程式/揮發性記憶體位置
408‧‧‧第二OS、驅動程式以及應用程式
409‧‧‧第二OS資料
410‧‧‧重疊記憶體位置一
420‧‧‧重疊記憶體位置二
430‧‧‧影子記憶體

Claims (20)

  1. 一種用於在裝備有韌體以及包含第一OS以及第二OS的增強型雙作業系統(OS)的計算裝置中切換作業系統的計算裝置實施方法,所述方法包括:將所述第一OS載入至所述計算裝置的揮發性記憶體中;識別請求對作業系統進行切換的使用者起始的切換事件;回應於所述使用者起始的切換事件,藉由所述裝置韌體將所述揮發性記憶體中用於所述第一OS的重疊記憶體位置的內容保存至非揮發性儲存器,所述重疊記憶體位置亦由所述第二OS使用;將用於第二OS的內容自非揮發性儲存器載入至所述揮發性記憶體中的所述重疊記憶體位置;以及在所述第二OS的控制下重新繼續所述計算裝置的操作。
  2. 如申請專利範圍第1項所述的方法,其進一步包括:識別請求對作業系統進行第二切換的第二使用者起始的切換事件;回應於所述第二切換事件,藉由所述裝置韌體將由所述第二OS所使用的所述重疊記憶體位置的內容保存至非揮發性儲存器;將由所述第一OS所使用的來自所述重疊記憶體位置 的所述先前所保存內容自所述非揮發性儲存器載入至所述揮發性記憶體中的所述重疊記憶體位置;以及在所述第一OS的控制下重新繼續所述計算裝置的操作。
  3. 如申請專利範圍第1項所述的方法,其中所述使用者起始的切換事件觸發對所述計算裝置的睡眠狀態請求,且其進一步包括:使用裝置韌體處置所述睡眠狀態請求,所述裝置韌體設定喚醒事件且致使轉變至不同於所述所請求睡眠狀態的睡眠狀態。
  4. 如申請專利範圍第3項所述的方法,其中所述所請求睡眠狀態為S4休眠睡眠狀態且所述韌體致使轉變至S3暫時中止睡眠狀態而非所述所請求S4休眠睡眠狀態。
  5. 如申請專利範圍第1項所述的方法,其中所述使用者起始的切換事件產生對所述計算裝置的睡眠狀態請求,且其進一步包括:使用裝置韌體處置所述睡眠狀態請求,所述裝置韌體觸發僅中央處理單元(CPU)重設而非所述所請求睡眠狀態。
  6. 如申請專利範圍第1項所述的方法,其中所述使用者起始的切換事件由所述裝置韌體截獲,所述裝置韌體致使所述計算裝置轉變至系統管理模式(SMM)。
  7. 如申請專利範圍第1項所述的方法,其中所述第一OS相比所述第二OS要求所述揮發性記憶體中的較小量記 憶體。
  8. 如申請專利範圍第1項所述的方法,其中所述第一OS相比所述第二OS要求所述揮發性記憶體中的較大量記憶體。
  9. 如申請專利範圍第1項所述的方法,其中所述第一OS以及所述第二OS為相同類型的OS。
  10. 一種保持用於在裝備有韌體以及包含第一OS以及第二OS的增強型雙作業系統(OS)的計算裝置中切換作業系統的電腦可執行指令的非暫時性媒體,所述指令在執行時致使所述計算裝置進行如下操作:將所述第一OS載入至所述計算裝置的揮發性記憶體中;識別請求對作業系統進行切換的使用者起始的切換事件;回應於所述使用者起始的切換事件,藉由所述裝置韌體將所述揮發性記憶體中用於所述第一OS的重疊記憶體位置的內容保存至非揮發性儲存器,所述重疊記憶體位置亦由所述第二OS使用;將用於第二OS的內容自非揮發性儲存器載入至所述揮發性記憶體中的所述重疊記憶體位置;以及在所述第二OS的控制下重新繼續所述計算裝置的操作。
  11. 如申請專利範圍第10項所述的媒體,其中所述指令在執行時進一步致使所述計算裝置進行如下操作: 識別請求對作業系統進行第二切換的第二使用者起始的切換事件;回應於所述第二切換事件,藉由所述裝置韌體將由所述第二OS所使用的所述重疊記憶體位置的內容保存至非揮發性儲存器;將由所述第一OS所使用的來自所述重疊記憶體位置的所述先前所保存內容自所述非揮發性儲存器載入至所述揮發性記憶體中的所述重疊記憶體位置;以及在所述第一OS的控制下重新繼續所述計算裝置的操作。
  12. 如申請專利範圍第10項所述的媒體,其中所述使用者起始的切換事件觸發對所述計算裝置的睡眠狀態請求,且其中所述指令在執行時進一步致使所述計算裝置進行如下操作:使用裝置韌體處置所述睡眠狀態請求,所述裝置韌體設定喚醒事件且致使轉變至不同於所述所請求睡眠狀態的睡眠狀態。
  13. 如申請專利範圍第12項所述的媒體,其中所述所請求睡眠狀態為S4休眠睡眠狀態且所述韌體致使轉變至S3暫時中止睡眠狀態而非所述所請求S4休眠睡眠狀態。
  14. 如申請專利範圍第10項所述的媒體,其中所述使用者起始的切換事件產生對所述計算裝置的睡眠狀態請求,且所述指令在執行時進一步致使所述計算裝置進行如下操作: 使用裝置韌體處置所述睡眠狀態請求,所述裝置韌體觸發僅中央處理單元(CPU)重設而非所述所請求睡眠狀態。
  15. 如申請專利範圍第10項所述的媒體,其中所述使用者起始的切換事件由所述裝置韌體截獲,所述裝置韌體致使所述計算裝置轉變至系統管理模式(SMM)。
  16. 如申請專利範圍第10項所述的媒體,其中所述第一OS相比所述第二OS要求所述揮發性記憶體中的較小量記憶體。
  17. 如申請專利範圍第10項所述的媒體,其中所述第一OS相比所述第二OS要求所述揮發性記憶體中的較大量記憶體。
  18. 如申請專利範圍第10項所述的媒體,其中所述第一OS以及所述第二OS為相同類型的OS。
  19. 一種裝備有韌體以及包含第一OS以及第二OS的增強型雙作業系統(OS)的計算裝置,其包括:一中央處理單元(CPU);一揮發性記憶體;一非揮發性儲存器;以及一裝置韌體,其經組態以進行如下操作:將所述第一OS載入至所述揮發性記憶體中;識別請求對作業系統進行切換的使用者起始的切換事件;回應於所述使用者起始的切換事件,將所述揮發性記 憶體中用於所述第一OS的重疊記憶體位置的內容保存至非揮發性儲存器,所述重疊記憶體位置亦由所述第二OS使用;以及將用於第二OS的內容自所述非揮發性儲存器載入至所述揮發性記憶體中的所述重疊記憶體位置,其中在所述第二OS的控制下重新繼續所述計算裝置的操作。
  20. 如申請專利範圍第19項所述的計算裝置,其中所述使用者起始的切換事件觸發對所述計算裝置的睡眠狀態請求,且所述裝置韌體經組態以進行如下操作:藉由設定喚醒事件且致使轉變至不同於所述所請求睡眠狀態的睡眠狀態而處置所述睡眠狀態請求。
TW103136463A 2013-10-23 2014-10-22 用於雙作業系統記憶體切換的系統及方法 TW201525869A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US201361894537P 2013-10-23 2013-10-23

Publications (1)

Publication Number Publication Date
TW201525869A true TW201525869A (zh) 2015-07-01

Family

ID=52827240

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103136463A TW201525869A (zh) 2013-10-23 2014-10-22 用於雙作業系統記憶體切換的系統及方法

Country Status (2)

Country Link
US (1) US10007552B2 (zh)
TW (1) TW201525869A (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI588747B (zh) * 2014-01-14 2017-06-21 仁寶電腦工業股份有限公司 切換作業系統的方法及電子裝置
US9690596B1 (en) * 2014-09-02 2017-06-27 Phoenix Technologies Ltd. Firmware based runtime operating system switch
CN107004098B (zh) * 2015-05-28 2020-10-16 宇龙计算机通信科技(深圳)有限公司 一种系统切换方法、装置和终端
KR102465927B1 (ko) * 2016-01-26 2022-11-14 삼성전자주식회사 복수의 운영 체제 환경에서의 하이버네이션 운용 방법 및 장치
KR102494241B1 (ko) * 2016-08-18 2023-02-03 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법
CN106843798B (zh) * 2016-10-20 2019-12-17 广州视源电子科技股份有限公司 智能交互平板内多通道切换方法及装置
US10437310B2 (en) * 2016-12-21 2019-10-08 Intel Corporation Technologies for secure hybrid standby power management
US20190004818A1 (en) * 2017-06-29 2019-01-03 American Megatrends Inc. Method of UEFI Shell for Supporting Power Saving Mode and Computer System thereof
US10740111B2 (en) * 2018-05-01 2020-08-11 Dell Products L.P. System and method of restoring settings of information handling systems
FR3114670A1 (fr) * 2020-09-25 2022-04-01 Stmicroelectronics S.R.L. Elément sécurisé embarqué
US20220004625A1 (en) * 2019-03-26 2022-01-06 Stmicroelectronics S.R.L. Embedded secure element
FR3114671A1 (fr) * 2020-09-25 2022-04-01 Stmicroelectronics S.R.L. Elément sécurisé embarqué
WO2022063720A1 (en) 2020-09-25 2022-03-31 Stmicroelectronics S.R.L. Memory management for applications of a multiple operating systems embedded secure element

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6678712B1 (en) * 1996-01-19 2004-01-13 International Business Machines Corporation Method and system for executing a program under one of a plurality of mutually exclusive operating environments
JP3330569B2 (ja) * 1999-09-28 2002-09-30 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータの制御方法、コンピュータ及び記録媒体
US7356677B1 (en) * 2001-10-19 2008-04-08 Flash Vos, Inc. Computer system capable of fast switching between multiple operating systems and applications
US7529921B2 (en) * 2004-12-17 2009-05-05 Cardiac Pacemakers, Inc. Fast initialization of medical device system having multiple operating systems
WO2007005562A2 (en) 2005-06-30 2007-01-11 Phoenix Technologies Ltd. Shared file system management between independent operating systems
US20080126879A1 (en) * 2006-09-27 2008-05-29 Rajeev Tiwari Method and system for a reliable kernel core dump on multiple partitioned platform
US8046570B2 (en) * 2007-02-06 2011-10-25 Microsoft Corporation Supporting multiple operating systems in media devices
US8504850B2 (en) * 2008-09-08 2013-08-06 Via Technologies, Inc. Method and controller for power management
US8433889B2 (en) * 2010-04-28 2013-04-30 Acer Cloud Technology, Inc. Operating system context switching
JP5521824B2 (ja) * 2010-06-24 2014-06-18 富士通株式会社 情報処理装置及び起動方法
WO2012163275A1 (zh) * 2011-05-30 2012-12-06 联想(北京)有限公司 控制方法、控制装置以及计算机系统
KR101780052B1 (ko) * 2011-08-24 2017-09-19 한국전자통신연구원 정보처리 시스템에서 운영체제 전환방법
US20130297924A1 (en) * 2012-04-03 2013-11-07 Insyde Software Method of running multiple operating systems on an x86-based computer
US9286097B2 (en) * 2013-07-23 2016-03-15 Intel Corporation Switching a first OS in a foreground to a standby state in response to a system event and resuming a second OS from a background
US9372996B2 (en) * 2014-05-15 2016-06-21 International Business Machines Corporation Protecting data owned by an operating system in a multi-operating system mobile environment

Also Published As

Publication number Publication date
US20150113257A1 (en) 2015-04-23
US10007552B2 (en) 2018-06-26

Similar Documents

Publication Publication Date Title
TW201525869A (zh) 用於雙作業系統記憶體切換的系統及方法
TWI436199B (zh) 電源管理控制器與方法
US9384007B2 (en) Memory virtualization-based snapshot boot apparatus and method
US9189248B2 (en) Specialized boot path for speeding up resume from sleep state
EP2581826B1 (en) Method and device for cold starting android mobile terminal
CN114879828A (zh) 具有持久性存储器存储装置的固件接口
US20120311240A1 (en) Information processing apparatus, information processing method, and storage medium
US20170147363A1 (en) System and method for reducing hibernate and resume time
US10890963B2 (en) System and method for platform sleep state enhancements using non-volatile dual in-line memory modules
KR20140121233A (ko) 부트로더에 의한 운영 체제 부팅 기능의 전자 장치, 방법 및 저장 매체
US20150347155A1 (en) Switching between operational contexts
WO2021233363A1 (zh) 计算设备及其bios更新方法和介质
TW201531867A (zh) 用以在作業系統之間轉移資料之系統及方法
TWI546661B (zh) 使用狀態資訊回復系統之技術
US9910677B2 (en) Operating environment switching between a primary and a secondary operating system
KR20080057688A (ko) 비휘발성 메모리를 이용한 운영체계 부팅 방법
US20120311312A1 (en) Fast Boot Via State Recreation
US20190018475A1 (en) Update memory management information to boot an electronic device from a reduced power mode
US20130166852A1 (en) Method for hibernation mechanism and computer system therefor
KR100994723B1 (ko) 시스템에서 초기 구동시간을 단축시키는 선택적 서스펜드 리쥼 방법 및 그 기록매체
TWI605332B (zh) 使用唯cpu重設的支援先進組態與電力介面(acpi)休眠狀態的方法及裝置
JP2010277578A (ja) 電子装置及びそのブーティング方法
US20150317181A1 (en) Operating system switching method
JP5894044B2 (ja) ハイブリッド・ディスク・ドライブにデータを記憶する方法および携帯式コンピュータ
JP3702233B2 (ja) 情報処理システムおよびプログラム実行モード制御方法