欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種虛擬機(jī)系統(tǒng)及其實現(xiàn)方法

文檔序號:6340538閱讀:174來源:國知局
專利名稱:一種虛擬機(jī)系統(tǒng)及其實現(xiàn)方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)字電視機(jī)頂盒中間件技術(shù)領(lǐng)域,具體涉及一種kaffe虛擬機(jī)系統(tǒng)的 實現(xiàn)方法。
背景技術(shù)
中間件是處于應(yīng)用軟件和系統(tǒng)軟件之間的一類軟件,中間件能屏蔽底層操作系統(tǒng) 的復(fù)雜性,使程序開發(fā)人員面對一個簡單而統(tǒng)一的開發(fā)環(huán)境,減少程序設(shè)計的復(fù)雜性。在技 術(shù)方面減少了程序在不同系統(tǒng)環(huán)境間的重復(fù)移植工作。Java虛擬機(jī)是機(jī)頂盒中間件核心的 一部分,向上提供應(yīng)用程序接口,向下訪問操作系統(tǒng)和硬件。在這個特定的嵌入式應(yīng)用背景 下,移植Java虛擬機(jī)要考慮軟硬件資源的要求和限制,首先是硬件,這其中最主要的又是 CPU內(nèi)核,我們使用的是QED公司的MIPS5231內(nèi)核。還有內(nèi)存大小,需要選擇占有空間較小 的JVM。軟件主要考慮操作系統(tǒng),提供的是嵌入式Linux,還要考慮對上層應(yīng)用開發(fā)的支持 程度,如必須支持AWT等。從技術(shù)角度來講,目前可以考慮選擇的嵌入式Java虛擬機(jī)有兩 種,一個是Sun 公司的 J2ME體系中的Persnal Basis Prof ile (PBP),另一個是TransVitual 公司的Kaffe。對于MIPS目標(biāo)平臺,如果采用PBP,需要針對處理器做很多移植工作,可能 還會涉及到底層MIPS指令集或者相應(yīng)匯編和硬件中斷的問題,這樣比較復(fù)雜,還不能保證 移植效果。

發(fā)明內(nèi)容
本發(fā)明提供一種kaffe虛擬機(jī)系統(tǒng)及其實現(xiàn)方法,該系統(tǒng)能夠在移植性、伸縮性 和高效率等方面大有改進(jìn),可使用于更多需求場合。本發(fā)明提供的一種kaffe虛擬機(jī)系統(tǒng),包括類管理器,用于加載類和對類的初始化;字節(jié)碼驗證器,用于驗證字節(jié)碼,確保類文件格式的正確性;Kaffe虛擬機(jī)執(zhí)行引擎,包括解釋器和及時編譯器,編譯器用于把字節(jié)碼編譯成本 地機(jī)器代碼,解釋器用于把經(jīng)過編譯的字節(jié)碼解釋成指令執(zhí)行;系統(tǒng)調(diào)用子系統(tǒng),用于調(diào)用本地核心庫的系統(tǒng)調(diào)用;線程子系統(tǒng),用于管理線程創(chuàng)建、刪除;存儲管理子系統(tǒng),用于垃圾回收、新對象/類/數(shù)據(jù)分配;本地方法接口子系統(tǒng),用于各種接口支持。根據(jù)本發(fā)明的另一方面,本發(fā)明還提供一種kaffe虛擬機(jī)的實現(xiàn)方法,包括如下 步驟(1)獲得虛擬機(jī)環(huán)境參數(shù)的缺省值;(2)處理命令行中用戶設(shè)置的參數(shù);(3)為虛擬機(jī)進(jìn)行初始化、分配內(nèi)存;(4)根據(jù)用戶在命令行中提供的主類名尋找主類,將其裝載,再對已裝載類的鏈接和初始化;(5)再對編澤后的主函數(shù)方法的字節(jié)碼逐條加以解釋。進(jìn)一步的,kaffe虛擬機(jī)采用0S20實時操作系統(tǒng),在0S20中任務(wù)的運(yùn)行是基于優(yōu) 先級的大小來分享資源;優(yōu)先級別不同的任務(wù)由調(diào)度內(nèi)核采用搶占的方式來進(jìn)行調(diào)度,而 優(yōu)先級別相同的任務(wù)則采用時間片輪轉(zhuǎn)的方式來進(jìn)行調(diào)度。進(jìn)一步的,通過信號量機(jī)制來控制多任務(wù)對一個共享資源的訪問及任務(wù)之間的同 步,利用消息隊列作為任務(wù)間的一種數(shù)據(jù)通信方式,在0S20中一個消息隊列擁有一定數(shù)量 的消息緩沖區(qū)。進(jìn)一步的,所述消息隊列分成兩部分,一部分是當(dāng)前沒有用的消息緩沖區(qū)一空閑 隊列;另一部分是消息已經(jīng)發(fā)出但還沒有被接受的消息緩沖區(qū)一發(fā)送隊列,一個緩沖區(qū)要 么為空,要么攜帶消息還沒有釋放,所有的消息緩沖區(qū)就在這兩個隊列之間循環(huán),通過信號 量和消息隊列使整個系統(tǒng)順利運(yùn)行。從上述技術(shù)方案可以看出,由于本發(fā)明實施例位于分層設(shè)計的機(jī)頂盒中間件層, 將應(yīng)用程序與依賴于硬件的底層驅(qū)動分隔開,使應(yīng)用程序具有更好的移植性,為將來軟件 的升級提供了方便。Kaffe有自己的平臺相關(guān)本地庫,為減小系統(tǒng)所占空間和易于移植,木 地庫既可配置成動態(tài)的也可配置成靜態(tài)的。這些庫程序?qū)?yīng)Java標(biāo)準(zhǔn)類庫與系統(tǒng)相關(guān)的 本地實現(xiàn)部分,如I/O操作、數(shù)學(xué)函數(shù)、圖形支持、網(wǎng)絡(luò)支持等。且該系統(tǒng)采用模塊化程序設(shè) 計、內(nèi)核小、易于裁剪,從而保證了其可伸縮性和高效率,可適用于多平臺。


附圖1是基于機(jī)頂盒的中間件實現(xiàn)方案;附圖2是Kaffe虛擬機(jī)的體系結(jié)構(gòu);附圖3是Kaffe虛擬機(jī)程序執(zhí)行流程圖。
具體實施例方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。本發(fā)明實施例提供一種kaffe虛擬機(jī)系統(tǒng)的實現(xiàn)方法,該系統(tǒng)有自己的平臺相關(guān) 本地庫,這些庫程序?qū)?yīng)Java標(biāo)準(zhǔn)類庫與系統(tǒng)相關(guān)的本地實現(xiàn)部分,如I/O操作、數(shù)學(xué)函 數(shù)、圖形支持、網(wǎng)絡(luò)支持等。該系統(tǒng)采用模塊化程序設(shè)計、內(nèi)核小、易于裁剪,可伸縮性和高 效率好,可適用于多平臺。以下分別進(jìn)行詳細(xì)說明?;跈C(jī)頂盒的中間件實現(xiàn)方案如附圖1所示,它分為四個層次操作系統(tǒng)層、硬件 驅(qū)動層、中間件層和應(yīng)用層。操作系統(tǒng)層采用實時多任務(wù)操作系統(tǒng);底層驅(qū)動層主要提供操 作系統(tǒng)內(nèi)部及各硬件設(shè)備的驅(qū)動程序;應(yīng)用層包括本機(jī)存儲的應(yīng)用和下載程序;中間件將 應(yīng)用程序與依賴于硬件的底層驅(qū)動分隔開,使應(yīng)用程序具有更好的移植性,為將來軟件的 升級提供了方便。由下向上對各層進(jìn)行簡介硬件驅(qū)動層此層是機(jī)頂盒的硬件環(huán)境,各硬件設(shè)備的驅(qū)動程序通過對硬件設(shè)備 寄存器的讀寫來實現(xiàn)對硬件的控制。音視頻解碼驅(qū)動、解復(fù)用和數(shù)據(jù)表提取、Timer調(diào)諧驅(qū)動、存儲器驅(qū)動、條件接收驅(qū)動及屏幕顯示驅(qū)動等都在這一層實現(xiàn)。設(shè)備驅(qū)動程序控制硬件 設(shè)備,為個人簡表和JavalTVAPI提供支持。 操作系統(tǒng)層此層包括0S20實時操作系統(tǒng)和設(shè)備驅(qū)動程序。本方案所采用的0S20 是一種高效率的實時多任務(wù)操作系統(tǒng),適用于所有ST20系列處理器,提供任務(wù)管理、內(nèi)存 管理、消息隊列服務(wù)、信號量服務(wù)、時鐘和定時器管理、中斷管理等功能。0S20為Java平臺 (CDC)的虛擬機(jī)和類庫的運(yùn)行提供系統(tǒng)級支持。 中間件層中間件系統(tǒng)具有穩(wěn)定性、開放性、交互性、可升級性等特點,使得應(yīng)用程 序的開發(fā)可以基于統(tǒng)一的由中間件提供的接口,應(yīng)用軟件工程師可以不必了解硬件平臺的 具體結(jié)構(gòu),不僅使軟硬件開發(fā)并行,縮短了開發(fā)周期,也大大提高了應(yīng)用軟件在不同硬件平 臺和操作系統(tǒng)上的可移植性。此層包括Java平臺(⑶C)和Java應(yīng)用程序標(biāo)準(zhǔn)接口,它為 Java應(yīng)用程序的運(yùn)行提供完整的Java環(huán)境。其中Java應(yīng)用程序標(biāo)準(zhǔn)接口包括個人簡表和 jBVEirVApl。應(yīng)用層應(yīng)用層是軟件開發(fā)的主要部分之一,位于軟件結(jié)構(gòu)的最上層,是圖形顯示 以用戶界面的編程接口。此層利用中間層提供的標(biāo)準(zhǔn)接口開發(fā)豐富的Java應(yīng)用軟件,向用 戶提供交互式電視節(jié)目。基于系統(tǒng)可移植性和可伸縮性方面的考慮,Kaffe虛擬機(jī)采用模塊化的程序設(shè)計。 如附圖2所示它由多個獨(dú)立的子系統(tǒng)組成(1)類管理器,負(fù)責(zé)加載類和對類的初始化等;(2)字節(jié)碼驗證器,驗證字節(jié)碼,確保類文件格式的正確性;(3)Kaffe虛擬機(jī)執(zhí)行引擎,包括解釋器和及時編譯器,及時編譯器負(fù)責(zé)先把用字 節(jié)碼編譯成本地機(jī)器代碼,解釋器負(fù)責(zé)把一句一句地把經(jīng)過編譯的字節(jié)碼解釋成指令執(zhí) 行。執(zhí)行本地機(jī)器代碼,可以把翻譯的工作量減小,以便讓出CPu時間來運(yùn)行程序邏輯,提 高效率;(4)系統(tǒng)調(diào)用子系統(tǒng),調(diào)用本地核心庫的系統(tǒng)調(diào)用;(5)線程子系統(tǒng),管理線程創(chuàng)建、刪除等;6)存儲管理子系統(tǒng),負(fù)責(zé)垃圾回收、新對象/類/數(shù)據(jù)分配等;(7)本地方法接口子系統(tǒng),負(fù)責(zé)各種接口支持,如JUI支持,本地語言支持等。Kaffe有自己的平臺相關(guān)本地庫,為減小系統(tǒng)所占空間和易于移植,本地庫既可 配置成動態(tài)的也可配置成靜態(tài)的。這些庫程序?qū)?yīng)Java標(biāo)準(zhǔn)類庫與系統(tǒng)相關(guān)的本地實現(xiàn) 部分,如I/O操作、數(shù)學(xué)函數(shù)、圖形支持、網(wǎng)絡(luò)支持等。Kaffe虛擬機(jī)是用C語言實現(xiàn)的,任何 C語言程序的執(zhí)行都是從main函數(shù)開始的,Kaffe也不例外。附圖3是kaffe運(yùn)行時main函數(shù)的程序流程圖,包括包括如下步驟(1)獲得虛 擬機(jī)環(huán)境參數(shù)的缺省值;( 處理命令行中用戶設(shè)置的參數(shù);C3)為虛擬機(jī)進(jìn)行初始化、分 配內(nèi)存;(4)根據(jù)用戶在命令行中提供的主類名尋找主類,將其裝載,再對已裝載類的鏈接 和初始化;( 再對編澤后的主函數(shù)方法的字節(jié)碼逐條加以解釋。它也是整個虛擬機(jī)的執(zhí)行流程圖,具體程序執(zhí)行過程如下①首先獲得虛擬機(jī)環(huán)境參數(shù)的缺省值,獲得該缺省值的功能由函數(shù)JNI_GetDefaU ItJavaVMInitArgs (&vmargs)實現(xiàn),該函數(shù)可結(jié)構(gòu) Kaffe_JavaVMInitArgs 拷貝至Ij vmargs 中。
②處理命令行中用戶設(shè)置的參數(shù),該功能由函數(shù)static int options (char** argv)完成。該函數(shù)的參數(shù)是main(argc,argy)中的argv,也就是使用命令行時Kaffe后 面的部分。它的返回值是一個整形量,表示該函數(shù)處理的參數(shù)量。③為虛擬機(jī)進(jìn)行初始化、分配內(nèi)存。該功能在main函數(shù)中通過調(diào)用函數(shù)jintJNI_ CreateJavaVM(JavaVM** vm, JNIEnv** env, JavaVMInitArgs** args)實現(xiàn)。該函數(shù)中參數(shù) vmags是已經(jīng)被賦初值的虛擬機(jī)參數(shù)集合,該函數(shù)在完成虛擬機(jī)的生成工作后將指向JVM 的指針存放在vm中。虛擬機(jī)生成的工作主要是申請內(nèi)存,然后將其中的參數(shù)進(jìn)行缺省設(shè)置。④根據(jù)用戶在命令行中提供的主類名尋找主類并將其裝載、鏈接、初始化。這是整個虛擬機(jī)執(zhí)行過程的重點。在main函數(shù)中是通過調(diào)用FindClassO實現(xiàn) 的。找到類后,調(diào)用LoadClass ()函數(shù)來裝載類,再調(diào)用ftOcessClassO完成對已裝載類 的鏈接和初始化。裝載、鏈接、初始化都完成后,再對編澤后的main方法的字節(jié)碼逐條加以解釋。任務(wù)(Task)是實時操作系統(tǒng)主要的組成部分,一個任務(wù)就是一個獨(dú)立運(yùn)行的控 制線程,只要存儲空間允許,一個應(yīng)用程序可以被分成任意多個任務(wù)。本kaffe虛擬機(jī)系統(tǒng) 采用0S20實時操作系統(tǒng),在0S20中任務(wù)的運(yùn)行是基于優(yōu)先級的大小來分享資源。優(yōu)先級 別不同的任務(wù)由調(diào)度內(nèi)核采用搶占的方式來進(jìn)行調(diào)度,而優(yōu)先級別相同的任務(wù)則采用時間 片輪轉(zhuǎn)的方式來進(jìn)行調(diào)度。0S20內(nèi)核使用了一個多任務(wù)的調(diào)度算法,確保當(dāng)前運(yùn)行的任務(wù) 具有最高的優(yōu)先級。通過信號量(Semaphore)機(jī)制來控制多任務(wù)對一個共享資源的訪問及任務(wù)之間 的同步。利用消息隊列(MessageQueue)作為任務(wù)間的一種數(shù)據(jù)通信方式。在0S20中一個 消息隊列擁有一定數(shù)量的消息緩沖區(qū)(數(shù)目大小在初始化時決定)。整個隊列分成兩部分, 一部分是當(dāng)前沒有用的消息緩沖區(qū)一空閑隊列;另一部分是消息已經(jīng)發(fā)出但還沒有被接受 的消息緩沖區(qū)一發(fā)送隊列。一個緩沖區(qū)要么為空,要么攜帶消息還沒有釋放,所有的消息緩 沖區(qū)就在這兩個隊列之間循環(huán)。通過信號量和消息隊列使整個系統(tǒng)順利運(yùn)行。本領(lǐng)域普通技術(shù)人員可以理解上述實施例的各種方法中的全部或部分步驟是可 以通過程序來指令相關(guān)的硬件來完成,該程序可以存儲于一計算機(jī)可讀存儲介質(zhì)中,存 儲介質(zhì)可以包括只讀存儲器(ROM,Read Only Memory)、隨機(jī)存取存儲器(RAM,Random Access Memory)、磁盤或光盤等。以上對本發(fā)明實施例所提供的一種kaffe虛擬機(jī)系統(tǒng)的實現(xiàn)方法進(jìn)行了詳細(xì)介 紹,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式
及應(yīng)用范圍上均會有 改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
權(quán)利要求
1.一種kaffe虛擬機(jī)系統(tǒng),其特征在于,包括類管理器,用于加載類和對類的初始化;字節(jié)碼驗證器,用于驗證字節(jié)碼,確保類文件格式的正確性;Kaffe虛擬機(jī)執(zhí)行引擎,包括解釋器和及時編譯器,編譯器用于把字節(jié)碼編譯成本地機(jī) 器代碼,解釋器用于把經(jīng)過編譯的字節(jié)碼解釋成指令執(zhí)行;系統(tǒng)調(diào)用子系統(tǒng),用于調(diào)用本地核心庫的系統(tǒng)調(diào)用;線程子系統(tǒng),用于管理線程創(chuàng)建、刪除;存儲管理子系統(tǒng),用于垃圾回收、新對象/類/數(shù)據(jù)分配;本地方法接口子系統(tǒng),用于各種接口支持。
2.—種kaffe虛擬機(jī)的實現(xiàn)方法,其特征在于,包括如下步驟(1)獲得虛擬機(jī)環(huán)境參數(shù)的缺省值;(2)處理命令行中用戶設(shè)置的參數(shù);(3)為虛擬機(jī)進(jìn)行初始化、分配內(nèi)存;(4)根據(jù)用戶在命令行中提供的主類名尋找主類,將其裝載,再對已裝載類的鏈接和初 始化;(5)再對編澤后的主函數(shù)方法的字節(jié)碼逐條加以解釋。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于kaffe虛擬機(jī)采用0S20實時操作系統(tǒng),在 0S20中任務(wù)的運(yùn)行是基于優(yōu)先級的大小來分享資源;優(yōu)先級別不同的任務(wù)由調(diào)度內(nèi)核采 用搶占的方式來進(jìn)行調(diào)度,而優(yōu)先級別相同的任務(wù)則采用時間片輪轉(zhuǎn)的方式來進(jìn)行調(diào)度。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于通過信號量機(jī)制來控制多任務(wù)對一個共 享資源的訪問及任務(wù)之間的同步,利用消息隊列作為任務(wù)間的一種數(shù)據(jù)通信方式,在0S20 中一個消息隊列擁有一定數(shù)量的消息緩沖區(qū)。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于所述消息隊列分成兩部分,一部分是當(dāng) 前沒有用的消息緩沖區(qū)一空閑隊列;另一部分是消息已經(jīng)發(fā)出但還沒有被接受的消息緩沖 區(qū)一發(fā)送隊列,一個緩沖區(qū)要么為空,要么攜帶消息還沒有釋放,所有的消息緩沖區(qū)就在這 兩個隊列之間循環(huán),通過信號量和消息隊列使整個系統(tǒng)順利運(yùn)行。
全文摘要
本發(fā)明公開了一種kaffe虛擬機(jī)系統(tǒng)及其實現(xiàn)方法。該系統(tǒng)處在機(jī)頂盒分中間件層。它由多個獨(dú)立的子系統(tǒng)組成類管理器,負(fù)責(zé)加載類和對類的初始化等;字節(jié)碼驗證器,驗證字節(jié)碼,確保類文件格式的正確性;Kaffe虛擬機(jī)執(zhí)行引擎,包括解釋器和及時編譯器;系統(tǒng)調(diào)用子系統(tǒng);線程子系統(tǒng);存儲管理子系統(tǒng);木地方法接口子系統(tǒng)。該種kaffe虛擬機(jī)系統(tǒng),具有OpenSource性,且支持Linux/MipS體系嵌入式系統(tǒng)應(yīng)用,內(nèi)核小,可移植性好。
文檔編號G06F9/455GK102096598SQ201010613818
公開日2011年6月15日 申請日期2010年12月30日 優(yōu)先權(quán)日2010年12月30日
發(fā)明者付少云, 宋寶云, 彭國標(biāo), 鄧義宏 申請人:廣州市聚暉電子科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
曲靖市| 宁晋县| 元阳县| 安乡县| 博乐市| 拜泉县| 靖安县| 建始县| 福安市| 花莲县| 塘沽区| 桂林市| 南部县| 凤城市| 伊吾县| 临高县| 吴江市| 江西省| 肥西县| 新野县| 保山市| 九龙城区| 海城市| 桂阳县| 七台河市| 广丰县| 宁海县| 山阳县| 磐安县| 保定市| 宜阳县| 平昌县| 金昌市| 和平区| 聂拉木县| 敦煌市| 隆德县| 清新县| 青州市| 阳谷县| 阿拉善右旗|