Android虛擬機(jī)加載方法及裝置制造方法
【專利摘要】一種Android虛擬機(jī)加載方法,包括:加載層級引導(dǎo)對象;通過所述層級引導(dǎo)對象加載虛擬機(jī)管理對象;通過所述虛擬機(jī)管理對象讀取虛擬機(jī)配置;根據(jù)所述虛擬機(jī)配置調(diào)用所述虛擬機(jī)管理對象的虛擬機(jī)創(chuàng)建函數(shù)創(chuàng)建虛擬機(jī)運行實例。此夕卜,還提供了一種Android虛擬機(jī)加載裝置。上述Android虛擬機(jī)加載方法及裝置能夠提高虛擬機(jī)運行實例之間的切換速度。
【專利說明】Android虛擬機(jī)加載方法及裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及移動互聯(lián)網(wǎng)【技術(shù)領(lǐng)域】,特別是涉及一種Android虛擬機(jī)加載方法及裝 置。
【背景技術(shù)】
[0002] 目前Android移動設(shè)備上的安全問題越來越多,無論是病毒還是系統(tǒng)漏洞都一直 不斷地在出現(xiàn),而Android設(shè)備上的應(yīng)用卻越來越多,越來越重要,比如:移動支付,手機(jī)證 券等等。而目前的安全軟件能提供的保護(hù)相當(dāng)有限,因此用戶非常希望有一個絕對干凈安 全的環(huán)境來完成他重要的操作。
[0003] 要提供這樣一個干凈安全的環(huán)境,虛擬化或多操作系統(tǒng)顯然是個比較好的解決方 案。
[0004] 然而,發(fā)明人經(jīng)分析發(fā)現(xiàn),傳統(tǒng)技術(shù)中至少存在以下問題:現(xiàn)有技術(shù)中的Android 虛擬化方法為安裝多個版本的操作系統(tǒng),每個操作系統(tǒng)作為獨立的虛擬機(jī)加載運行,若需 要在虛擬機(jī)之間切換時,只能通過重啟后重新選擇虛擬機(jī)來啟動,也就是說,是一種冷切換 的方式,從而使得虛擬機(jī)之間的切換速度較慢。
【發(fā)明內(nèi)容】
[0005] 基于此,有必要提供一種能提高虛擬機(jī)之間的切換速度的Android虛擬機(jī)加載方 法。
[0006] 一種Android虛擬機(jī)加載方法,包括:
[0007] 加載層級引導(dǎo)對象;
[0008] 通過所述層級引導(dǎo)對象加載虛擬機(jī)管理對象;
[0009] 通過所述虛擬機(jī)管理對象讀取虛擬機(jī)配置;
[0010] 根據(jù)所述虛擬機(jī)配置調(diào)用所述虛擬機(jī)管理對象的虛擬機(jī)創(chuàng)建函數(shù)創(chuàng)建虛擬機(jī)運 行實例。
[0011] 此外,還有必要提供一種能提高虛擬機(jī)之間的切換速度的Android虛擬機(jī)加載裝 置。
[0012] 一種Android虛擬機(jī)加載裝置,包括:
[0013] 引導(dǎo)對象加載模塊,用于加載層級引導(dǎo)對象;
[0014] 管理對象加載模塊,用于通過所述層級引導(dǎo)對象加載虛擬機(jī)管理對象;
[0015] 配置讀取模塊,用于通過所述虛擬機(jī)管理對象讀取虛擬機(jī)配置;
[0016] 虛擬機(jī)初始化模塊,用于根據(jù)所述虛擬機(jī)配置調(diào)用所述虛擬機(jī)管理對象的虛擬機(jī) 創(chuàng)建函數(shù)創(chuàng)建虛擬機(jī)運行實例。
[0017] 上述Android虛擬機(jī)加載方法及裝置,由層級引導(dǎo)對象引導(dǎo)記載虛擬機(jī)管理對 象,然后由虛擬機(jī)管理對象加載多個虛擬機(jī)運行實例,使得在虛擬機(jī)運行實例之間進(jìn)行切 換時,可通過虛擬機(jī)管理對象在其加載的多個虛擬機(jī)運行實例之間進(jìn)行切換,而不需要重 啟Android設(shè)備,重新在Bootloader引導(dǎo)時選擇相應(yīng)的虛擬機(jī)進(jìn)行加載,使得虛擬機(jī)運行 實例之間的切換為熱切換,從而提高了切換速度。
【專利附圖】
【附圖說明】
[0018] 圖1為一個實施例中Android虛擬機(jī)加載方法的流程圖;
[0019] 圖2為一個實施例中Android系統(tǒng)層級架構(gòu)示意圖;
[0020] 圖3為一個實施例中基于Bootloader層引導(dǎo)的虛擬機(jī)層級架構(gòu)示意圖;
[0021] 圖4為一個實施例中基于Linux kernel層引導(dǎo)的虛擬機(jī)層級架構(gòu)示意圖;
[0022] 圖5為一個實施例中Android虛擬機(jī)加載裝置的結(jié)構(gòu)示意圖;
[0023] 圖6為另一個實施例中Android虛擬機(jī)加載裝置的結(jié)構(gòu)示意圖;
[0024] 圖7為另一個實施例中Android虛擬機(jī)加載裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0025] 在一個實施例中,如圖1所示,一種Android虛擬機(jī)加載方法,該方法完全依賴于 計算機(jī)程序,該計算機(jī)程序可運行于基于Android系統(tǒng)的移動設(shè)備上,例如Android智能手 機(jī)、Android平板電腦、Android智能眼鏡等。
[0026] 如圖2所示,Android系統(tǒng)為多層結(jié)構(gòu),自下而上依次包括:Bootloader層、Linux Kernel 層、Android Runtime 層、Application Framework 層和 Application 層。
[0027] 其中,Bootloader層為引導(dǎo)層,用于初始化硬件設(shè)備、建立內(nèi)存空間映射表,將系 統(tǒng)的軟硬件環(huán)境帶到一個合適狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。
[0028] Linux Kernel層即為Linux Kernel實例,為運行于Android操作系統(tǒng)底層的用于 將代碼解析成機(jī)器語言的Linux層內(nèi)核,其中包含硬件設(shè)備的驅(qū)動程序,例如攝像頭驅(qū)動、 藍(lán)牙適配器驅(qū)動、觸摸屏驅(qū)動和USB驅(qū)動等。
[0029] Andro i d Runt ime層用于解釋執(zhí)行Andro i d代碼的Andro id層內(nèi)核,且包含有 Android系統(tǒng)函數(shù)運行庫,例如WebKit庫、SSL庫和SQLite庫等。
[0030] Application Framework層為應(yīng)用程序框架層,用于控制上層應(yīng)用的加載、運行 和注銷,并為上層應(yīng)用提供多種服務(wù)。例如Location Manager組件、XMPPService組件和 Activity Manager 組件等。
[0031] Application層即為應(yīng)用軟件層,為具體的應(yīng)用程序,例如手機(jī)瀏覽器、微信和聯(lián) 系人管理應(yīng)用等。
[0032] 在本實施例中,該方法包括以下步驟:
[0033] 步驟S102,加載層級引導(dǎo)對象。
[0034] 層級引導(dǎo)對象即用于加載Android操作系統(tǒng)內(nèi)核的程序運行單元。
[0035] 在本實施例中,層級引導(dǎo)對象可以是Bootloader層對象,如前所述Bootloader層 對象可用于加載Linux層內(nèi)核。也就是說,在Linux Kernel層實現(xiàn)虛擬,由Bootloader層 對象引導(dǎo)創(chuàng)建多個Linux Kernel層的虛擬機(jī)運行實例。
[0036] 在本實施例中,Android設(shè)備基于ARM處理器,在其嵌入式系統(tǒng)中,BootLoader程 序通常占據(jù)在嵌入式系統(tǒng)的內(nèi)存地址的0x00000000處,Android設(shè)備在上電或復(fù)位時均從 該地址0x00000000處開始執(zhí)行,從而加載層級引導(dǎo)對象。
[0037] 步驟S104,通過層級引導(dǎo)對象加載虛擬機(jī)管理對象。
[0038] 虛擬機(jī)管理對象為用于創(chuàng)建、配置和注銷虛擬機(jī)運行實例的程序單元。在本實施 例中,可通過Boot loader層對象加載虛擬機(jī)管理對象對應(yīng)的程序單元。
[0039] 步驟S106,通過虛擬機(jī)管理對象讀取虛擬機(jī)配置。
[0040] 虛擬機(jī)配置即需要加載的虛擬機(jī)運行實例的配置文件,可包括虛擬機(jī)的個數(shù)、虛 擬機(jī)標(biāo)識、虛擬機(jī)運行實例對應(yīng)的程序文件的文件清單以及對應(yīng)的存儲位置。
[0041] 在本實施例中,虛擬機(jī)配置還包括與虛擬機(jī)運行實例對應(yīng)的處理器狀態(tài)寄存器指 令集(PSR,Processor state Register)。在通過虛擬機(jī)管理對象讀取處理器狀態(tài)寄存器指 令集后,還可通過調(diào)用虛擬機(jī)管理對象的指令編碼函數(shù)對PSR指令集進(jìn)行編碼。
[0042] 在本實施例中,由于需要對每個虛擬機(jī)運行實例提供不同的處理器運行狀態(tài),而 訪問處理器狀態(tài)寄存器(CPSR)的指令是固定的:比如MRS、MSR、ADDS等,因此,在本實施例 中,可通過對與虛擬機(jī)運行實例對應(yīng)的PSR指令集進(jìn)行編碼實現(xiàn)不同虛擬機(jī)運行實例具有 各自的處理器運行狀態(tài)。
[0043] 例如,可將與虛擬機(jī)運行實例對應(yīng)的PSR指令集替換為swi XXX,XXX為各個指令 的重新編碼,比如MRS指令可編碼為0x1000,而MSR為0x1001,但需與虛擬機(jī)運行實例對應(yīng) 的軟中斷編號不一致。按照上述方式對PSR指令集編碼后,即可通過軟中斷指令swi實現(xiàn) 處理器狀態(tài)的虛擬,從而使得后期創(chuàng)建的虛擬機(jī)運行實例對應(yīng)各自獨立的處理器狀態(tài)。
[0044] 步驟S108,根據(jù)虛擬機(jī)配置調(diào)用虛擬機(jī)管理對象的虛擬機(jī)創(chuàng)建函數(shù)創(chuàng)建虛擬機(jī)運 行實例。
[0045] 在本實施例中,虛擬機(jī)管理對象的虛擬機(jī)創(chuàng)建函數(shù)即可根據(jù)虛擬機(jī)配置中定義的 虛擬機(jī)的個數(shù)以及虛擬機(jī)運行實例對應(yīng)的程序文件清單將虛擬機(jī)運行實例加載到內(nèi)存中。
[0046] 進(jìn)一步的,還可將前述編碼后的PSR指令集設(shè)置為與其對應(yīng)的虛擬機(jī)運行實例 PSR指令集。
[0047] 在本實施例中,還可通過虛擬機(jī)管理對象攔截中斷指令和/或異常指令;獲取中 斷指令和/或異常指令對應(yīng)的內(nèi)存地址;根據(jù)內(nèi)存地址將中斷指令和/或異常指令傳遞給 對應(yīng)的虛擬機(jī)運行實例的中斷處理函數(shù)和/或異常處理函數(shù)。
[0048] 由于各個虛擬機(jī)運行實例對應(yīng)的中斷表和異常表在內(nèi)存中位置固定。因此可根據(jù) 內(nèi)存地址判斷中斷指令和/或異常指令所屬的虛擬機(jī)運行實例,從而將各個虛擬機(jī)運行實 例各自的中斷和/或異常交由其自身的中斷處理函數(shù)和/或異常處理函數(shù)處理。
[0049] 在本實施例中,基于Bootloader層級引導(dǎo)對象的虛擬機(jī)系統(tǒng)架構(gòu)即如圖3所示。
[0050] 在另一個實施例中,層級引導(dǎo)對象為Linux Kernel層對象,Linux Kernel層對象 可用于加載Android Runtime層即Android內(nèi)核。也就是說,在Android Runtime層實現(xiàn)虛 擬,由Linux Kernel層對象引導(dǎo)創(chuàng)建多個Android Runtime層的虛擬機(jī)運行實例。例如, 可預(yù)先在系統(tǒng)init. rc配置中移除zygote進(jìn)程的啟動而加入虛擬機(jī)管理對象的啟動,從而 由Linux Kernel層對象引導(dǎo)創(chuàng)建虛擬機(jī)管理對象。
[0051] 在本實施例中,根據(jù)虛擬機(jī)配置調(diào)用虛擬機(jī)管理對象的虛擬機(jī)創(chuàng)建函數(shù)創(chuàng)建虛擬 機(jī)運行實例的步驟可具體為:
[0052] 根據(jù)虛擬機(jī)配置調(diào)用虛擬機(jī)管理對象的虛擬機(jī)創(chuàng)建函數(shù)創(chuàng)建zygote進(jìn)程,通過 zygote進(jìn)程創(chuàng)建基于Android Runtime層的虛擬機(jī)運行實例。
[0053] 也就是說,可通過Linux Kernel層對象加載虛擬機(jī)管理對象,然后由虛擬機(jī)管 理對象根據(jù)虛擬機(jī)配置中定義的虛擬機(jī)運行實例的個數(shù)以及各自的虛擬機(jī)標(biāo)識創(chuàng)建多個 zygote進(jìn)程(也叫種子進(jìn)程),然后由每個種子進(jìn)程創(chuàng)建各自的虛擬機(jī)運行實例。在本實施 例中,基于Linux Kernel層級引導(dǎo)對象的虛擬機(jī)系統(tǒng)架構(gòu)可如圖4所示。
[0054] 基于Linux Kernel層對象引導(dǎo)的方式加載的虛擬機(jī)運行實例共用同一個Linux Kernel層,因此在內(nèi)存中只占據(jù)一塊區(qū)域,使得內(nèi)存占用較小,從而提高了內(nèi)存利用率。
[0055] 在一個實施例中,還可獲取虛擬機(jī)切換指令,根據(jù)虛擬機(jī)切換指令調(diào)用虛擬機(jī)管 理對象的虛擬機(jī)切換函數(shù)切換虛擬機(jī)運行實例。
[0056] 在本實施例對應(yīng)的應(yīng)用場景中,用戶可通過點擊Android設(shè)備上的按鈕輸入虛擬 機(jī)切換指令,優(yōu)選地,虛擬機(jī)切換指令中可包含用戶選擇的目標(biāo)切換的虛擬機(jī)運行實例的 虛擬機(jī)標(biāo)識。該虛擬機(jī)切換指令作為函數(shù)參數(shù)傳遞給虛擬機(jī)管理對象的虛擬機(jī)切換函數(shù), 虛擬機(jī)切換函數(shù)根據(jù)該虛擬機(jī)標(biāo)識獲取到相應(yīng)的虛擬機(jī)運行實例的內(nèi)存區(qū)域,并將該虛擬 機(jī)運行實例激活。在顯示界面上,用戶則無需重啟即可快速切換到目標(biāo)虛擬機(jī)運行實例上。
[0057] 在一個實施例中,還可獲取虛擬機(jī)創(chuàng)建指令,根據(jù)虛擬機(jī)創(chuàng)建指令調(diào)用虛擬機(jī)管 理對象的虛擬機(jī)創(chuàng)建函數(shù)創(chuàng)建虛擬機(jī)運行實例。
[0058] 也就是說,用戶可在Android設(shè)備開機(jī)使用中隨時創(chuàng)建新的虛擬機(jī)運行實例。優(yōu) 選地,虛擬機(jī)創(chuàng)建指令中還可包括用戶輸入的虛擬機(jī)創(chuàng)建參數(shù),例如虛擬機(jī)標(biāo)識等參數(shù)信 息。虛擬機(jī)創(chuàng)建函數(shù)則可根據(jù)該參數(shù)創(chuàng)建虛擬機(jī)運行實例。
[0059] 在一個實施例中,如圖5所示,一種Android虛擬機(jī)加載裝置,包括:
[0060] 引導(dǎo)對象加載模塊102,用于加載層級引導(dǎo)對象。
[0061] 管理對象加載模塊104,用于通過所述層級引導(dǎo)對象加載虛擬機(jī)管理對象。
[0062] 配置讀取模塊106,用于通過所述虛擬機(jī)管理對象讀取虛擬機(jī)配置。
[0063] 虛擬機(jī)初始化模塊108,用于根據(jù)所述虛擬機(jī)配置調(diào)用所述虛擬機(jī)管理對象的虛 擬機(jī)創(chuàng)建函數(shù)創(chuàng)建虛擬機(jī)運行實例。
[0064] 在一個實施例中,層級引導(dǎo)對象為Bootloader層對象。
[0065] 虛擬機(jī)初始化模塊108還用于根據(jù)虛擬機(jī)配置調(diào)用所述虛擬機(jī)管理對象的虛擬 機(jī)創(chuàng)建函數(shù)創(chuàng)建基于Linux Kernel層的虛擬機(jī)運行實例。
[0066] 在一個實施例中,虛擬機(jī)配置還包括與虛擬機(jī)運行實例對應(yīng)的處理器狀態(tài)寄存器 指令集。
[0067] 配置讀取模塊還用于通過調(diào)用虛擬機(jī)管理對象的指令編碼函數(shù)對處理器狀態(tài)寄 存器指令集進(jìn)行編碼。
[0068] 在一個實施例中,如圖6所示,Android虛擬機(jī)加載裝置還包括指令調(diào)度模塊110, 用于通過虛擬機(jī)管理對象攔截中斷指令和/或異常指令;獲取中斷指令和/或異常指令對 應(yīng)的內(nèi)存地址;根據(jù)內(nèi)存地址將中斷指令和/或異常指令傳遞給對應(yīng)的虛擬機(jī)運行實例的 中斷處理函數(shù)和/或異常處理函數(shù)。
[0069] 在一個實施例中,層級引導(dǎo)對象為Linux Kernel層對象。
[0070] 虛擬機(jī)初始化模塊108還用于根據(jù)虛擬機(jī)配置調(diào)用虛擬機(jī)管理對象的虛擬機(jī)創(chuàng) 建函數(shù)創(chuàng)建zygote進(jìn)程,通過zygote進(jìn)程創(chuàng)建基于Android Runtime層的虛擬機(jī)運行實 例。
[0071] 在一個實施例中,如圖6所示,Android虛擬機(jī)加載裝置還包括虛擬機(jī)切換模塊 112,用于獲取虛擬機(jī)切換指令,根據(jù)虛擬機(jī)切換指令調(diào)用虛擬機(jī)管理對象的虛擬機(jī)切換函 數(shù)切換虛擬機(jī)運行實例。
[0072] 在一個實施例中,如圖6所示,Android虛擬機(jī)加載裝置還包括虛擬機(jī)創(chuàng)建模塊 114,用于獲取虛擬機(jī)創(chuàng)建指令,根據(jù)虛擬機(jī)創(chuàng)建指令調(diào)用虛擬機(jī)管理對象的虛擬機(jī)創(chuàng)建函 數(shù)創(chuàng)建虛擬機(jī)運行實例。
[0073] 上述Android虛擬機(jī)加載方法和裝置,由層級引導(dǎo)對象引導(dǎo)記載虛擬機(jī)管理對 象,然后由虛擬機(jī)管理對象加載多個虛擬機(jī)運行實例,使得在虛擬機(jī)運行實例之間進(jìn)行切 換時,可通過虛擬機(jī)管理對象在其加載的多個虛擬機(jī)運行實例之間進(jìn)行切換,而不需要重 啟Android設(shè)備,重新在Bootloader引導(dǎo)時選擇相應(yīng)的虛擬機(jī)進(jìn)行加載,使得虛擬機(jī)運行 實例之間的切換為熱切換,從而提高了切換速度。
[0074] 本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程,是可以 通過計算機(jī)程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計算機(jī)可讀取存儲介質(zhì) 中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質(zhì)可為磁 碟、光盤、只讀存儲記憶體(Read-Only Memory, ROM)或隨機(jī)存儲記憶體(Random Access Memory,RAM)等。
[0075] 本發(fā)明實施例還提供了另一種Android虛擬機(jī)加載裝置,如圖7所示,為了便于說 明,僅示出了與本發(fā)明實施例相關(guān)的部分,具體技術(shù)細(xì)節(jié)未揭示的,請參照本發(fā)明實施例方 法部分。該終端可以為包括手機(jī)、平板電腦、PDA (Personal Digital Assistant,個人數(shù)字 助理)、P0S (Point of Sales,銷售終端)、車載電腦等任意終端設(shè)備,以終端為手機(jī)為例:
[0076] 圖7示出的是與本發(fā)明實施例提供的終端相關(guān)的手機(jī)的部分結(jié)構(gòu)的框圖。參考圖 7,手機(jī)包括:射頻(Radio Frequency,RF)電路1110、存儲器1120、輸入單元1130、顯示單 元1140、傳感器1150、音頻電路1160、無線保真(wireless fidelity, WiFi)模塊1170、處 理器1180、以及電源1190等部件。本領(lǐng)域技術(shù)人員可以理解,圖7中示出的手機(jī)結(jié)構(gòu)并不 構(gòu)成對手機(jī)的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部 件布置。
[0077] 下面結(jié)合圖7對手機(jī)的各個構(gòu)成部件進(jìn)行具體的介紹:
[0078] RF電路1110可用于收發(fā)信息或通話過程中,信號的接收和發(fā)送,特別地,將 基站的下行信息接收后,給處理器1180處理;另外,將設(shè)計上行的數(shù)據(jù)發(fā)送給基站。通 常,RF電路包括但不限于天線、至少一個放大器、收發(fā)信機(jī)、耦合器、低噪聲放大器(Low Noise Amplifier,LNA)、雙工器等。此外,RF電路110還可以通過無線通信與網(wǎng)絡(luò)和其 他設(shè)備通信。上述無線通信可以使用任一通信標(biāo)準(zhǔn)或協(xié)議,包括但不限于全球移動通 訊系統(tǒng)(Global System of Mobile communication,GSM)、通用分組無線服務(wù)(General Packet Radio Service,GPRS)、碼分多址(Code Division Multiple Access,CDMA)、寬 帶碼分多址(Wideband Code Division Multiple Access, WCDMA)、長期演進(jìn)(Long Term Evolution, LTE))、電子郵件、短消息服務(wù)(Short Messaging Service, SMS)等。
[0079] 存儲器1120可用于存儲軟件程序以及模塊,處理器1180通過運行存儲在存儲器 1120的軟件程序以及模塊,從而執(zhí)行手機(jī)的各種功能應(yīng)用以及數(shù)據(jù)處理。存儲器1120可主 要包括存儲程序區(qū)和存儲數(shù)據(jù)區(qū),其中,存儲程序區(qū)可存儲操作系統(tǒng)、至少一個功能所需的 應(yīng)用程序(比如聲音播放功能、圖像播放功能等)等;存儲數(shù)據(jù)區(qū)可存儲根據(jù)手機(jī)的使用所 創(chuàng)建的數(shù)據(jù)(比如音頻數(shù)據(jù)、電話本等)等。此外,存儲器1120可以包括高速隨機(jī)存取存儲 器,還可以包括非易失性存儲器,例如至少一個磁盤存儲器件、閃存器件、或其他易失性固 態(tài)存儲器件。
[0080] 輸入單元1130可用于接收輸入的數(shù)字或字符信息,以及產(chǎn)生與手機(jī)1100的用戶 設(shè)置以及功能控制有關(guān)的鍵信號輸入。具體地,輸入單元1130可包括觸控面板1131以及 其他輸入設(shè)備1132。觸控面板1131,也稱為觸摸屏,可收集用戶在其上或附近的觸摸操作 (比如用戶使用手指、觸筆等任何適合的物體或附件在觸控面板1131上或在觸控面板1131 附近的操作),并根據(jù)預(yù)先設(shè)定的程式驅(qū)動相應(yīng)的連接裝置??蛇x的,觸控面板1131可包括 觸摸檢測裝置和觸摸控制器兩個部分。其中,觸摸檢測裝置檢測用戶的觸摸方位,并檢測觸 摸操作帶來的信號,將信號傳送給觸摸控制器;觸摸控制器從觸摸檢測裝置上接收觸摸信 息,并將它轉(zhuǎn)換成觸點坐標(biāo),再送給處理器1180,并能接收處理器1180發(fā)來的命令并加以 執(zhí)行。此外,可以采用電阻式、電容式、紅外線以及表面聲波等多種類型實現(xiàn)觸控面板1131。 除了觸控面板1131,輸入單元1130還可以包括其他輸入設(shè)備1132。具體地,其他輸入設(shè)備 1132可以包括但不限于物理鍵盤、功能鍵(比如音量控制按鍵、開關(guān)按鍵等)、軌跡球、鼠標(biāo)、 操作桿等中的一種或多種。
[0081] 顯示單元1140可用于顯示由用戶輸入的信息或提供給用戶的信息以及手機(jī)的 各種菜單。顯示單元1140可包括顯示面板1141,可選的,可以采用液晶顯示器(Liquid Crystal Display,LCD)、有機(jī)發(fā)光二極管(Organic Light-Emitting Diode, 0LED)等形式 來配置顯示面板1141。進(jìn)一步的,觸控面板1131可覆蓋顯示面板1141,當(dāng)觸控面板1131 檢測到在其上或附近的觸摸操作后,傳送給處理器1180以確定觸摸事件的類型,隨后處理 器1180根據(jù)觸摸事件的類型在顯示面板1141上提供相應(yīng)的視覺輸出。雖然在圖7中,觸 控面板1131與顯示面板1141是作為兩個獨立的部件來實現(xiàn)手機(jī)的輸入和輸入功能,但是 在某些實施例中,可以將觸控面板1131與顯示面板1141集成而實現(xiàn)手機(jī)的輸入和輸出功 能。
[0082] 手機(jī)1100還可包括至少一種傳感器1150,比如光傳感器、運動傳感器以及其他傳 感器。具體地,光傳感器可包括環(huán)境光傳感器及接近傳感器,其中,環(huán)境光傳感器可根據(jù)環(huán) 境光線的明暗來調(diào)節(jié)顯示面板1141的亮度,接近傳感器可在手機(jī)移動到耳邊時,關(guān)閉顯示 面板1141和/或背光。作為運動傳感器的一種,加速計傳感器可檢測各個方向上(一般為 三軸)加速度的大小,靜止時可檢測出重力的大小及方向,可用于識別手機(jī)姿態(tài)的應(yīng)用α匕 如橫堅屏切換、相關(guān)游戲、磁力計姿態(tài)校準(zhǔn))、振動識別相關(guān)功能(比如計步器、敲擊)等;至 于手機(jī)還可配置的陀螺儀、氣壓計、濕度計、溫度計、紅外線傳感器等其他傳感器,在此不再 贅述。
[0083] 音頻電路1160、揚聲器1161,傳聲器1162可提供用戶與手機(jī)之間的音頻接口。音 頻電路1160可將接收到的音頻數(shù)據(jù)轉(zhuǎn)換后的電信號,傳輸?shù)綋P聲器1161,由揚聲器1161轉(zhuǎn) 換為聲音信號輸出;另一方面,傳聲器1162將收集的聲音信號轉(zhuǎn)換為電信號,由音頻電路 1160接收后轉(zhuǎn)換為音頻數(shù)據(jù),再將音頻數(shù)據(jù)輸出處理器1180處理后,經(jīng)RF電路1110以發(fā) 送給比如另一手機(jī),或者將音頻數(shù)據(jù)輸出至存儲器1120以便進(jìn)一步處理。
[0084] WiFi屬于短距離無線傳輸技術(shù),手機(jī)通過WiFi模塊1170可以幫助用戶收發(fā)電子 郵件、瀏覽網(wǎng)頁和訪問流式媒體等,它為用戶提供了無線的寬帶互聯(lián)網(wǎng)訪問。雖然圖7示出 了 WiFi模塊1170,但是可以理解的是,其并不屬于手機(jī)1100的必須構(gòu)成,完全可以根據(jù)需 要在不改變發(fā)明的本質(zhì)的范圍內(nèi)而省略。
[0085] 處理器1180是手機(jī)的控制中心,利用各種接口和線路連接整個手機(jī)的各個部分, 通過運行或執(zhí)行存儲在存儲器1120內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲在存儲器1120 內(nèi)的數(shù)據(jù),執(zhí)行手機(jī)的各種功能和處理數(shù)據(jù),從而對手機(jī)進(jìn)行整體監(jiān)控。可選的,處理器 1180可包括一個或多個處理單元;優(yōu)選的,處理器1180可集成應(yīng)用處理器和調(diào)制解調(diào)處理 器,其中,應(yīng)用處理器主要處理操作系統(tǒng)、用戶界面和應(yīng)用程序等,調(diào)制解調(diào)處理器主要處 理無線通信??梢岳斫獾氖?,上述調(diào)制解調(diào)處理器也可以不集成到處理器1180中。
[0086] 手機(jī)1100還包括給各個部件供電的電源1190(比如電池),優(yōu)選的,電源可以通過 電源管理系統(tǒng)與處理器1180邏輯相連,從而通過電源管理系統(tǒng)實現(xiàn)管理充電、放電、以及 功耗管理等功能。
[0087] 盡管未示出,手機(jī)1100還可以包括攝像頭、藍(lán)牙模塊等,在此不再贅述。
[0088] 以上所述實施例僅表達(dá)了本發(fā)明的幾種實施方式,其描述較為具體和詳細(xì),但并 不能因此而理解為對本發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對于本領(lǐng)域的普通技術(shù)人員 來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保 護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。
【權(quán)利要求】
1. 一種Android虛擬機(jī)加載方法,包括: 加載層級引導(dǎo)對象; 通過所述層級引導(dǎo)對象加載虛擬機(jī)管理對象; 通過所述虛擬機(jī)管理對象讀取虛擬機(jī)配置; 根據(jù)所述虛擬機(jī)配置調(diào)用所述虛擬機(jī)管理對象的虛擬機(jī)創(chuàng)建函數(shù)創(chuàng)建虛擬機(jī)運行實 例。
2. 根據(jù)權(quán)利要求1所述的Android虛擬機(jī)加載方法,其特征在于,所述層級引導(dǎo)對象為 Bootloader 層對象; 所述根據(jù)所述虛擬機(jī)配置調(diào)用所述虛擬機(jī)管理對象的虛擬機(jī)創(chuàng)建函數(shù)創(chuàng)建虛擬機(jī)運 行實例的步驟為: 根據(jù)所述虛擬機(jī)配置調(diào)用所述虛擬機(jī)管理對象的虛擬機(jī)創(chuàng)建函數(shù)創(chuàng)建基于Linux Kernel層的虛擬機(jī)運行實例。
3. 根據(jù)權(quán)利要求2所述的Android虛擬機(jī)加載方法,其特征在于,所述虛擬機(jī)配置還包 括與虛擬機(jī)運行實例對應(yīng)的處理器狀態(tài)寄存器指令集; 所述通過虛擬機(jī)管理對象讀取虛擬機(jī)配置的步驟之后還包括: 通過調(diào)用虛擬機(jī)管理對象的指令編碼函數(shù)對所述處理器狀態(tài)寄存器指令集進(jìn)行編碼。
4. 根據(jù)權(quán)利要求2所述的Android虛擬機(jī)加載方法,其特征在于,所述方法還包括: 通過所述虛擬機(jī)管理對象攔截中斷指令和/或異常指令; 獲取所述中斷指令和/或異常指令對應(yīng)的內(nèi)存地址; 根據(jù)所述內(nèi)存地址將所述中斷指令和/或異常指令傳遞給對應(yīng)的虛擬機(jī)運行實例的 中斷處理函數(shù)和/或異常處理函數(shù)。
5. 根據(jù)權(quán)利要求1所述的Android虛擬機(jī)加載方法,其特征在于,所述層級引導(dǎo)對象為 Linux Kernel 層對象; 所述根據(jù)所述虛擬機(jī)配置調(diào)用所述虛擬機(jī)管理對象的虛擬機(jī)創(chuàng)建函數(shù)創(chuàng)建虛擬機(jī)運 行實例的步驟為: 根據(jù)所述虛擬機(jī)配置調(diào)用所述虛擬機(jī)管理對象的虛擬機(jī)創(chuàng)建函數(shù)創(chuàng)建zygote進(jìn)程; 通過zygote進(jìn)程創(chuàng)建基于Android Runtime層的虛擬機(jī)運行實例。
6. 根據(jù)權(quán)利要求1至5任一項所述的Android虛擬機(jī)加載方法,其特征在于,所述方法 還包括: 獲取虛擬機(jī)切換指令; 根據(jù)所述虛擬機(jī)切換指令調(diào)用所述虛擬機(jī)管理對象的虛擬機(jī)切換函數(shù)切換虛擬機(jī)運 行實例。
7. 根據(jù)權(quán)利要求1至5任一項所述的Android虛擬機(jī)加載方法,其特征在于,所述方法 還包括: 獲取虛擬機(jī)創(chuàng)建指令; 根據(jù)所述虛擬機(jī)創(chuàng)建指令調(diào)用所述虛擬機(jī)管理對象的虛擬機(jī)創(chuàng)建函數(shù)創(chuàng)建虛擬機(jī)運 行實例。
8. -種Android虛擬機(jī)加載裝置,其特征在于,包括: 引導(dǎo)對象加載模塊,用于加載層級引導(dǎo)對象; 管理對象加載模塊,用于通過所述層級引導(dǎo)對象加載虛擬機(jī)管理對象; 配置讀取模塊,用于通過所述虛擬機(jī)管理對象讀取虛擬機(jī)配置; 虛擬機(jī)初始化模塊,用于根據(jù)所述虛擬機(jī)配置調(diào)用所述虛擬機(jī)管理對象的虛擬機(jī)創(chuàng)建 函數(shù)創(chuàng)建虛擬機(jī)運行實例。
9. 根據(jù)權(quán)利要求8所述的Android虛擬機(jī)加載裝置,其特征在于,所述層級引導(dǎo)對象為 Bootloader 層對象; 所述虛擬機(jī)初始化模塊還用于根據(jù)所述虛擬機(jī)配置調(diào)用所述虛擬機(jī)管理對象的虛擬 機(jī)創(chuàng)建函數(shù)創(chuàng)建基于Linux Kernel層的虛擬機(jī)運行實例。
10. 根據(jù)權(quán)利要求9所述的Android虛擬機(jī)加載裝置,其特征在于,所述虛擬機(jī)配置還 包括與虛擬機(jī)運行實例對應(yīng)的處理器狀態(tài)寄存器指令集; 所述配置讀取模塊還用于通過調(diào)用虛擬機(jī)管理對象的指令編碼函數(shù)對所述處理器狀 態(tài)寄存器指令集進(jìn)行編碼。
11. 根據(jù)權(quán)利要求9所述的Android虛擬機(jī)加載裝置,其特征在于,所述裝置還包括指 令調(diào)度模塊,用于通過所述虛擬機(jī)管理對象攔截中斷指令和/或異常指令;獲取所述中斷 指令和/或異常指令對應(yīng)的內(nèi)存地址;根據(jù)所述內(nèi)存地址將所述中斷指令和/或異常指令 傳遞給對應(yīng)的虛擬機(jī)運行實例的中斷處理函數(shù)和/或異常處理函數(shù)。
12. 根據(jù)權(quán)利要求8所述的Android虛擬機(jī)加載裝置,其特征在于,所述層級引導(dǎo)對象 為Linux Kernel層對象; 所述虛擬機(jī)初始化模塊還用于根據(jù)所述虛擬機(jī)配置調(diào)用所述虛擬機(jī)管理對象的虛擬 機(jī)創(chuàng)建函數(shù)創(chuàng)建zygote進(jìn)程;通過zygote進(jìn)程創(chuàng)建基于Android Runtime層的虛擬機(jī)運 行實例。
13. 根據(jù)權(quán)利要求8至12任一項所述的Android虛擬機(jī)加載裝置,其特征在于,所述裝 置還包括虛擬機(jī)切換模塊,用于獲取虛擬機(jī)切換指令;根據(jù)所述虛擬機(jī)切換指令調(diào)用所述 虛擬機(jī)管理對象的虛擬機(jī)切換函數(shù)切換虛擬機(jī)運行實例。
14. 根據(jù)權(quán)利要求8至12任一項所述的Android虛擬機(jī)加載裝置,其特征在于,所述裝 置還包括虛擬機(jī)創(chuàng)建模塊,用于獲取虛擬機(jī)創(chuàng)建指令;根據(jù)所述虛擬機(jī)創(chuàng)建指令調(diào)用所述 虛擬機(jī)管理對象的虛擬機(jī)創(chuàng)建函數(shù)創(chuàng)建虛擬機(jī)運行實例。
【文檔編號】G06F9/445GK104216726SQ201310219141
【公開日】2014年12月17日 申請日期:2013年6月4日 優(yōu)先權(quán)日:2013年6月4日
【發(fā)明者】陳樹華, 戴云峰 申請人:騰訊科技(深圳)有限公司