區(qū),分別用來(lái)存儲(chǔ)“程序A”的未初始化數(shù)據(jù)段和可讀/寫(xiě)數(shù)據(jù)段。其中,代碼段存儲(chǔ)區(qū)分為函數(shù)單元和制單元,分別用來(lái)存儲(chǔ)代碼段的函數(shù)代碼和控制流。如圖5所示,左圖為“程序A”加載至存儲(chǔ)空間前的狀態(tài),右圖為“程序A”加載至存儲(chǔ)空間后的狀態(tài)。需要說(shuō)明的是,當(dāng)然也可以不在閃存中分配未初始化數(shù)據(jù)段存儲(chǔ)區(qū)和可讀/寫(xiě)數(shù)據(jù)段存儲(chǔ)區(qū),直接將從服務(wù)端下載的未初始化數(shù)據(jù)段和可讀/寫(xiě)數(shù)據(jù)段存儲(chǔ)至智能終端在內(nèi)存中所分配的未初始化數(shù)據(jù)段存儲(chǔ)區(qū)和可讀/寫(xiě)數(shù)據(jù)段存儲(chǔ)區(qū)。或者,不在閃存中分配存儲(chǔ)空間,而只在內(nèi)存中為“程序A”分配代碼段存儲(chǔ)區(qū)、只讀數(shù)據(jù)段存儲(chǔ)區(qū)、未初始化數(shù)據(jù)段存儲(chǔ)區(qū)和可讀/寫(xiě)數(shù)據(jù)段存儲(chǔ)區(qū),智能終端直接將從服務(wù)端下載的代碼段、只讀數(shù)據(jù)段、未初始化數(shù)據(jù)段和可讀/寫(xiě)數(shù)據(jù)段加載至內(nèi)存中,當(dāng)然,采用這種存儲(chǔ)分配方式,需要占用較大的內(nèi)存空間。
[0029]在本實(shí)施例中,智能終端為“程序A”分配好存儲(chǔ)空間,按照預(yù)設(shè)的分塊方法從服務(wù)端下載代碼段的第一部分,以及完整的未初始化數(shù)據(jù)段和可讀/寫(xiě)數(shù)據(jù)段。該預(yù)設(shè)的分塊方法可以是按照代碼段的代碼規(guī)律,如按照函數(shù)、過(guò)程進(jìn)行劃分分塊。在本實(shí)施例中,該代碼段的第一部分僅僅是“程序A”的入口函數(shù)部分。當(dāng)然,該第一部分也可以是按照其它分塊方法的第一部分,甚至是整個(gè)代碼段。
[0030]智能終端向服務(wù)端請(qǐng)求并下載完整的未初始化數(shù)據(jù)段和可讀/寫(xiě)數(shù)據(jù)段,以及必要的代碼段,并加載至本地存儲(chǔ)空間,在本實(shí)施例中,必要的代碼段為代碼段的第一部分,如下載不成功,則結(jié)束“程序A”的執(zhí)行,并釋放存儲(chǔ)空間。包括將存儲(chǔ)在閃存中的未初始化數(shù)據(jù)段和可讀/寫(xiě)數(shù)據(jù)段轉(zhuǎn)移至內(nèi)存中,圖5中的右圖為未初始化數(shù)據(jù)段和可讀/寫(xiě)數(shù)據(jù)段轉(zhuǎn)移至內(nèi)存后的存儲(chǔ)狀態(tài),并對(duì)代碼段進(jìn)行重定位。在本實(shí)施例中,重定位的過(guò)程為:收集代碼段存儲(chǔ)區(qū)函數(shù)單元的物理地址,并根據(jù)該物理地址修改代碼段存儲(chǔ)區(qū)制單元中控制流函數(shù)的相對(duì)地址,收集未初始化數(shù)據(jù)段存儲(chǔ)區(qū)和可讀/寫(xiě)數(shù)據(jù)段存儲(chǔ)區(qū)的內(nèi)存單元物理地址,并根據(jù)該物理地址修改代碼段存儲(chǔ)區(qū)制單元中控制流讀/寫(xiě)指令的相對(duì)地址。如圖5和6所示,圖5右圖為重定位前的存儲(chǔ)狀態(tài),代碼段制單元中存儲(chǔ)均為相對(duì)地址,圖6為重定位后的存儲(chǔ)狀態(tài),代碼段存儲(chǔ)區(qū)制單元中的相對(duì)地址按照實(shí)際存儲(chǔ)狀態(tài)修改為實(shí)際的物理地址,即絕對(duì)地址。在完成代碼段重定位后,根據(jù)“程序A”的入口函數(shù),啟動(dòng)該程序的執(zhí)行。在本實(shí)施例中,程序啟動(dòng)時(shí)智能終端僅需要下載程序包的部分?jǐn)?shù)據(jù),而不需要下載整個(gè)程序包,大大縮短了程序等待下載的時(shí)間,啟動(dòng)速度快,對(duì)閃存和內(nèi)存的存儲(chǔ)空間要求低。
[0031 ]在本實(shí)施例中,由于在“程序A”啟動(dòng)執(zhí)行前,智能終端只加載了 “程序A”的未初始化數(shù)據(jù)段和可讀/寫(xiě)數(shù)據(jù)段,以及代碼段的第一部分,因此,在“程序A”的執(zhí)行過(guò)程中,如果CPU訪問(wèn)的函數(shù)沒(méi)有加載到代碼段存儲(chǔ)區(qū)的函數(shù)段,將會(huì)發(fā)出代碼段的數(shù)據(jù)調(diào)用請(qǐng)求,智能終端將從服務(wù)端下載所請(qǐng)求的代碼段,并存入閃存中的代碼段存儲(chǔ)區(qū),并進(jìn)行重定位,供CPU調(diào)用。如果CPU訪問(wèn)的只讀數(shù)據(jù)段數(shù)據(jù)沒(méi)有加載到只讀數(shù)據(jù)段存儲(chǔ)區(qū),將會(huì)發(fā)出只讀數(shù)據(jù)段的數(shù)據(jù)調(diào)用請(qǐng)求,智能終端將從服務(wù)端下載所請(qǐng)求的只讀數(shù)據(jù)段,并存入閃存中的只讀數(shù)據(jù)段存儲(chǔ)區(qū),供(PU調(diào)用。
[0032]在本實(shí)施例中,如圖7所示,智能終端通過(guò)映射元數(shù)據(jù)表判斷所CPU所訪問(wèn)的數(shù)據(jù)是否存儲(chǔ)在本地閃存中,映射元數(shù)據(jù)表包括物理地址、文件代碼、和文件偏移;該映射元數(shù)據(jù)表按照閃存的物理地址進(jìn)行排序,每一條數(shù)據(jù)對(duì)應(yīng)本地存儲(chǔ)空間的一條數(shù)據(jù)。CPU提出數(shù)據(jù)訪問(wèn)請(qǐng)求時(shí),包括有所請(qǐng)求數(shù)據(jù)所在文件的文件代碼和文件偏移,通過(guò)該映射元數(shù)據(jù)表,可以判斷所請(qǐng)求的數(shù)據(jù)時(shí)否存儲(chǔ)在閃存中,是則直接將該數(shù)據(jù)供CPU訪問(wèn),否則,通過(guò)該文件代碼和文件偏移向服務(wù)端申請(qǐng)下載。因?yàn)橛成湓獢?shù)據(jù)表中內(nèi)容需要長(zhǎng)期保存,映射元數(shù)據(jù)表存儲(chǔ)在閃存中,當(dāng)然也可以存儲(chǔ)在內(nèi)存中并周期性的刷新到閃存或服務(wù)端。
[0033]如圖4所示,在本實(shí)施例中,當(dāng)CPU所訪問(wèn)的數(shù)據(jù)不在本地閃存中時(shí),智能終端需要向服務(wù)端申請(qǐng)下載數(shù)據(jù)。智能終端判斷向服務(wù)端申請(qǐng)下載的數(shù)據(jù)是否記載在傳送列表中,是則不再向服務(wù)端提出下載申請(qǐng),等待數(shù)據(jù)下載完成,否則通過(guò)所訪問(wèn)數(shù)據(jù)的文件代碼和文件偏移向服務(wù)端提數(shù)據(jù)下載申請(qǐng),將將該數(shù)據(jù)加入傳送列表,從服務(wù)端下載數(shù)據(jù)。智能終端等待數(shù)據(jù)下載完成,將所下載的數(shù)據(jù)供(PU訪問(wèn)調(diào)用。
[0034]在本實(shí)施例中,程序執(zhí)行結(jié)束,智能終端將卸載該程序,釋放所占用的內(nèi)存空間和閃存空間。
[0035]本發(fā)明智能終端本身不存儲(chǔ)應(yīng)用程序,僅在需要運(yùn)行應(yīng)用程序時(shí)按調(diào)用需求從服務(wù)端流式的加載到本地存儲(chǔ)空間,進(jìn)行運(yùn)行。通過(guò)本發(fā)明的方法,智能終端幾乎可以無(wú)限制的使用服務(wù)端的程序資源,大大提高了智能終端的擴(kuò)展性,智能終端能夠方便地獲取新的操作系統(tǒng)和應(yīng)用程序,又能夠降低應(yīng)用程序?qū)χ悄芙K端硬件要求,特別是應(yīng)用程序?qū)﹂W存空間和內(nèi)存空間的需求,能夠?qū)崿F(xiàn)應(yīng)用程序在僅有較小閃存空間和內(nèi)存空間的智能終端有效運(yùn)行。
[0036]上述只是本發(fā)明的較佳實(shí)施例,并非對(duì)本發(fā)明作任何形式上的限制。雖然本發(fā)明已以較佳實(shí)施例揭露如上,然而并非用以限定本發(fā)明。因此,凡是未脫離本發(fā)明技術(shù)方案的內(nèi)容,依據(jù)本發(fā)明技術(shù)實(shí)質(zhì)對(duì)以上實(shí)施例所做的任何簡(jiǎn)單修改、等同變化及修飾,均應(yīng)落在本發(fā)明技術(shù)方案保護(hù)的范圍內(nèi)。
【主權(quán)項(xiàng)】
1.一種智能終端的程序流式執(zhí)行方法,其特征在于:智能終端在程序執(zhí)行前不存儲(chǔ)有所述程序的程序包;所述程序的程序包由服務(wù)端存儲(chǔ)和管理,根據(jù)ELF文件標(biāo)準(zhǔn),所述程序包包括代碼段、只讀數(shù)據(jù)段、未初始化數(shù)據(jù)段和可讀/寫(xiě)數(shù)據(jù)段; 所述智能終端獲取程序執(zhí)行指令,從服務(wù)器端下載所述程序包的未初始化數(shù)據(jù)段和可讀/寫(xiě)數(shù)據(jù)段,和代碼段,并加載至本地存儲(chǔ)空間,啟動(dòng)程序執(zhí)行,在執(zhí)行過(guò)程中,根據(jù)程序?qū)Υa段、只讀數(shù)據(jù)段數(shù)據(jù)的調(diào)用請(qǐng)求,智能終端從服務(wù)端下載所請(qǐng)求的代碼段、只讀數(shù)據(jù)段數(shù)據(jù),并加載至本地存儲(chǔ)空間,供所述程序調(diào)用。2.根據(jù)權(quán)利要求1所述的智能終端的程序流式執(zhí)行方法,其特征在于:所述未初始化數(shù)據(jù)段和可讀/寫(xiě)數(shù)據(jù)段從服務(wù)器端下載,加載至智能終端的內(nèi)存中;所述代碼段、只讀數(shù)據(jù)段從服務(wù)器端下載,加載至智能終端的閃存中。3.根據(jù)權(quán)利要求1所述的智能終端的程序流式執(zhí)行方法,其特征在于:所述程序包的代碼段、只讀數(shù)據(jù)段、未初始化數(shù)據(jù)段和可讀/寫(xiě)數(shù)據(jù)段從服務(wù)端下載,均加載至智能終端的內(nèi)存中。4.根據(jù)權(quán)利要求2或3所述的智能終端的程序流式執(zhí)行方法,其特征在于:在所述智能終端從服務(wù)器端下載所述可執(zhí)行文件前,還包括智能終端為程序分配本地存儲(chǔ)空間的步驟,當(dāng)智能終端空閑的本地存儲(chǔ)空間小于所述程序執(zhí)行所需存儲(chǔ)空間時(shí),終止所述程序的執(zhí)行,釋放程序已占用的資源,否則智能終端為程序分配本地存儲(chǔ)空間。5.根據(jù)權(quán)利要求4所述的智能終端的程序流式執(zhí)行方法,其特征在于:在所述啟動(dòng)程序執(zhí)行前,智能終端僅下載所述可執(zhí)行文件的未初始化數(shù)據(jù)段和可讀/寫(xiě)數(shù)據(jù)段,以及按照預(yù)設(shè)的分塊方法從服務(wù)端下載代碼段的第一部分。6.根據(jù)權(quán)利要求5所述的智能終端的程序流式執(zhí)行方法,其特征在于:所述程序提出對(duì)代碼段、只讀數(shù)據(jù)段數(shù)據(jù)的調(diào)用請(qǐng)求時(shí),判斷所請(qǐng)求數(shù)據(jù)是否存儲(chǔ)在本地存儲(chǔ)空間中,是則直接將本地存儲(chǔ)空間中的數(shù)據(jù)供程序調(diào)用,否則,智能終端從服務(wù)端下載所請(qǐng)求數(shù)據(jù),并加載至本地存儲(chǔ)空間,供程序調(diào)用。7.根據(jù)權(quán)利要求6所述的智能終端的程序流式執(zhí)行方法,其特征在于,所述智能終端將可執(zhí)行文件的代碼段數(shù)據(jù)加載至本地存儲(chǔ)空間還包括重定位的步驟:所述智能終端根據(jù)代碼段函數(shù)單元、未初始化數(shù)據(jù)段內(nèi)存單元和可讀/寫(xiě)數(shù)據(jù)段內(nèi)存單元的絕對(duì)地址,將代碼段制單元中的相對(duì)相址修改為絕對(duì)地址。8.根據(jù)權(quán)利要求7所述的智能終端的程序流式執(zhí)行方法,其特征在于:所述智能終端根據(jù)映射元數(shù)據(jù)表判斷程序所請(qǐng)求的數(shù)據(jù)是否存儲(chǔ)在本地存儲(chǔ)空間。9.根據(jù)權(quán)利要求8所述的智能終端的程序流式執(zhí)行方法,其特征在于:所述映射元數(shù)據(jù)表包括物理地址、文件代碼、和文件偏移;所述映射元數(shù)據(jù)表的每一條數(shù)據(jù)對(duì)應(yīng)本地存儲(chǔ)空間的一條數(shù)據(jù)。10.根據(jù)權(quán)利要求9所述的智能終端的程序流式執(zhí)行方法,其特征在于:所述智能終端通過(guò)傳送列表管理向服務(wù)端下載的數(shù)據(jù);所述智能終端判斷向服務(wù)端申請(qǐng)下載的數(shù)據(jù)是否記載在所述傳送列表中,是則不再向服務(wù)端提出下載申請(qǐng),等待所述數(shù)據(jù)下載完成,否則向服務(wù)端提所述數(shù)據(jù)下載申請(qǐng),將將該數(shù)據(jù)加入傳送列表,從服務(wù)端下載所述數(shù)據(jù)。
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種智能終端的程序流式執(zhí)行方法,智能終端在程序執(zhí)行前不存儲(chǔ)有所述程序的程序包;所述程序的程序包由服務(wù)端存儲(chǔ)和管理,根據(jù)ELF文件標(biāo)準(zhǔn),程序包包括代碼段、只讀數(shù)據(jù)段、未初始化數(shù)據(jù)段和可讀/寫(xiě)數(shù)據(jù)段;智能終端獲取程序執(zhí)行指令,從服務(wù)器端下載程序包的未初始化數(shù)據(jù)段和可讀/寫(xiě)數(shù)據(jù)段,和代碼段,并加載至本地存儲(chǔ)空間,啟動(dòng)程序執(zhí)行,在執(zhí)行過(guò)程中,根據(jù)程序?qū)Υa段、只讀數(shù)據(jù)段數(shù)據(jù)的調(diào)用請(qǐng)求,智能終端從服務(wù)端下載所請(qǐng)求的代碼段、只讀數(shù)據(jù)段數(shù)據(jù),并加載至本地存儲(chǔ)空間,供所述程序調(diào)用。本發(fā)明具有有效提高智能終端的擴(kuò)展性,降低對(duì)硬件要求,實(shí)現(xiàn)應(yīng)用程序在僅有較小閃存空間和內(nèi)存空間的智能終端有效運(yùn)行等優(yōu)點(diǎn)。
【IPC分類(lèi)】G06F9/54, G06F9/445
【公開(kāi)號(hào)】CN105718287
【申請(qǐng)?zhí)枴緾N201610036352
【發(fā)明人】易樂(lè)天, 張堯?qū)W, 李建彬
【申請(qǐng)人】中南大學(xué)
【公開(kāi)日】2016年6月29日
【申請(qǐng)日】2016年1月20日