2或104 可以控制它自己的用戶應(yīng)用232,設(shè)備驅(qū)動程序234等等的操作。
[0026] 圖3示出了根據(jù)各實施例的用于切換操作系統(tǒng)的方法。如圖所示,切換0S的方法 300可包括框302至310中的操作。該操作可以由前面描述的VMM106執(zhí)行。
[0027] 在實施例中,方法300可以開始于框302。在框302中,在接通電源、復(fù)位或其它 系統(tǒng)事件中,計算裝置的硬件元件可以被初始化。從框302,方法300可前進(jìn)到框304。在 304,VMM可以被啟動。作為啟動過程的一部分,VMM可以讀取每個VM的配置狀態(tài)。此外, VMM可以在后臺VM啟動0S中的一個,如OSa,也可以在前臺VM啟動0S中的另外一個,如 〇Si3。然而,在啟動后臺VM(啟動前臺VM之前或之后),VMM可以進(jìn)一步把后臺VM(因此 〇Sa)置于待機(jī)狀態(tài)。
[0028] 從框304,方法300可以前進(jìn)到框306。在框306中,VMM可監(jiān)視對接或脫離對接事 件。在檢測到對接/脫離對接事件時,方法300可有選擇性地進(jìn)行到框308。在框308中, VMM可提示用戶確認(rèn)用戶是否期望使0S切換。從框306或308,方法300可以進(jìn)行到框310。 在框310中,VMM可以對0S進(jìn)行切換。VMM可將當(dāng)前的前臺VM(由此是其0S)置于待機(jī)狀 態(tài),然后使VM進(jìn)入后臺。之后,VMM可轉(zhuǎn)移執(zhí)行控制至之前處于待機(jī)狀態(tài)的后臺VM(由此 其0S)恢復(fù),并將先前待機(jī)的后臺VM(現(xiàn)在被恢復(fù)或正處于恢復(fù)過程中)移動到前臺。
[0029] 當(dāng)處于待機(jī)狀態(tài)時,后臺VM(由此其0S)不接收優(yōu)先權(quán)也不接收中斷。前臺VM(由 此其0S)得到完全優(yōu)先權(quán)并接收所有中斷。作為結(jié)果,在方法300的作用下,不需要利用定 時器或其他機(jī)制將中斷傳遞到后臺VM/0S。因此,并發(fā)性和/或硬件資源的共享問題是可以 避免的。因此,總體而言,根據(jù)本公開內(nèi)容的實施例,切換0S的開銷相對較低,并且可以有 效地實現(xiàn)。
[0030] 在實施例中,在框310中,當(dāng)從一個0S切換到另一個0S時,整個平臺可能會需要 經(jīng)過一個重啟的過程。重啟包括重置微處理器和芯片組。此外,從一個操作系統(tǒng)切換到另 一個操作系統(tǒng)還包括把"切換自" 0S的上下文還原到"切換至" 0S當(dāng)中。
[0031] 在實施例中,一旦檢測到"切換自" 0S生成睡眠事件(例如,SLP_EN睡眠啟用操作 的斷言)開始重啟。此外,重啟在平臺固件中通過高度簡化的睡眠周期(S3)實現(xiàn)。這種高 度簡化的睡眠循環(huán)是可以實現(xiàn)的,比如通過在平臺固件自身設(shè)置恢復(fù)目的地,避開例如高 達(dá)85%的常規(guī)初始化時間。例如,"切換自"0S所產(chǎn)生的睡眠事件可以由RST驅(qū)動檢測。在 檢測中,RST驅(qū)動器可以將"切換自"0S的上下文保存到存儲器中,變成持久性存儲。更進(jìn) 一步的,RST驅(qū)動器可利用指示平臺硬件進(jìn)入睡眠狀態(tài)的信息和指向RST驅(qū)動器的用于恢 復(fù)平臺的恢復(fù)向量編程平臺的睡眠狀態(tài)寄存器。因此,進(jìn)入到睡眠狀態(tài)時,平臺可以馬上把 控制轉(zhuǎn)回到RST,這樣反過來又能馬上恢復(fù)平臺。這種高度簡化的重啟可以潛在的減少重啟 時間大約250ms,比傳統(tǒng)的重啟時間減少至少2秒或更多。
[0032] 在實施例中,這種保存和恢復(fù)"切換自"和"切換至"操作系統(tǒng)的上下文也基本 上可以通過保存和恢復(fù)基本上對應(yīng)于兩個系統(tǒng)中存儲器較小的一個存儲器量來簡化。例 如,如果OS1是Windows?,OS2是安卓,他們的存儲器需要分別是4GB和512MB。當(dāng) 切換Wi_ n d〇w s ?:操作系統(tǒng)時,取代保存和恢復(fù)全部的4 GB,本公開的實施例可在切換出 Windows?l時只保存Windows?的約512MB,同樣當(dāng)回到Windows?!時只恢復(fù)所保存的 Windows?的512MB。因此,保存和恢復(fù)的容量都會得到大幅度的精簡。
[0033] 在實施例中,方法300可在無需308框的可選提示操作下進(jìn)行。在實施例中,方法 300可以在不管是否給予用戶選擇的情況下進(jìn)行,或在另一種情況下,總是在不提示用戶的 情況下切換操作系統(tǒng)。
[0034] 現(xiàn)在參考圖4,根據(jù)各實施例,說明適于圖1所示的配置使用的示例計算機(jī)。如圖 所示,計算機(jī)400可以包括一個或多個處理器或處理器核402和系統(tǒng)存儲器404。在實施 例中,多處理器核402可設(shè)置在一個管芯上。出于本申請包括權(quán)利要求書的目的,可認(rèn)為術(shù) 語"處理器"和"處理器核"是同義的,除非上下文另外清楚地作出要求。此外,計算機(jī)400 可包括大容量存儲設(shè)備406 (諸如,盤、硬驅(qū)動器、緊致盤只讀存儲器(CD-ROM)等)、輸入/ 輸出(I/O)設(shè)備408(諸如,顯示器、鍵盤、光標(biāo)控制器等)和通信接口 410(諸如,網(wǎng)絡(luò)接口 卡、調(diào)制解調(diào)器等)。在實施例中,顯示單元可以是敏感的觸摸屏包括顯示屏,一個或多個處 理器,存儲介質(zhì)和通信元件,進(jìn)一步的它可以從一個帶有鍵盤的基板上插拔??山?jīng)由系統(tǒng)總 線412 (其可表示一個或多個總線)將這些元件彼此耦合。在多個總線的情況下,可由一個 或多個總線橋(沒有示出)來橋接它們。
[0035] 這些元件中的每一個可執(zhí)行本領(lǐng)域中已知的其常規(guī)功能。具體而言,可采用系統(tǒng) 存儲器404和大容量存儲設(shè)備406來存儲編程指令的工作副本和永久副本,這些編程指令 實現(xiàn)先前所述的操作,例如,但不限于,與VMM106相關(guān)聯(lián)的操作,并且被指示為計算邏輯 422??捎墒芴幚砥?02支持的匯編指令或可編譯成此類指令的諸如C之類的高級語言來 實現(xiàn)各種元件。
[0036]可通過諸如壓縮盤(CD)之類的分發(fā)介質(zhì)(未示出)或通過通信接口 410(來自分 布式服務(wù)器(未示出))來將編程指令的永久副本放置在工廠或現(xiàn)場的永久存儲606中。 即,具有代理程序的實現(xiàn)的一個或多個分發(fā)介質(zhì)可用于分發(fā)代理并對各計算設(shè)備編程。
[0037] 這些元件410-412的個數(shù)、能力和/或容量可能會發(fā)生變化,這取決于計算機(jī)400 的預(yù)期的用途,例如計算機(jī)400是否是智能電話、平板、超級本或筆記本電腦。這些元件 410-412的構(gòu)成是已知的,否則將不作進(jìn)一步說明。
[0038] 圖5示出示例非臨時性計算機(jī)可讀存儲介質(zhì),其具備可以配置與VMM106相關(guān)的操 作或選擇的指令,如前根據(jù)不同的實施例所述。如圖所示,非臨時性計算機(jī)可讀存儲介質(zhì) 502可以包括多個程序指令504。編程指令504可配置為使一個設(shè)備,例如,計算機(jī)400,響 應(yīng)于執(zhí)行的編程指令,例如,圖3中的各種操作方法。在另一實施例中,與本實例不同的是, 編程指令504可以設(shè)置多個非暫時性的計算機(jī)可讀存儲介質(zhì)代替。在其他實施例中,編程 指令504是可在臨時計算機(jī)可讀信號中編碼的。
[0039] 返回參照圖4,對于一個實施例中,處理器402中的至少一個可以與計算邏輯 422 (代替存儲在系統(tǒng)存儲器404和/或大容量存儲設(shè)備406) -起打包,用來配置實施圖3 方法中的各方面。對于一種實施例中,處理器402中的至少一個可以與計算邏輯422配置 用來實施圖3的方法的各方面來形成一個封裝系統(tǒng)(SiP)。對一個實施例來說,處理器402 中的至少一個可以與配置用來實施圖3方法中的各個方面的計算邏輯422集成在一個同一 芯片上。對一個實施例來說,處理器402中的至少一個可以與配置用來實施圖3的方法的 各