專利名稱:終端設(shè)備以及使終端設(shè)備支持操作系統(tǒng)快速切換的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種終端設(shè)備以及使終端設(shè)備支持操作系統(tǒng)快速切換的方法。
背景技術(shù):
當(dāng)前,對于諸如智能手機(jī)或平板電腦之類的終端設(shè)備來說,存在多種操作系統(tǒng)(如,android或Win 8等)可供安裝以及使用。由于這些操作系統(tǒng)通?;ゲ患嫒荩虼藢τ诎惭b有多種相互不兼容的操作系統(tǒng)的終端設(shè)備來說,在終端設(shè)備上安裝的多種操作系統(tǒng)的啟動以及切換通常是不便并且非常耗時(shí)。例如,如果使用android操作系統(tǒng)的用戶希望切換到Win 8,他通常不得不重新開機(jī)并且選擇其所希望使用的操作系統(tǒng)。
發(fā)明內(nèi)容
為了解決現(xiàn)有技術(shù)中的上述技術(shù)問題,根據(jù)本發(fā)明的一方面,提供一種使終端設(shè)備支持操作系統(tǒng)快速切換的方法,該終端設(shè)備包括用于存儲第一固件、第二固件、第三固件、第一操作系統(tǒng)以及第二操作系統(tǒng)的第一存儲單元;以及第二存儲單元,第二存儲單元的存取速度大于所述第一存儲單元的存取速度;該方法包括響應(yīng)于預(yù)設(shè)的啟動命令,基于第一固件對第二存儲單元進(jìn)行初始化;將第二存儲單元?jiǎng)澐譃榈谝淮鎯^(qū)域以及第二存儲區(qū)域;將第一操作系統(tǒng)導(dǎo)入到所述第一存儲區(qū)域內(nèi);將第二操作系統(tǒng)導(dǎo)入到所述第二存儲區(qū)域內(nèi);選擇加載第二固件和第三固件之一。根據(jù)本發(fā)明的另一個(gè)實(shí)施例,所述方法進(jìn)一步包括如果選擇加載所述第二固件,則基于所加載的所述第二固件將所述第一操作系統(tǒng)導(dǎo)入到所述第一存儲區(qū)域,并且從所述第一存儲區(qū)域加載所述第一操作系統(tǒng);或者如果選擇加載所述第三固件,則基于所加載的所述第三固件將所述第二操作系統(tǒng)導(dǎo)入到所述第二存儲區(qū)域,并且從所述第二存儲區(qū)域加載所述第二操作系統(tǒng)。根據(jù)本發(fā)明的另一個(gè)實(shí)施例,所述方法進(jìn)一步包括在將第二存儲單元?jiǎng)澐譃榈谝淮鎯^(qū)域以及第二存儲區(qū)域之后,基于第一固件將所述第一操作系統(tǒng)導(dǎo)入到所述第一存儲區(qū)域內(nèi)以及將所述第二操作系統(tǒng)導(dǎo)入到所述第二存儲區(qū)域內(nèi);如果選擇加載第二固件,則基于所加載的第二固件從第一存儲區(qū)域加載第一操作系統(tǒng);或者如果選擇加載第三固件,則基于所加載的第三固件從第二存儲區(qū)域加載所述第二操作系統(tǒng)。根據(jù)本發(fā)明的另一個(gè)實(shí)施例,其中第二固件限制第二存儲區(qū)域?qū)τ诘谝徊僮飨到y(tǒng)不可見;以及第三固件限制第一存儲區(qū)域?qū)τ诘诙僮飨到y(tǒng)不可見。根據(jù)本發(fā)明的另一個(gè)實(shí)施例,所述方法進(jìn)一步包括在第一操作系統(tǒng)啟動后,響應(yīng)于預(yù)設(shè)的切換命令,保存所述處理單元的當(dāng)前第一狀態(tài),并且將第一操作系統(tǒng)切換為第二操作系統(tǒng);或者在第二操作系統(tǒng)啟動后,響應(yīng)于預(yù)設(shè)的切換命令,保存處理單元的當(dāng)前第二狀態(tài),并且將第二操作系統(tǒng)切換為第一操作系統(tǒng)。此外,根據(jù)本發(fā)明的另一方面,提供一種終端設(shè)備,包括第一存儲單元,配置來存儲第一固件、第二固件、第三固件、第一操作系統(tǒng)以及第二操作系統(tǒng);第二存儲單元,其中第二存儲單元的存取速度大于第一存儲單元的存取速度;以及處理單元,配置來加載第一操作系統(tǒng)或第二操行系統(tǒng),其中響應(yīng)于預(yù)設(shè)的啟動命令,處理單元基于第一固件對第二存儲單元進(jìn)行初始化,將第二存儲單元?jiǎng)澐譃榈谝淮鎯^(qū)域以及第二存儲區(qū)域;以及處理單元基于第一固件選擇加載第二固件或第三固件。根據(jù)本發(fā)明的另一個(gè)實(shí)施例,其中如果處理單元選擇加載所述第二固件,則基于所加載的所述第二固件將所述第一操作系統(tǒng)導(dǎo)入到所述第一存儲區(qū)域,并且從所述第一存儲區(qū)域加載所述第一操作系統(tǒng);或者如果處理單元選擇加載所述第三固件,則基于所加載的所述第三固件將所述第二操作系統(tǒng)導(dǎo)入到所述第二存儲區(qū)域,并且從所述第二存儲區(qū)域加載所述第二操作系統(tǒng)。根據(jù)本發(fā)明的另一個(gè)實(shí)施例,其中在將第二存儲單元?jiǎng)澐譃榈谝淮鎯^(qū)域以及第二存儲區(qū)域之后,處理單元基于第一固件將所述第一操作系統(tǒng)導(dǎo)入到所述第一存儲區(qū)域內(nèi)以及將所述第二操作系統(tǒng)導(dǎo)入到所述第二存儲區(qū)域內(nèi);如果處理單元選擇加載所述第二固件,則處理單元基于所加載的第二固件從第一存儲區(qū)域加載第一操作系統(tǒng);或者如果處理單元選擇加載第三固件,則處理單元基于所加載的第三固件從第二存儲區(qū)域加載第二操作系統(tǒng)。根據(jù)本發(fā)明的另一個(gè)實(shí)施例,其中第二固件限制第二存儲區(qū)域?qū)τ诘谝徊僮飨到y(tǒng)不可見;以及第三固件限制第一存儲區(qū)域?qū)τ诘诙僮飨到y(tǒng)不可見。根據(jù)本發(fā)明的另一個(gè)實(shí)施例,其中在第一操作系統(tǒng)啟動后,響應(yīng)于預(yù)設(shè)的切換命令,處理單元保存其當(dāng)前的第一狀態(tài),并且將第一操作系統(tǒng)切換為第二操作系統(tǒng);或者在第二操作系統(tǒng)啟動后,響應(yīng)于預(yù)設(shè)的切換命令,處理單元保存其當(dāng)前的第二狀態(tài),并且將第二操作系統(tǒng)切換為所述第一操作系統(tǒng)。通過上述配置,通過第一固件將第一操作系統(tǒng)和第二操作系統(tǒng)預(yù)先導(dǎo)入到第二存儲單元(內(nèi)存)中,然后基于與第一操作系統(tǒng)和第二操作系統(tǒng)對應(yīng)的第二固件和第三固件來啟動第一操作系統(tǒng)和第二操作系統(tǒng),可以使終端設(shè)備靈活地支持多種不兼容的操作系統(tǒng)。此外,由于第一操作系統(tǒng)和第二操作系統(tǒng)已經(jīng)駐留在第二存儲單元(內(nèi)存)中,因此在切換操作系統(tǒng)的過程中,省去了加載另一操作系統(tǒng)的過程,由此縮短了切換操作系統(tǒng)所需的時(shí)間。
圖1是圖解根據(jù)本發(fā)明實(shí)施例的終端設(shè)備的結(jié)構(gòu)的方框圖;以及圖2是圖解根據(jù)本發(fā)明實(shí)施例的使終端設(shè)備支持操作系統(tǒng)快速切換的方法的流程圖。
具體實(shí)施例方式將參照附圖詳細(xì)描述根據(jù)本發(fā)明的各個(gè)實(shí)施例。這里,需要注意的是,在附圖中,將相同的附圖標(biāo)記賦予基本上具有相同或類似結(jié)構(gòu)和功能的組成部分,并且將省略關(guān)于它們的重復(fù)描述。下面,將參照圖1描述根據(jù)本發(fā)明一個(gè)實(shí)施例的終端設(shè)備。圖1是圖解根據(jù)本發(fā)明一個(gè)實(shí)施例的終端設(shè)備的結(jié)構(gòu)的示意圖。
如圖1所示,根據(jù)本實(shí)施例的終端設(shè)備(如,智能手機(jī)、筆記本和平板電腦等)可以包括存儲器11、內(nèi)存12以及處理器13。存儲器11可以由任意的閃存實(shí)現(xiàn),并且可以存儲包括操作系統(tǒng)、用戶數(shù)據(jù)之類的各種數(shù)據(jù)。根據(jù)本發(fā)明的實(shí)施例,存儲器11儲第一固件、第二固件、第三固件、第一操作系統(tǒng)(如,android)以及第二操作系統(tǒng)(如,Win 8)等等。這里,第一固件可以對終端設(shè)備的一部分元件(如,處理器13、內(nèi)存12等)進(jìn)行初始化,并且在內(nèi)存12的初始化完成之后將第一操作系統(tǒng)以及第二操作系統(tǒng)導(dǎo)入到內(nèi)存12中。此外,第二固件可以與第一操作系統(tǒng)對應(yīng),并且用于加載第一操作系統(tǒng)。例如,在第一操作系統(tǒng)是android的情況下,第二固件可以是bootloader固件。第三固件可以與第二操作系統(tǒng)對應(yīng),并且用于加載第二操作系統(tǒng)。例如,在第二操作系統(tǒng)是Win 8的情況下,第二固件可以是UEFI固件。這里,第二固件和第三固件不限于例舉的bootloader固件(用于android)和UEFI固件(用于Win 8),還可以是其它的用于相互不兼容的操作系統(tǒng)的固件。內(nèi)存12可以由任意類型的RAM組件實(shí)現(xiàn),并且可以在加電時(shí)存儲存儲器11中的一部分?jǐn)?shù)據(jù)。這里,顯然內(nèi)存12的存取速度要大于存儲器11的存取速度。處理器13可以由任意類型的處理單元、微處理單元等實(shí)現(xiàn)。根據(jù)本實(shí)施例,在諸如筆記本、平板電腦或智能手機(jī)之類的終端設(shè)備的啟動過程中,響應(yīng)于啟動命令(如,用戶按下開機(jī)鍵或選擇重啟終端設(shè)備),處理器13首先基于第一固件對第二存儲單元進(jìn)行初始化。然后處理器13基于第一固件將內(nèi)存12劃分為第一存儲區(qū)域以及第二存儲區(qū)域。然后處理器13將第一操作系統(tǒng)導(dǎo)入到內(nèi)存12的第一存儲區(qū)域內(nèi),并且將第二操作系統(tǒng)導(dǎo)入到內(nèi)存12的第二存儲區(qū)域內(nèi)。然后,處理器13基于預(yù)定的設(shè)置或輸入選擇加載第二固件和第三固件之一以啟動對應(yīng)的第一或第二操作系統(tǒng)。下面將詳細(xì)描述根據(jù)本發(fā)明實(shí)施例的終端設(shè)備執(zhí)行的操作。例如,在用戶按下開機(jī)鍵或選擇重啟終端設(shè)備之后,處理器13接收預(yù)定的開機(jī)指令。在接收到開機(jī)指令之后,處理器13開始加載第一固件并且基于該第一固件對終端設(shè)備的一部分硬件進(jìn)行初始化(如,處理器13和內(nèi)存12)。這里,由于對內(nèi)存12和處理器13的初始化對于本領(lǐng)域技術(shù)人員來說是熟知的,因此這里省略了關(guān)于上述操作的詳細(xì)描述。在基于第一固件對內(nèi)存12進(jìn)行初始化之后,可以從存儲器11向內(nèi)存12存儲一部分?jǐn)?shù)據(jù)。根據(jù)本發(fā)明的實(shí)施例,此時(shí),處理器13基于第一固件將內(nèi)存12劃分為第一存儲區(qū)域以及第二存儲區(qū)域。例如,假設(shè)內(nèi)存12的大小為512MB,處理器13可以基于第一固件將內(nèi)存12劃分為256MB的兩個(gè)存儲區(qū)域(第一存儲區(qū)域以及第二存儲區(qū)域)。此外,本發(fā)明不限于此,可以根據(jù)具體情況將內(nèi)存12劃分為不相等的兩個(gè)存儲區(qū)域。例如,如果第一操作系統(tǒng)占用較多的內(nèi)存空間,而第二操作系統(tǒng)占用內(nèi)存空間較少,則可以給第一操作系統(tǒng)分配較多的存儲區(qū)域作為第一存儲區(qū)域,并且可以給第二操作系統(tǒng)分配較少的存儲區(qū)域作為第二存儲區(qū)域。然后,根據(jù)本發(fā)明的一個(gè)實(shí)施例,處理器13可以基于第一固件內(nèi)的指令,將第一操作系統(tǒng)導(dǎo)入(寫入)到內(nèi)存12的第一存儲區(qū)域的預(yù)定區(qū)域內(nèi),并且將第二操作系統(tǒng)導(dǎo)入(寫入)到內(nèi)存12的第二存儲區(qū)域的預(yù)定區(qū)域內(nèi)。例如,處理器13可以將第一操作系統(tǒng)導(dǎo)入到第一存儲區(qū)域中從首地址開始的區(qū)域內(nèi),并且可以將第二操作系統(tǒng)導(dǎo)入到第二存儲區(qū)域中從首地址開始的區(qū)域內(nèi)。顯然,還可以將第一操作系統(tǒng)和第二操作系統(tǒng)分別導(dǎo)入到第一存儲區(qū)域和第二存儲區(qū)域內(nèi)的任意存儲空間上。此外,第一存儲區(qū)域和第二存儲區(qū)域中的剩余存儲空間可以在第一操作系統(tǒng)或第二操作系統(tǒng)執(zhí)行預(yù)定的程序時(shí)使用。在將第一操作系統(tǒng)導(dǎo)入(寫入)到內(nèi)存12的第一存儲區(qū)域,并且將第二操作系統(tǒng)導(dǎo)入(寫入)到內(nèi)存12的第二存儲區(qū)域之后,處理器13可以基于第一固件選擇加載第二固件還是第三固件。例如,可以配置第一固件的參數(shù)(例如,0對應(yīng)于第一操作系統(tǒng),而I對應(yīng)于第二操作系統(tǒng))使得處理器13可以確定需要加載第二固件還是第三固件。此外,第一固件還可以進(jìn)一步對終端設(shè)備的顯示單元(未示出)進(jìn)行初始化,使得可以在終端設(shè)備上顯示信息。在這種情況下,處理器13可以基于第一固件的指令在顯示單元上顯示選擇菜單以供用戶選擇第一操作系統(tǒng)或第二操作系統(tǒng)。此時(shí),處理器13可以基于用戶的輸入來確定用戶選擇了哪一個(gè)固件(或操作系統(tǒng))。如果基于預(yù)定的設(shè)置或用戶的輸入選擇了加載第二固件的情況下,處理器13加載該第二固件,并且基于該第二固件來加載第一操作系統(tǒng)。例如,在第一操作系統(tǒng)為android,而第二固件為bootloader的情況下,如果基于預(yù)定的設(shè)置或用戶的輸入選擇了加載bootloader固件的情況下,處理器13加載bootloader固件,并且基于bootloader固件來加載android操作系統(tǒng)。這里,基于bootloader固件來加載android操作系統(tǒng)的過程對于本領(lǐng)域技術(shù)人員來說是熟知的,因此這里省略了其詳細(xì)描述。這里,需要注意的是,第二固件需要對第二存儲區(qū)域進(jìn)行限制。例如在處理器13基于第二固件加載第一操作系統(tǒng)時(shí),第二固件向第一操作系統(tǒng)定義第一操作系統(tǒng)可用的內(nèi)存存儲空間。在這種情況下,第二固件需要限制該第二存儲區(qū)域?qū)τ诘谝徊僮飨到y(tǒng)不可見,也就是說第一操作系統(tǒng)不能使用內(nèi)存12中的第二存儲區(qū)域,其僅能使用內(nèi)存12中的第一存儲區(qū)域。這是因?yàn)?,如果第二存儲區(qū)域?qū)τ诘谝徊僮飨到y(tǒng)可見,則在第一操作系統(tǒng)中運(yùn)行某些程序時(shí),可能會覆蓋第二存儲區(qū)域中的第二操作系統(tǒng)的數(shù)據(jù),由此可能導(dǎo)致異常的出現(xiàn)。這里,可以由第一固件向第二固件通知有關(guān)內(nèi)存12的分配的信息,或者可以在第二固件中預(yù)先設(shè)置與第一存儲區(qū)域的范圍有關(guān)的信息。此外,如果基于預(yù)定的設(shè)置或用戶的輸入選擇了加載第三固件的情況下,處理器13加載該第三固件,并且基于該第三固件來加載第二操作系統(tǒng)。例如,在第二操作系統(tǒng)為Win 8,而第二固件為UEFI的情況下,如果基于預(yù)定的設(shè)置或用戶的輸入選擇了加載UEFI固件的情況下,處理器13加載該UEFI固件,并且基于UEFI固件來加載Win 8操作系統(tǒng)。類似地,第三固件需要對第一存儲區(qū)域進(jìn)行限制。例如在處理器13基于第三固件加載第二操作系統(tǒng)時(shí),第三固件向第二操作系統(tǒng)定義第二操作系統(tǒng)可用的內(nèi)存存儲空間。在這種情況下,第三固件需要限制該第一存儲區(qū)域?qū)τ诘诙僮飨到y(tǒng)不可見,也就是說第二操作系統(tǒng)不能使用內(nèi)存12中的第一存儲區(qū)域,其僅能使用內(nèi)存12中的第二存儲區(qū)域。這里,可以由第一固件向第三固件通知有關(guān)內(nèi)存12的分配的信息,或者可以在第三固件中預(yù)先設(shè)置與第二存儲區(qū)域的范圍有關(guān)的信息。在處理器13基于第二固件加載第一操作系統(tǒng),或基于第三固件加載第二操作系統(tǒng)之后。處理器13運(yùn)行該第一操作系統(tǒng)或第二操作系統(tǒng),使得用戶可以基于第一操作系統(tǒng)或第二操作系統(tǒng)提供的功能或在其上安裝的程序執(zhí)行預(yù)定的任務(wù)。
此外,本發(fā)明不限于之前描述的實(shí)施例,例如,還可以由第二固件以及第三固件代替第一固件完成加載第一操作系統(tǒng)以及第二操作系統(tǒng)的處理。具體地,可以在第二固件(而不是第一固件)中設(shè)置用于加載將第一操作系統(tǒng)導(dǎo)入到第一存儲區(qū)域的預(yù)定區(qū)域的指令,并且在第三固件(而不是第一固件)中設(shè)置用于加載將第一操作系統(tǒng)導(dǎo)入到第一存儲區(qū)域的預(yù)定區(qū)域的指令。在這種情況下,在處理器13基于第一固件將內(nèi)存12劃分為第一存儲區(qū)域以及第二存儲區(qū)域之后,在這種情況下,如果處理器13基于第一固件(如,參照預(yù)定的設(shè)置或用戶的輸入)選擇了加載第二固件,則處理器13加載該第二固件,基于所加載的第二固件將第一操作系統(tǒng)(如,android)導(dǎo)入到內(nèi)存12的第一存儲區(qū)域,然后從第一存儲區(qū)域加載該第一操作系統(tǒng),以便啟動該第一操作系統(tǒng)。此外,如果處理器13基于第一固件(如,參照預(yù)定的設(shè)置或用戶的輸入)選擇加載第三固件,則處理器13基于所加載的第三固件將第二操作系統(tǒng)(如,Win 8)導(dǎo)入到內(nèi)存12的第二存儲區(qū)域,然后從第二存儲區(qū)域加載該第二操作系統(tǒng),以便啟動該第一操作系統(tǒng)。。接下來,將描述切換終端設(shè)備的操作系統(tǒng)的過程。例如,在第一操作系統(tǒng)(如,android)啟動后,用戶可能希望使用另一操作系統(tǒng)(如,Win 8)。此時(shí),響應(yīng)于預(yù)設(shè)的切換命令,處理器13保存第一操作系統(tǒng)的當(dāng)前處理器狀態(tài),然后將第一操作系統(tǒng)切換為第二操作系統(tǒng)。具體地,例如,預(yù)設(shè)的切換命令可以是在第一操作系統(tǒng)提供的菜單中的切換指令,或者可以在終端設(shè)備上設(shè)置預(yù)定的物理或虛擬按鍵,并且在用戶按下該按鍵之后,產(chǎn)生操作系統(tǒng)切換指令并發(fā)送給處理器13。然后,處理器13響應(yīng)于操作系統(tǒng)的切換命令來保存處理器13的當(dāng)前處理器狀態(tài)(如,處理器中的各寄存器的數(shù)據(jù),當(dāng)前進(jìn)程的斷點(diǎn)等等,進(jìn)程調(diào)用數(shù)據(jù)的內(nèi)存地址等等)。這里,可以將當(dāng)前的處理器狀態(tài)存儲在存儲器11中。然后,處理器13檢查是否存在之前保存的與另一操作系統(tǒng)(如,Win 8)的處理器狀態(tài)相關(guān)的數(shù)據(jù)。如果不存在這樣的數(shù)據(jù),則表示另一操作系統(tǒng)還未啟動。此時(shí),需要啟動另一操作系統(tǒng)(即,第二操作系統(tǒng))。在這種情況下,處理器13可以通過與第二操作系統(tǒng)對應(yīng)的第三固件來啟動該第二操作系統(tǒng)(如,Win 8)。這里,由于第二操作系統(tǒng)已經(jīng)駐留在內(nèi)存12中,因此節(jié)省了將第二操作系統(tǒng)導(dǎo)入到內(nèi)存12的過程,由此減少操作系統(tǒng)的切換所需的時(shí)間。此外,如果存在之前保存的與另一操作系統(tǒng)(如,Win 8)的處理器狀態(tài)相關(guān)的數(shù)據(jù)。則表示另一操作系統(tǒng)已經(jīng)啟動并運(yùn)行過。此時(shí),不需要重新啟動另一操作系統(tǒng)(即,第二操作系統(tǒng))。在這種情況下,處理器13可以讀取之前保存的與另一操作系統(tǒng)(第二操作系統(tǒng))的處理器狀態(tài)相關(guān)的數(shù)據(jù)(如,處理器中的各寄存器的數(shù)據(jù),當(dāng)前進(jìn)程的斷點(diǎn)等等,進(jìn)程調(diào)用數(shù)據(jù)的內(nèi)存地址等等),并且基于這些數(shù)據(jù)恢復(fù)之前在第二操作系統(tǒng)被切換到第一操作系統(tǒng)時(shí)的處理器狀態(tài)。因此,可以在將第一操作系統(tǒng)切換到第二操作系統(tǒng)時(shí),恢復(fù)原來在第二操作系統(tǒng)中執(zhí)行的任務(wù)或程序,以將終端設(shè)備還原為在第二操作系統(tǒng)被切換時(shí)的狀態(tài)。在這種情況下,由于僅需要讀取之前保存的與另一操作系統(tǒng)(第二操作系統(tǒng))的處理器狀態(tài)相關(guān)的數(shù)據(jù),因此大大減少了切換操作系統(tǒng)所需的時(shí)間。類似地,在第二操作系統(tǒng)(如,Win 8)啟動后,且用戶希望使用另一操作系統(tǒng)(如,android)時(shí),響應(yīng)于預(yù)設(shè)的切換命令,處理器13保存第二操作系統(tǒng)的當(dāng)前處理器狀態(tài),然后將第二操作系統(tǒng)切換為第一操作系統(tǒng)。具體地,處理器13響應(yīng)于操作系統(tǒng)的切換命令來保存處理器13的當(dāng)前處理器狀態(tài)(如,處理器中的各寄存器的數(shù)據(jù),當(dāng)前進(jìn)程的斷點(diǎn)等等,進(jìn)程調(diào)用數(shù)據(jù)的內(nèi)存地址等等)。然后,處理器13檢查是否存在之前保存的與另一操作系統(tǒng)(第一操作系統(tǒng))的處理器狀態(tài)相關(guān)的數(shù)據(jù)。如果不存在這樣的數(shù)據(jù),則表示另一操作系統(tǒng)還未啟動。此時(shí),需要啟動另一操作系統(tǒng)(即,第一操作系統(tǒng))。在這種情況下,處理器13可以通過與第一操作系統(tǒng)對應(yīng)的第二固件來啟動該第一操作系統(tǒng)(如,android)。這里,由于第一操作系統(tǒng)已經(jīng)駐留在內(nèi)存12中,因此節(jié)省了將第一操作系統(tǒng)導(dǎo)入到內(nèi)存12的過程,由此減少操作系統(tǒng)的切換所需的時(shí)間。此外,如果存在之前保存的與另一操作系統(tǒng)(第一操作系統(tǒng))的處理器狀態(tài)相關(guān)的數(shù)據(jù)。則表示另一操作系統(tǒng)已經(jīng)啟動并運(yùn)行過。此時(shí),不需要重新啟動另一操作系統(tǒng)(第一操作系統(tǒng))。在這種情況下,處理器13可以讀取之前保存的與另一操作系統(tǒng)(第一操作系統(tǒng))的處理器狀態(tài)相關(guān)的數(shù)據(jù)(如,處理器中的各寄存器的數(shù)據(jù),當(dāng)前進(jìn)程的斷點(diǎn)等等,進(jìn)程調(diào)用數(shù)據(jù)的內(nèi)存地址等等),并且基于這些數(shù)據(jù)恢復(fù)之前在第一操作系統(tǒng)被切換到第二操作系統(tǒng)時(shí)的處理器狀態(tài)。因此,可以在將第二操作系統(tǒng)切換到第一操作系統(tǒng)時(shí),恢復(fù)原來在第一操作系統(tǒng)中執(zhí)行的任務(wù)或程序,以將終端設(shè)備還原為在第一操作系統(tǒng)被切換時(shí)的狀態(tài)。在這種情況下,由于僅需要讀取之前保存的與另一操作系統(tǒng)(第一操作系統(tǒng))的處理器狀態(tài)相關(guān)的數(shù)據(jù),且不需要重新啟動第一操作系統(tǒng),因此大大減少了切換操作系統(tǒng)所需的時(shí)間。接下來,將參照圖2描述根據(jù)本發(fā)明實(shí)施例的使終端設(shè)備支持操作系統(tǒng)快速切換的方法。圖2是圖解根據(jù)本發(fā)明實(shí)施例的使終端設(shè)備支持操作系統(tǒng)快速切換的方法的流程圖。如圖2所示,在步驟S201,響應(yīng)于預(yù)設(shè)的啟動命令,基于第一固件對內(nèi)存進(jìn)行初始化。具體地,在接收到預(yù)定的啟動命令之后,處理器13開始加載第一固件并且基于該第一固件對終端設(shè)備的一部分硬件進(jìn)行初始化(如,處理器13和內(nèi)存12)。在步驟S202,將內(nèi)存劃分為第一存儲區(qū)域以及第二存儲區(qū)域。具體地,在基于第一固件對內(nèi)存12進(jìn)行初始化之后,處理器13基于第一固件將內(nèi)存12劃分為第一存儲區(qū)域以及第二存儲區(qū)域。例如,假設(shè)內(nèi)存12的大小為512MB,處理器
13可以基于第一固件將內(nèi)存12劃分為256MB的兩個(gè)存儲區(qū)域(第一存儲區(qū)域以及第二存儲區(qū)域)。此外,本發(fā)明不限于此,可以根據(jù)具體情況將內(nèi)存12劃分為不相等的兩個(gè)存儲區(qū)域。例如,如果第一操作系統(tǒng)占用較多的內(nèi)存空間,而第二操作系統(tǒng)占用內(nèi)存空間較少,則可以給第一操作系統(tǒng)分配較多的存儲區(qū)域作為第一存儲區(qū)域,并且可以給第二操作系統(tǒng)分配較少的存儲區(qū)域作為第二存儲區(qū)域。在步驟S203,將第一操作系統(tǒng)導(dǎo)入到第一存儲區(qū)域內(nèi),并且將第二操作系統(tǒng)導(dǎo)入到第二存儲區(qū)域內(nèi)。具體地,處理器13可以基于第一固件內(nèi)的指令,將第一操作系統(tǒng)導(dǎo)入(寫入)至IJ內(nèi)存12的第一存儲區(qū)域的預(yù)定區(qū)域內(nèi),并且將第二操作系統(tǒng)導(dǎo)入(寫入)到內(nèi)存12的第二存儲區(qū)域的預(yù)定區(qū)域內(nèi)。例如,處理器13可以將第一操作系統(tǒng)導(dǎo)入到第一存儲區(qū)域中從首地址開始的區(qū)域內(nèi),并且可以將第二操作系統(tǒng)導(dǎo)入到第二存儲區(qū)域中從首地址開始的區(qū)域內(nèi)。顯然,還可以將第一操作系統(tǒng)和第二操作系統(tǒng)分別導(dǎo)入到第一存儲區(qū)域和第二存儲區(qū)域內(nèi)的任意存儲空間上。在步驟S204,選擇加載第二固件和第三固件之一。具體地,在將第一操作系統(tǒng)導(dǎo)入(寫入)到內(nèi)存12的第一存儲區(qū)域,并且將第二操作系統(tǒng)導(dǎo)入(寫入)到內(nèi)存12的第二存儲區(qū)域之后,處理器13可以基于第一固件選擇加載第二固件還是第三固件。例如,可以配置第一固件的參數(shù)(例如,O對應(yīng)于第一操作系統(tǒng),而I對應(yīng)于第二操作系統(tǒng))使得處理器13可以確定需要加載第二固件還是第三固件。此外,第一固件還可以進(jìn)一步對終端設(shè)備的顯示單元(未示出)進(jìn)行初始化,使得可以在終端設(shè)備上顯示信息。在這種情況下,處理器13可以基于第一固件的指令在顯示單元上顯示選擇菜單以供用戶選擇第一操作系統(tǒng)或第二操作系統(tǒng)。此時(shí),處理器13可以基于用戶的輸入來確定用戶選擇了哪一個(gè)固件(或操作系統(tǒng))。此外,根據(jù)本發(fā)明的另一個(gè)實(shí)施例,圖2所示的方法還可以進(jìn)一步包括如果選擇加載第二固件,則基于第二固件從第一存儲區(qū)域加載第一操作系統(tǒng);或者如果選擇加載第三固件,則基于第三固件從第二存儲區(qū)域加載第二操作系統(tǒng)的步驟。具體地,如果基于預(yù)定的設(shè)置或用戶的輸入選擇了加載第二固件的情況下,處理器13加載該第二固件,并且基于該第二固件來加載第一操作系統(tǒng)。例如,在第一操作系統(tǒng)為android,而第二固件為bootloader的情況下,如果基于預(yù)定的設(shè)置或用戶的輸入選擇了加載bootloader固件的情況下,處理器13加載bootloader固件,并且基于bootloader固件來加載android操作系統(tǒng)。這里,在處理器13基于第二固件加載第一操作系統(tǒng)時(shí),第二固件向第一操作系統(tǒng)定義第一操作系統(tǒng)可用的內(nèi)存存儲空間。在這種情況下,第二固件需要限制該第二存儲區(qū)域?qū)τ诘谝徊僮飨到y(tǒng)不可見,也就是說第一操作系統(tǒng)不能使用內(nèi)存12中的第二存儲區(qū)域,其僅能使用內(nèi)存12中的第一存儲區(qū)域。這里,可以由第一固件向第二固件通知有關(guān)內(nèi)存12的分配的信息,或者可以在第二固件中預(yù)先設(shè)置與第一存儲區(qū)域的范圍有關(guān)的信息。此外,如果基于預(yù)定的設(shè)置或用戶的輸入選擇了加載第三固件的情況下,處理器13加載該第三固件,并且基于該第三固件來加載第二操作系統(tǒng)。例如,在第二操作系統(tǒng)為Win 8,而第二固件為UEFI的情況下,如果基于預(yù)定的設(shè)置或用戶的輸入選擇了加載UEFI固件的情況下,處理器13加載該UEFI固件,并且基于UEFI固件來加載Win 8操作系統(tǒng)。類似地,在處理器13基于第三固件加載第二操作系統(tǒng)時(shí),第三固件向第二操作系統(tǒng)定義第二操作系統(tǒng)可用的內(nèi)存存儲空間。在這種情況下,第三固件需要限制該第一存儲區(qū)域?qū)τ诘诙僮飨到y(tǒng)不可見。這里,可以由第一固件向第三固件通知有關(guān)內(nèi)存12的分配的信息,或者可以在第三固件中預(yù)先設(shè)置與第二存儲區(qū)域的范圍有關(guān)的信息。此外,根據(jù)本發(fā)明的另一個(gè)實(shí)施例,圖2所示的方法還可以進(jìn)一步包括在第一操作系統(tǒng)和第二操作系統(tǒng)之間進(jìn)行切換的步驟。例如,在第一操作系統(tǒng)啟動后,響應(yīng)于預(yù)設(shè)的切換命令,處理器13保存其當(dāng)前的處理器狀態(tài),并且將第一操作系統(tǒng)切換為所述第二操作系統(tǒng)具體地,在終端設(shè)備運(yùn)行第一操作系統(tǒng)期間,處理器13響應(yīng)于操作系統(tǒng)的切換命令來保存處理器13的當(dāng)前處理器狀態(tài)(如,處理器中的各寄存器的數(shù)據(jù),當(dāng)前進(jìn)程的斷點(diǎn)等等,進(jìn)程調(diào)用數(shù)據(jù)的內(nèi)存地址等等)。然后,處理器13檢查是否存在之前保存的與另一操作系統(tǒng)(第二操作系統(tǒng))的處理器狀態(tài)相關(guān)的數(shù)據(jù)。如果不存在這樣的數(shù)據(jù),則表示另一操作系統(tǒng)還未啟動。此時(shí),需要啟動另一操作系統(tǒng)(第二操作系統(tǒng))。在這種情況下,處理器13可以通過與第二操作系統(tǒng)對應(yīng)的第三固件來啟動該第二操作系統(tǒng)(如,Win 8)。這里,由于第二操作系統(tǒng)已經(jīng)駐留在內(nèi)存12中,因此節(jié)省了將第二操作系統(tǒng)導(dǎo)入到內(nèi)存12的過程,由此減少操作系統(tǒng)的切換所需的時(shí)間。此外,如果存在之前保存的與另一操作系統(tǒng)(第二操作系統(tǒng))的處理器狀態(tài)相關(guān)的數(shù)據(jù)。則表示另一操作系統(tǒng)已經(jīng)啟動并運(yùn)行過。此時(shí),不需要重新啟動另一操作系統(tǒng)(第二操作系統(tǒng))。在這種情況下,處理器13可以讀取之前保存的與另一操作系統(tǒng)(第二操作系統(tǒng))的處理器狀態(tài)相關(guān)的數(shù)據(jù)(如,處理器中的各寄存器的數(shù)據(jù),當(dāng)前進(jìn)程的斷點(diǎn)等等,進(jìn)程調(diào)用數(shù)據(jù)的內(nèi)存地址等等),并且基于這些數(shù)據(jù)恢復(fù)之前在第二操作系統(tǒng)被切換到第一操作系統(tǒng)時(shí)的處理器狀態(tài)。因此,可以在將第一操作系統(tǒng)切換到第二操作系統(tǒng)時(shí),恢復(fù)原來在第二操作系統(tǒng)中執(zhí)行的任務(wù)或程序,以將終端設(shè)備還原為在第二操作系統(tǒng)被切換時(shí)的狀態(tài)。類似地,在第二操作系統(tǒng)啟動后,響應(yīng)于預(yù)設(shè)的切換命令,處理器13保存其當(dāng)前的處理器狀態(tài),并且將第二操作系統(tǒng)切換為第一操作系統(tǒng)。具體地,在終端設(shè)備運(yùn)行第一操作系統(tǒng)期間,處理器13響應(yīng)于操作系統(tǒng)的切換命令來保存處理器13的當(dāng)前處理器狀態(tài)(如,處理器中的各寄存器的數(shù)據(jù),當(dāng)前進(jìn)程的斷點(diǎn)等等,進(jìn)程調(diào)用數(shù)據(jù)的內(nèi)存地址等等)。然后,處理器13檢查是否存在之前保存的與另一操作系統(tǒng)(第一操作系統(tǒng))的處理器狀態(tài)相關(guān)的數(shù)據(jù)。如果不存在這樣的數(shù)據(jù),則表示另一操作系統(tǒng)還未啟動。此時(shí),需要啟動另一操作系統(tǒng)(即,第一操作系統(tǒng))。在這種情況下,處理器13可以通過與第一操作系統(tǒng)對應(yīng)的第二固件來啟動該第一操作系統(tǒng)(如,android)。這里,由于第一操作系統(tǒng)已經(jīng)駐留在內(nèi)存12中,因此節(jié)省了將第一操作系統(tǒng)導(dǎo)入到內(nèi)存12的過程,由此減少操作系統(tǒng)的切換所需的時(shí)間。此外,如果存在之前保存的與另一操作系統(tǒng)(第一操作系統(tǒng))的處理器狀態(tài)相關(guān)的數(shù)據(jù)。則表示另一操作系統(tǒng)已經(jīng)啟動并運(yùn)行過。此時(shí),不需要重新啟動另一操作系統(tǒng)(第一操作系統(tǒng))。在這種情況下,處理器13可以讀取之前保存的與另一操作系統(tǒng)(第一操作系統(tǒng))的處理器狀態(tài)相關(guān)的數(shù)據(jù)(如,處理器中的各寄存器的數(shù)據(jù),當(dāng)前進(jìn)程的斷點(diǎn)等等,進(jìn)程調(diào)用數(shù)據(jù)的內(nèi)存地址等等),并且基于這些數(shù)據(jù)恢復(fù)之前在第一操作系統(tǒng)被切換到第二操作系統(tǒng)時(shí)的處理器狀態(tài)。因此,可以在將第二操作系統(tǒng)切換到第一操作系統(tǒng)時(shí),恢復(fù)原來在第一操作系統(tǒng)中執(zhí)行的任務(wù)或程序,以將終端設(shè)備還原為在第一操作系統(tǒng)被切換時(shí)的狀態(tài)。在這種情況下,由于僅需要讀取之前保存的與另一操作系統(tǒng)(第一操作系統(tǒng))的處理器狀態(tài)相關(guān)的數(shù)據(jù),且不需要重新啟動第一操作系統(tǒng),因此大大減少了切換操作系統(tǒng)所需的時(shí)間。此外,本發(fā)明不限于圖2描述的順序,例如,步驟S204可以在步驟S203之前。在這種情況下,可以由第二固件以及第三固件代替第一固件完成步驟S203的處理。也就是,由第二固件以及第三固件分別執(zhí)行加載第一操作系統(tǒng)以及第二操作系統(tǒng)的處理。具體地,可以在第二固件(而不是第一固件)中設(shè)置用于加載將第一操作系統(tǒng)導(dǎo)入到第一存儲區(qū)域的預(yù)定區(qū)域的指令,并且在第三固件(而不是第一固件)中設(shè)置用于加載將第一操作系統(tǒng)導(dǎo)入到第一存儲區(qū)域的預(yù)定區(qū)域的指令。在這種情況下,在處理器13基于第一固件將內(nèi)存12劃分為第一存儲區(qū)域以及第二存儲區(qū)域(步驟S202)之后,處理器基于第一固件選擇需要加載第二固件還是第三固件(步驟S204)。如果處理器13基于第一固件(如,參照預(yù)定的設(shè)置或用戶的輸入)選擇了加載第二固件,則處理器13加載該第二固件,基于所加載的第二固件將第一操作系統(tǒng)(如,android)導(dǎo)入到內(nèi)存12的第一存儲區(qū)域,然后從第一存儲區(qū)域加載該第一操作系統(tǒng),以便啟動該第一操作系統(tǒng)。此外,如果處理器13基于第一固件(如,參照預(yù)定的設(shè)置或用戶的輸入)選擇加載第三固件,則處理器13基于所加載的第三固件將第二操作系統(tǒng)(如,Win8)導(dǎo)入到內(nèi)存12的第二存儲區(qū)域,然后從第二存儲區(qū)域加載該第二操作系統(tǒng),以便啟動該第一操作系統(tǒng)。通過上述配置,通過第一固件將第一操作系統(tǒng)和第二操作系統(tǒng)預(yù)先導(dǎo)入到第二存儲單元(內(nèi)存)中,然后基于與第一操作系統(tǒng)和第二操作系統(tǒng)對應(yīng)的第二固件和第三固件來啟動第一操作系統(tǒng)和第二操作系統(tǒng),可以使終端設(shè)備靈活地支持多種不兼容的操作系統(tǒng)。此外,由于第一操作系統(tǒng)和第二操作系統(tǒng)已經(jīng)駐留在第二存儲單元(內(nèi)存)中,因此在切換操作系統(tǒng)的過程中,省去了加載另一操作系統(tǒng)的過程,由此縮短了切換操作系統(tǒng)所需的時(shí)間。在上面詳細(xì)描述了本發(fā)明的各個(gè)實(shí)施例。然而,本領(lǐng)域技術(shù)人員應(yīng)該理解,在不脫離本發(fā)明的原理和精神的情況下,可對這些實(shí)施例進(jìn)行各種修改,組合或子組合,并且這樣的修改應(yīng)落入本發(fā)明的范圍內(nèi)。
權(quán)利要求
1.一種使終端設(shè)備支持操作系統(tǒng)快速切換的方法,所述終端設(shè)備包括用于存儲第一固件、第二固件、第三固件、第一操作系統(tǒng)以及第二操作系統(tǒng)的第一存儲單元;以及第二存儲單元,所述第二存儲單元的存取速度大于所述第一存儲單元的存取速度,且所述第二存儲單元包括第一存儲區(qū)域和第二存儲區(qū)域;所述方法包括 響應(yīng)于預(yù)設(shè)的啟動命令,基于所述第一固件對第二存儲單元進(jìn)行初始化; 選擇加載所述第二固件和第三固件之一。
2.如權(quán)利要求1所述的方法,進(jìn)一步包括 如果選擇加載所述第二固件,則基于所加載的所述第二固件將所述第一操作系統(tǒng)導(dǎo)入到所述第一存儲區(qū)域,并且從所述第一存儲區(qū)域加載所述第一操作系統(tǒng);或者 如果選擇加載所述第三固件,則基于所加載的所述第三固件將所述第二操作系統(tǒng)導(dǎo)入到所述第二存儲區(qū)域,并且從所述第二存儲區(qū)域加載所述第二操作系統(tǒng)。
3.如權(quán)利要求1所述的方法,進(jìn)一步包括在將第二存儲單元?jiǎng)澐譃榈谝淮鎯^(qū)域以及第二存儲區(qū)域之后,基于第一固件將所述第一操作系統(tǒng)導(dǎo)入到所述第一存儲區(qū)域內(nèi)以及將所述第二操作系統(tǒng)導(dǎo)入到所述第二存儲區(qū)域內(nèi);以及 如果選擇加載所述第二固件,則基于所加載的所述第二固件從所述第一存儲區(qū)域加載所述第一操作系統(tǒng);或者 如果選擇加載所述第三固件,則基于所加載的所述第三固件從所述第二存儲區(qū)域加載所述第二操作系統(tǒng)。
4.如權(quán)利要求3所述的方法,其中 所述第二固件限制所述第二存儲區(qū)域?qū)τ谒龅谝徊僮飨到y(tǒng)不可見;以及 所述第三固件限制所述第一存儲區(qū)域?qū)τ谒龅诙僮飨到y(tǒng)不可見。
5.如權(quán)利要求1所述的方法,進(jìn)一步包括 在所述第一操作系統(tǒng)啟動后,響應(yīng)于預(yù)設(shè)的切換命令,保存所述處理單元的當(dāng)前第一狀態(tài),并且將所述第一操作系統(tǒng)切換為所述第二操作系統(tǒng);或者 在所述第二操作系統(tǒng)啟動后,響應(yīng)于預(yù)設(shè)的切換命令,保存所述處理單元的當(dāng)前第二狀態(tài),并且將所述第二操作系統(tǒng)切換為所述第一操作系統(tǒng)。
6.—種終端設(shè)備,包括 第一存儲單元,配置來存儲第一固件、第二固件、第三固件、第一操作系統(tǒng)以及第二操作系統(tǒng); 第二存儲單元,其中所述第二存儲單元的存取速度大于所述第一存儲單元的存取速度;以及 處理單元,配置來加載所述第一操作系統(tǒng)或所述第二操行系統(tǒng), 其中響應(yīng)于預(yù)設(shè)的啟動命令,所述處理單元基于所述第一固件對第二存儲單元進(jìn)行初始化,將所述第二存儲單元?jiǎng)澐譃榈谝淮鎯^(qū)域以及第二存儲區(qū)域,以及所述處理單元基于所述第一固件選擇加載所述第二固件或第三固件。
7.如權(quán)利要求6所述的終端設(shè)備,其中 如果選擇加載所述第二固件,則基于所加載的所述第二固件將所述第一操作系統(tǒng)導(dǎo)入到所述第一存儲區(qū)域,并且從所述第一存儲區(qū)域加載所述第一操作系統(tǒng);或者 如果選擇加載所述第三固件,則基于所加載的所述第三固件將所述第二操作系統(tǒng)導(dǎo)入到所述第二存儲區(qū)域,并且從所述第二存儲區(qū)域加載所述第二操作系統(tǒng)。
8.如權(quán)利要求6所述的終端設(shè)備,其中 在將第二存儲單元?jiǎng)澐譃榈谝淮鎯^(qū)域以及第二存儲區(qū)域之后,基于第一固件將所述第一操作系統(tǒng)導(dǎo)入到所述第一存儲區(qū)域內(nèi)以及將所述第二操作系統(tǒng)導(dǎo)入到所述第二存儲區(qū)域內(nèi); 如果所述處理單元選擇加載所述第二固件,則所述處理單元基于所加載的所述第二固件從所述第一存儲區(qū)域加載所述第一操作系統(tǒng);或者 如果所述處理單元選擇加載所述第三固件,則所述處理單元基于所加載的所述第三固件從所述第二存儲區(qū)域加載所述第二操作系統(tǒng)。
9.如權(quán)利要求8所述的終端設(shè)備,其中 所述第二固件限制所述第二存儲區(qū)域?qū)τ谒龅谝徊僮飨到y(tǒng)不可見;以及 所述第三固件限制所述第一存儲區(qū)域?qū)τ谒龅诙僮飨到y(tǒng)不可見。
10.如權(quán)利要求6所述的終端設(shè)備,其中 在所述第一操作系統(tǒng)啟動后,響應(yīng)于預(yù)設(shè)的切換命令,所述處理單元保存其當(dāng)前的第一狀態(tài),并且將所述第一操作系統(tǒng)切換為所述第二操作系統(tǒng);或者 在所述第二操作系統(tǒng)啟動后,響應(yīng)于預(yù)設(shè)的切換命令,所述處理單元保存其當(dāng)前的第二狀態(tài),并且將所述第二操作系統(tǒng)切換為所述第一操作系統(tǒng)。
全文摘要
使終端設(shè)備支持操作系統(tǒng)快速切換的方法以及終端設(shè)備,終端設(shè)備包括用于存儲第一固件、第二固件、第三固件、第一操作系統(tǒng)以及第二操作系統(tǒng)的第一存儲單元;以及第二存儲單元,第二存儲單元的存取速度大于第一存儲單元的存取速度;該方法包括響應(yīng)于預(yù)設(shè)的啟動命令,基于第一固件對第二存儲單元進(jìn)行初始化;將第二存儲單元?jiǎng)澐譃榈谝淮鎯^(qū)域以及第二存儲區(qū)域,選擇加載第二固件和第三固件之一。
文檔編號G06F9/48GK103019833SQ201110280859
公開日2013年4月3日 申請日期2011年9月20日 優(yōu)先權(quán)日2011年9月20日
發(fā)明者李凡智, 劉旭國, 袁菁 申請人:聯(lián)想(北京)有限公司