一種智能終端的程序流式執(zhí)行方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種軟件執(zhí)行領(lǐng)域,尤其涉及一種智能終端的程序流式執(zhí)行方法。
【背景技術(shù)】
[0002]隨著技術(shù)的不斷進(jìn)步,智能終端從手持設(shè)備到通用的可穿戴式設(shè)備也在不斷發(fā)展。智能終端通常包括一個(gè)或多個(gè)低功耗CPU/MQJ(Central Processing Unit,中央處理器/ Micro Control Unit,微控單元),內(nèi)存及周邊設(shè)備。CPU/MCU是主要負(fù)責(zé)運(yùn)行操作系統(tǒng)或設(shè)備的固件軟件。智能終端通常配備有一個(gè)幾千或幾兆字節(jié)的閃存和一個(gè)幾千字節(jié)的內(nèi)存(RAM),在一般情況下,正在運(yùn)行的操作系統(tǒng)或應(yīng)用程序的變量必須存儲(chǔ)在內(nèi)存(RAM,Random Access Memory,隨機(jī)存取存儲(chǔ)器)中,而如圖片、字體等資源數(shù)據(jù)通常存儲(chǔ)在閃存中,以降低操作系統(tǒng)或應(yīng)用程序?qū)?nèi)存的依賴。
[0003]用戶通過在智能終端加載操作系統(tǒng)或應(yīng)用程序來實(shí)現(xiàn)智能終端某一功能上的應(yīng)用,為了更多更好的實(shí)現(xiàn)智能終端的應(yīng)用功能,用戶往往需要在智能終端上安裝許多個(gè)不同的應(yīng)用程序,并且還需要不定時(shí)的更新操作系統(tǒng)和應(yīng)用程序。而在現(xiàn)有技術(shù)中,智能終端的操作系統(tǒng)往往是以固件形式存儲(chǔ)在閃存中,對(duì)操作系統(tǒng)的升級(jí),往往需要通過第三方的程序模塊,下載整個(gè)操作系統(tǒng)升級(jí)包,并擦除整個(gè)閃存中的數(shù)據(jù)內(nèi)容,再將新的操作系統(tǒng)升級(jí)包寫入到閃存中,如現(xiàn)有技術(shù)中的空間下載技術(shù)(0TA,0ver-the-Air Technology)。雖然升級(jí)整個(gè)系統(tǒng)和應(yīng)用程序可以讓用戶在智能終端上獲得更多的服務(wù),但升級(jí)過程可能需要很長的時(shí)間和穩(wěn)定的網(wǎng)絡(luò)。
[0004]在智能終端上存儲(chǔ)大量的應(yīng)用程序,對(duì)智能終端的存儲(chǔ)空間具有很高的要求,隨著應(yīng)用程序的運(yùn)行,智能終端上需要的存儲(chǔ)空間也將會(huì)進(jìn)一步增大,使智能終端變得更加臃腫。并且,隨著操作系統(tǒng)和應(yīng)用程序的功能越來越全面,操作系統(tǒng)和應(yīng)用程序也越來越大,對(duì)智能終端的硬件設(shè)備也提出了越來越高的要求,特別是操作系統(tǒng)和應(yīng)用程序?qū)χ悄芙K端的內(nèi)存空間的需求尤為突出。因此,一種既能夠有效提高智能終端的擴(kuò)展性,方便地獲取新的操作系統(tǒng)和應(yīng)用程序,又能夠降低應(yīng)用程序?qū)χ悄芙K端硬件要求、實(shí)現(xiàn)應(yīng)用程序在智能終端有效執(zhí)行的方法具有顯著的意義。
【發(fā)明內(nèi)容】
[0005]本發(fā)明要解決的技術(shù)問題就在于:針對(duì)現(xiàn)有技術(shù)存在的技術(shù)問題,本發(fā)明提供一種既能夠有效提高智能終端的擴(kuò)展性,方便地獲取新的操作系統(tǒng)和應(yīng)用程序,又能夠降低應(yīng)用程序?qū)χ悄芙K端硬件要求、實(shí)現(xiàn)應(yīng)用程序在智能終端有效執(zhí)行智能終端的程序流式執(zhí)行方法。
[0006]為解決上述技術(shù)問題,本發(fā)明提出的技術(shù)方案為:一種智能終端的程序流式執(zhí)行方法,智能終端在程序執(zhí)行前不存儲(chǔ)有所述程序的程序包;所述程序的程序包由服務(wù)端存儲(chǔ)和管理,根據(jù)ELF文件標(biāo)準(zhǔn),所述程序包包括代碼段(.code段)、只讀數(shù)據(jù)段(.constdata段)、未初始化數(shù)據(jù)段(.bss段)和可讀/寫數(shù)據(jù)段(.data段); 所述智能終端獲取程序執(zhí)行指令,從服務(wù)器端下載所述程序包的未初始化數(shù)據(jù)段和可讀/寫數(shù)據(jù)段,和代碼段,并加載至本地存儲(chǔ)空間,啟動(dòng)程序執(zhí)行,在執(zhí)行過程中,根據(jù)程序?qū)Υa段、只讀數(shù)據(jù)段數(shù)據(jù)的調(diào)用請(qǐng)求,智能終端從服務(wù)端下載所請(qǐng)求的代碼段、只讀數(shù)據(jù)段數(shù)據(jù),并加載至本地存儲(chǔ)空間,供所述程序調(diào)用。
[0007]作為本發(fā)明的進(jìn)一步改進(jìn),所述未初始化數(shù)據(jù)段和可讀/寫數(shù)據(jù)段從服務(wù)器端下載,加載至智能終端的內(nèi)存中;所述代碼段、只讀數(shù)據(jù)段從服務(wù)器端下載,加載至智能終端的閃存中。
[0008]作為本發(fā)明的進(jìn)一步改進(jìn),所述程序包的代碼段、只讀數(shù)據(jù)段、未初始化數(shù)據(jù)段和可讀/寫數(shù)據(jù)段從服務(wù)端下載,均加載至智能終端的內(nèi)存中。
[0009]作為本發(fā)明的進(jìn)一步改進(jìn),在所述智能終端從服務(wù)器端下載所述可執(zhí)行文件前,還包括智能終端為程序分配本地存儲(chǔ)空間的步驟,當(dāng)智能終端空閑的本地存儲(chǔ)空間小于所述程序執(zhí)行所需存儲(chǔ)空間時(shí),終止所述程序的執(zhí)行,釋放程序已占用的資源,否則智能終端為程序分配本地存儲(chǔ)空間。
[0010]作為本發(fā)明的進(jìn)一步改進(jìn),在所述啟動(dòng)程序執(zhí)行前,智能終端僅下載所述可執(zhí)行文件的未初始化數(shù)據(jù)段和可讀/寫數(shù)據(jù)段,以及按照預(yù)設(shè)的分塊方法從服務(wù)端下載代碼段的第一部分。
[0011]作為本發(fā)明的進(jìn)一步改進(jìn),所述程序提出對(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)用。
[0012]作為本發(fā)明的進(jìn)一步改進(jìn),所述智能終端將可執(zhí)行文件的代碼段數(shù)據(jù)加載至本地存儲(chǔ)空間還包括重定位的步驟:所述智能終端根據(jù)代碼段函數(shù)單元、未初始化數(shù)據(jù)段內(nèi)存單元和可讀/寫數(shù)據(jù)段內(nèi)存單元的絕對(duì)地址,將代碼段制單元中的相對(duì)相址修改為絕對(duì)地址。
作為本發(fā)明的進(jìn)一步改進(jìn),所述智能終端根據(jù)映射元數(shù)據(jù)表判斷程序所請(qǐng)求的數(shù)據(jù)是否存儲(chǔ)在本地存儲(chǔ)空間。
[0013]作為本發(fā)明的進(jìn)一步改進(jìn),所述映射元數(shù)據(jù)表包括物理地址、文件代碼、和文件偏移;所述映射元數(shù)據(jù)表的每一條數(shù)據(jù)對(duì)應(yīng)本地存儲(chǔ)空間的一條數(shù)據(jù)。
[0014]作為本發(fā)明的進(jìn)一步改進(jìn),所述智能終端通過傳送列表管理向服務(wù)端下載的數(shù)據(jù);所述智能終端判斷向服務(wù)端申請(qǐng)下載的數(shù)據(jù)是否記載在所述傳送列表中,是則不再向服務(wù)端提出下載申請(qǐng),等待所述數(shù)據(jù)下載完成,否則向服務(wù)端提所述數(shù)據(jù)下載申請(qǐng),將將該數(shù)據(jù)加入傳送列表,從服務(wù)端下載所述數(shù)據(jù)。
[0015]與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于:本發(fā)明能夠有效提高智能終端的擴(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)行。
【附圖說明】
[0016]圖1為本發(fā)明實(shí)施例智能終端硬件結(jié)構(gòu)示意圖。
[0017]圖2為本發(fā)明實(shí)施例服務(wù)端軟件部署示意圖。
[0018]圖3為本發(fā)明實(shí)施例流程示意圖。
[0019]圖4為本發(fā)明實(shí)施例數(shù)據(jù)下載流程示意圖。
[0020]圖5為本發(fā)明實(shí)施例存儲(chǔ)空間劃分及存儲(chǔ)示意圖。
[0021]圖6為本發(fā)明實(shí)施例重定位示意圖。
[0022]圖7為本發(fā)明實(shí)施例映射元數(shù)據(jù)表結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0023]以下結(jié)合說明書附圖和具體優(yōu)選的實(shí)施例對(duì)本發(fā)明作進(jìn)一步描述,但并不因此而限制本發(fā)明的保護(hù)范圍。
[0024]本實(shí)施例一種智能終端的程序流式執(zhí)行方法,智能終端在程序執(zhí)行前不存儲(chǔ)有程序的程序包;程序的程序包由服務(wù)端存儲(chǔ)和管理,根據(jù)ELF文件標(biāo)準(zhǔn),程序包包括代碼段(.code段)、只讀數(shù)據(jù)段(.constdata段)、未初始化數(shù)據(jù)段(.bss段)和可讀/寫數(shù)據(jù)段(.data段);智能終端獲取程序執(zhí)行指令,從服務(wù)器端下載程序包的未初始化數(shù)據(jù)段和可讀/寫數(shù)據(jù)段,和代碼段,并加載至本地存儲(chǔ)空間,啟動(dòng)程序執(zhí)行,在執(zhí)行過程中,根據(jù)程序?qū)Υa段、只讀數(shù)據(jù)段數(shù)據(jù)的調(diào)用請(qǐng)求,智能終端從服務(wù)端下載所請(qǐng)求的代碼段、只讀數(shù)據(jù)段數(shù)據(jù),并加載至本地存儲(chǔ)空間,供程序調(diào)用。在本實(shí)施例中,需要在智能終端上運(yùn)行操作系統(tǒng)視為程序。
[0025]在本實(shí)施例中,智能終端的硬件結(jié)構(gòu)如圖1所示,包括低功率CPU、存儲(chǔ)模塊、通訊模塊和外圍設(shè)備,該存儲(chǔ)模塊包括閃存和內(nèi)存,通訊模塊包括藍(lán)牙模塊、Wifi(無線傳輸)模塊、GPRS(General Packet Rad1 Service)模塊等,通訊模塊可以是其中的一個(gè)或多個(gè),夕卜圍設(shè)備包括但不限于GPS(Global Posit1ning System)定位設(shè)備、陀螺儀、重力感應(yīng)設(shè)備等,外圍設(shè)備可以是其中的一個(gè)或多個(gè)。智能終端包括但不限于智能手表、智能手環(huán)等智能便攜設(shè)備或智能可穿戴設(shè)備。
[0026]在本實(shí)施例中,服務(wù)端存儲(chǔ)有智能終端需要運(yùn)行的程序的程序包。服務(wù)端的軟件部署結(jié)構(gòu)如圖2所示,包括服務(wù)器操作系統(tǒng)、存儲(chǔ)管理、應(yīng)用管理和用戶界面。服務(wù)器操作系統(tǒng)可以是通用的操作每戶,如Windows操作系統(tǒng)、Linux操作系統(tǒng)等,或者是在手持設(shè)備上運(yùn)行的Android操作系統(tǒng)或1S操作系統(tǒng)。存儲(chǔ)管理負(fù)責(zé)管理服務(wù)端本地存儲(chǔ)的數(shù)據(jù)。應(yīng)用管理負(fù)責(zé)管理在智能終端上運(yùn)行的應(yīng)用程序。用戶界面負(fù)責(zé)處理用戶和服務(wù)端之間的交互。服務(wù)端可以是服務(wù)器、PC機(jī)、便攜式計(jì)算機(jī)、平板電腦或智能手機(jī)等。
[0027]在本實(shí)施例中,以“程序A”為例具體說明本發(fā)明程序的流式執(zhí)行過程。如圖3所示,用戶選擇要啟動(dòng)運(yùn)行的“程序A”,向智能終端操作系統(tǒng)發(fā)送“程序A”執(zhí)行指令,用戶可以通過在智能終端的用戶操作界面上選擇要啟動(dòng)的“程序A”發(fā)送執(zhí)行指令,也可以通過在服務(wù)端選擇要啟動(dòng)的“程序A”,通過網(wǎng)絡(luò)向智能終端發(fā)送執(zhí)行指令。
[0028]智能終端獲取“程序A”的執(zhí)行指令,為“程序A”估算所需要的存儲(chǔ)空間大小,當(dāng)智能終端的空閑存儲(chǔ)空間大小小于所估算的存儲(chǔ)空間大小時(shí),終止程序的執(zhí)行,釋放程序已占用的資源,否則智能終端為程序分配本地存儲(chǔ)空間。該存儲(chǔ)空間包括閃存的存儲(chǔ)空間和內(nèi)存中的存儲(chǔ)空間。智能終端在閃存中為“程序A”分配代碼段存儲(chǔ)區(qū)、只讀數(shù)據(jù)段存儲(chǔ)區(qū)、未初始化數(shù)據(jù)段存儲(chǔ)區(qū)和可讀/寫數(shù)據(jù)段存儲(chǔ)區(qū),并在內(nèi)存為分配未初始化數(shù)據(jù)段存儲(chǔ)區(qū)和可讀/寫數(shù)據(jù)段存儲(chǔ)