專(zhuān)利名稱(chēng):一種基于mtk平臺(tái)的內(nèi)存共享方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種內(nèi)存共享技術(shù),尤其涉及的是一種基于MTK平臺(tái)的內(nèi)存共享方法。
背景技術(shù):
現(xiàn)在移動(dòng)通信終端上的很多媒體功能在運(yùn)行需要獨(dú)占系統(tǒng)很大的內(nèi)存,而現(xiàn)有的 移動(dòng)通信終端的內(nèi)存空間是很有限的,當(dāng)系統(tǒng)內(nèi)存的占用率過(guò)高時(shí),系統(tǒng)的運(yùn)行速度就會(huì) 變慢甚至導(dǎo)致系統(tǒng)死機(jī)。而在系統(tǒng)的內(nèi)存中所有的數(shù)據(jù)并不是所有的時(shí)候都是在運(yùn)行的, 這部分?jǐn)?shù)據(jù)時(shí)常占據(jù)了內(nèi)存中的大部分空間,因此如何在運(yùn)行占內(nèi)存較大的程序時(shí)能夠?qū)?內(nèi)存中閑置的空間利用起來(lái),解決內(nèi)存空間利用緊張的問(wèn)題。因此,現(xiàn)有技術(shù)還有待于改進(jìn)和發(fā)展。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種基于MTK平臺(tái)的內(nèi)存共享方法,旨在解決現(xiàn)有的移動(dòng) 通信終端中內(nèi)存共享的問(wèn)題。本發(fā)明的技術(shù)方案如下
一種基于MTK平臺(tái)的內(nèi)存共享方法,其中,包括以下步驟 A 選擇所要運(yùn)行的功能模塊;
B 檢測(cè)判斷外部存儲(chǔ)卡是否有效,是則執(zhí)行步驟C,否則執(zhí)行步驟G ; C 選擇內(nèi)存中提供內(nèi)存共享的模塊;
D 將選定的所有的提供內(nèi)存共享的模塊中的數(shù)據(jù)保存為一個(gè)數(shù)據(jù)包存放在外部存儲(chǔ) 卡中的指定目錄下;
F:將所運(yùn)行的功能模塊中需要使用較大內(nèi)存的操作指向提供內(nèi)存共享的模塊所在的 內(nèi)存區(qū)域;
G 執(zhí)行所選擇的功能模塊。所述的基于MTK平臺(tái)的內(nèi)存共享方法,其中,還包括步驟
H:功能模塊停止運(yùn)行后,判斷是否需要恢復(fù)提供內(nèi)存共享的模塊中的內(nèi)存數(shù)據(jù),是在 執(zhí)行步驟I,否則執(zhí)行步驟J ;
I 將存儲(chǔ)于外部存儲(chǔ)卡的數(shù)據(jù)包中的內(nèi)存數(shù)據(jù)恢復(fù)回原始的內(nèi)存模塊中; J 退出功能模塊。所述的基于MTK平臺(tái)的內(nèi)存共享方法,其中,還包括步驟
E 修改內(nèi)存中提供內(nèi)存共享的模塊的內(nèi)存空間位置,將所有離散的提供內(nèi)存共享的模 塊的內(nèi)存空間修改為一個(gè)連續(xù)的內(nèi)存區(qū)域。所述的基于MTK平臺(tái)的內(nèi)存共享方法,其中,所述提供內(nèi)存共享的模塊在提供內(nèi) 存共享服務(wù)時(shí)內(nèi)存數(shù)據(jù)處于掛起狀態(tài)。所述的基于MTK平臺(tái)的內(nèi)存共享方法,其中,所述提供內(nèi)存共享的模塊的總內(nèi)存空間要大于功能模塊所需的內(nèi)存空間。本發(fā)明的有益效果本發(fā)明通過(guò)在運(yùn)行程序時(shí),將暫時(shí)處于“休眠”狀態(tài)的內(nèi)存共 享、重復(fù)利用,不僅提高系統(tǒng)的處理速度,而且解決現(xiàn)有的移動(dòng)通信終端經(jīng)常出現(xiàn)的內(nèi)存不 夠用的問(wèn)題。
圖1是本發(fā)明實(shí)施例提供的將提供內(nèi)存共享模塊修改為實(shí)現(xiàn)內(nèi)存共享模塊的示 意圖。圖2是本發(fā)明實(shí)施例提供的內(nèi)存共享方法流程圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚、明確,以下參照附圖并舉實(shí)施例對(duì) 本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。在運(yùn)行對(duì)內(nèi)存要求較高的功能模塊時(shí),需要通過(guò)共享內(nèi)存。在共享內(nèi)存前,將提供 內(nèi)存共享的模塊中的內(nèi)容,以文件的方式保存到外部存儲(chǔ)器中,在退出提供內(nèi)存共享的模 塊前,將保存在外部存儲(chǔ)器中的內(nèi)存數(shù)據(jù)文件,恢復(fù)到相應(yīng)的提供內(nèi)存共享的模塊中。當(dāng)運(yùn)行的功能模塊對(duì)內(nèi)存的需求很高時(shí),會(huì)需要內(nèi)存中的多個(gè)處于掛起狀態(tài)的內(nèi) 存模塊作為提供內(nèi)存共享的模塊,這些能夠提供內(nèi)存共享的模塊在內(nèi)存中的位置不一定是 連續(xù)的,所以需要通過(guò)內(nèi)存空間的修改,將所有離散的提供內(nèi)存共享的模塊修改為在內(nèi)存 中連續(xù)的區(qū)域。參見(jiàn)圖1,例如,某一功能模塊在運(yùn)行過(guò)程中需要內(nèi)存中的三個(gè)處于掛起狀 態(tài)的內(nèi)存模塊(分配給A模塊的內(nèi)存模塊、分配給B模塊的內(nèi)存模塊和分配給C模塊的內(nèi)存 模塊)同時(shí)提供內(nèi)存共享服務(wù),然而這三個(gè)內(nèi)存模塊在內(nèi)存空間中是離散的,如果要為運(yùn)行 的功能模塊提供內(nèi)存共享服務(wù)則需要將這三個(gè)離散的內(nèi)存模塊修改為連續(xù)的內(nèi)存模塊,形 成一個(gè)連續(xù)的內(nèi)存空間。參見(jiàn)圖2,本發(fā)明實(shí)施例提供的內(nèi)存共享方法包括以下步驟 A 選擇所要運(yùn)行的功能模塊;
B 檢測(cè)判斷外部存儲(chǔ)卡是否有效,是則執(zhí)行步驟C,否則執(zhí)行步驟G ; C 選擇內(nèi)存中提供內(nèi)存共享的模塊; D 將選定的所有的提供內(nèi)存共享的模塊中的數(shù)據(jù)保存為一個(gè)數(shù)據(jù)包存放在外部存儲(chǔ) 卡中的指定目錄下;
E 修改內(nèi)存中提供內(nèi)存共享的模塊的內(nèi)存空間位置,將所有離散的提供內(nèi)存共享的模 塊的內(nèi)存空間修改為一個(gè)連續(xù)的內(nèi)存區(qū)域;
F:將所運(yùn)行的功能模塊中需要使用較大內(nèi)存的操作指向提供內(nèi)存共享的模塊所在的 內(nèi)存區(qū)域;
G 執(zhí)行所選擇的功能模塊;
H:功能模塊停止運(yùn)行后,判斷是否需要恢復(fù)提供內(nèi)存共享模塊中的數(shù)據(jù),是在執(zhí)行步 驟I,否則執(zhí)行步驟J ;
I 將存儲(chǔ)于外部存儲(chǔ)卡的數(shù)據(jù)包中的內(nèi)存數(shù)據(jù)恢復(fù)回原始的內(nèi)存模塊中; J 退出功能模塊。
4
下面是一種實(shí)現(xiàn)本發(fā)明目的的具體實(shí)施方法,但本發(fā)明的內(nèi)容不僅限于此種辦 法,使用其它實(shí)施方法實(shí)現(xiàn)本發(fā)明目的的也將落入本發(fā)明范圍之內(nèi)。作為實(shí)現(xiàn)本發(fā)明目的的一種具體實(shí)施方式
,分成三個(gè)步驟 首先選擇需要共享內(nèi)存的功能模塊,例如開(kāi)啟照相功能,或某個(gè)游戲等。提供內(nèi)存共享的模塊把模塊自身的內(nèi)存“貢獻(xiàn)”出來(lái),用作內(nèi)存共享區(qū)域的模塊。 實(shí)現(xiàn)內(nèi)存共享的模塊動(dòng)態(tài)使用提供內(nèi)存共享的模塊“貢獻(xiàn)”出來(lái)的內(nèi)存的功能模塊。如內(nèi) 存中的WAP模塊、JAVA模塊可以做為提供內(nèi)存共享的模塊;照相模塊則做為實(shí)現(xiàn)內(nèi)存共享 模塊。通過(guò)本發(fā)明提供的方法,在執(zhí)行照相功能時(shí),需要很大的內(nèi)存就可以使用WAP模塊及 JAVA模塊的內(nèi)存空間了。用于提供內(nèi)存共享的模塊和實(shí)現(xiàn)內(nèi)存共享的模塊在運(yùn)行時(shí)間上是互斥的。所述時(shí) 間上的互斥是指在運(yùn)行照相模塊時(shí)(實(shí)現(xiàn)內(nèi)存共享模塊),WAP模塊及JAVA模塊(提供內(nèi)存 共享的模塊)一定要先處于掛起狀態(tài)即內(nèi)存數(shù)據(jù)是處于“休眠”狀態(tài)。由于提供內(nèi)存共享的模塊的內(nèi)存一般都比較大,通常都是大數(shù)組組成(如JAVA 運(yùn)行內(nèi)存、堆棧都是一個(gè)上百Kbytes的數(shù)組組成的),這樣實(shí)現(xiàn)起來(lái)相對(duì)簡(jiǎn)單、高效。另外, 實(shí)現(xiàn)內(nèi)存共享模塊在運(yùn)行時(shí),需要外部存儲(chǔ)器的支持(比如T卡),否則將不能實(shí)現(xiàn)共享。第二步是修改共享內(nèi)存的物理位置(見(jiàn)上圖1)
該步驟設(shè)置在進(jìn)入實(shí)現(xiàn)內(nèi)存共享模塊后即運(yùn)行功能模塊后,進(jìn)行內(nèi)存共享操作前,要 先保存提供共享內(nèi)存區(qū)域的內(nèi)容,并將數(shù)據(jù)寫(xiě)在外部存儲(chǔ)器上,退出提供內(nèi)存共享的模塊 前需要將外部存儲(chǔ)器上的共享內(nèi)存數(shù)據(jù)恢復(fù)回來(lái)。在實(shí)現(xiàn)內(nèi)存共享的模塊中,將需要用到較大內(nèi)存分配的地方可以指向所述的共享 內(nèi)存區(qū)域,但要保證需要的內(nèi)存不能超過(guò)共享內(nèi)存的大??;由于在運(yùn)行實(shí)現(xiàn)內(nèi)存共享的模 塊時(shí)需要申請(qǐng)的內(nèi)存比較大,直接從系統(tǒng)的動(dòng)態(tài)內(nèi)存池空間申請(qǐng),是分配不到那么多的內(nèi) 存,所以,需要將這個(gè)大內(nèi)存位置指向提供內(nèi)存共享模塊所在的內(nèi)存區(qū)域。第三步則是內(nèi)存共享的實(shí)現(xiàn),將照相功能運(yùn)行的過(guò)程中需要用到較大內(nèi)存的操 作,指定到修改后的提供內(nèi)存共享的模塊中。當(dāng)照相功能結(jié)束后,再將存儲(chǔ)在外部存儲(chǔ)卡中 的共享內(nèi)存數(shù)據(jù)恢復(fù)到提供內(nèi)存共享的模塊中。最終完成內(nèi)存共享操作。本發(fā)明提供的內(nèi)存共享方法具有以下特點(diǎn)1 由于實(shí)現(xiàn)內(nèi)存共享的模塊跟提供 內(nèi)存共享的模塊在運(yùn)行時(shí)間上是互斥,所以,在執(zhí)行實(shí)現(xiàn)內(nèi)存共享的模塊時(shí),在提供內(nèi)存共 享的模塊的內(nèi)存數(shù)據(jù)是處于“休眠”狀態(tài),數(shù)據(jù)不會(huì)變化的。2 當(dāng)實(shí)現(xiàn)內(nèi)存共享的模塊在運(yùn) 行時(shí),需要申請(qǐng)的較大的動(dòng)態(tài)內(nèi)存空間,而系統(tǒng)的動(dòng)態(tài)分配內(nèi)存池中又沒(méi)有這么多內(nèi)存可 以提供。此時(shí),就可以用提供共享內(nèi)存模塊的“休眠”內(nèi)存。3 實(shí)現(xiàn)內(nèi)存共享模塊在使用提 供共享內(nèi)存模塊的內(nèi)存時(shí),需要滿(mǎn)足兩個(gè)條件A 退出實(shí)現(xiàn)共享內(nèi)存模塊時(shí),不能破壞提 供共享內(nèi)存的“休眠“內(nèi)存,所以,必須執(zhí)行1)中的操作。B:實(shí)現(xiàn)共享內(nèi)存的模塊在運(yùn)行時(shí), 其所需的存空間不能超過(guò)提供共享內(nèi)存的模塊的總內(nèi)存空間。如果超過(guò)了,就會(huì)破壞其它 系統(tǒng)、模塊的內(nèi)存空間,造成系統(tǒng)崩潰。采用本發(fā)明提供的內(nèi)存共享方法的好處不僅提高系統(tǒng)的處理速度,系統(tǒng)內(nèi)存的利 用率,而且解決現(xiàn)有的移動(dòng)通信終端經(jīng)常出現(xiàn)的內(nèi)存不夠用的問(wèn)題。應(yīng)當(dāng)理解的是,本發(fā)明的應(yīng)用不限于上述的舉例,對(duì)本領(lǐng)域普通技術(shù)人員來(lái)說(shuō),可 以根據(jù)上述說(shuō)明加以改進(jìn)或變換,所有這些改進(jìn)和變換都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù)范圍。
權(quán)利要求
1.一種基于MTK平臺(tái)的內(nèi)存共享方法,其特征在于,包括以下步驟 A 選擇所要運(yùn)行的功能模塊;B 檢測(cè)判斷外部存儲(chǔ)卡是否有效,是則執(zhí)行步驟C,否則執(zhí)行步驟G ; C 選擇內(nèi)存中提供內(nèi)存共享的模塊;D 將選定的所有的提供內(nèi)存共享的模塊中的數(shù)據(jù)保存為一個(gè)數(shù)據(jù)包存放在外部存儲(chǔ) 卡中的指定目錄下;F:將所運(yùn)行的功能模塊中需要使用較大內(nèi)存的操作指向提供內(nèi)存共享的模塊所在的 內(nèi)存區(qū)域;G 執(zhí)行所選擇的功能模塊。
2.根據(jù)權(quán)利要求1所述的基于MTK平臺(tái)的內(nèi)存共享方法,其特征在于,還包括步驟 H:功能模塊停止運(yùn)行后,判斷是否需要恢復(fù)提供內(nèi)存共享的模塊中的內(nèi)存數(shù)據(jù),是在執(zhí)行步驟I,否則執(zhí)行步驟J ;I 將存儲(chǔ)于外部存儲(chǔ)卡的數(shù)據(jù)包中的內(nèi)存數(shù)據(jù)恢復(fù)回原始的內(nèi)存模塊中; J 退出功能模塊。
3.根據(jù)權(quán)利要求1所述的基于MTK平臺(tái)的內(nèi)存共享方法,其特征在于,還包括步驟E 修改內(nèi)存中提供內(nèi)存共享的模塊的內(nèi)存空間位置,將所有離散的提供內(nèi)存共享的模 塊的內(nèi)存空間修改為一個(gè)連續(xù)的內(nèi)存區(qū)域。
4.根據(jù)權(quán)利要求1所述的基于MTK平臺(tái)的內(nèi)存共享方法,其特征在于,所述提供內(nèi)存共 享的模塊在提供內(nèi)存共享服務(wù)時(shí)內(nèi)存數(shù)據(jù)處于掛起狀態(tài)。
5.根據(jù)權(quán)利要求1所述的基于MTK平臺(tái)的內(nèi)存共享方法,其特征在于,所述提供內(nèi)存共 享的模塊的總內(nèi)存空間要大于功能模塊所需的內(nèi)存空間。
全文摘要
本發(fā)明公開(kāi)了一種基于MTK平臺(tái)的內(nèi)存共享方法,其特征在于,包括以下步驟A選擇所要運(yùn)行的功能模塊;B檢測(cè)判斷外部存儲(chǔ)卡是否有效,是則執(zhí)行步驟C,否則執(zhí)行步驟G;C選擇內(nèi)存中提供內(nèi)存共享的模塊;D將選定的所有的提供內(nèi)存共享的模塊中的數(shù)據(jù)保存為一個(gè)數(shù)據(jù)包存放在外部存儲(chǔ)卡中的指定目錄下;F將所運(yùn)行的功能模塊中需要使用較大內(nèi)存的操作指向提供內(nèi)存共享的模塊所在的內(nèi)存區(qū)域;G執(zhí)行所選擇的功能模塊。采用本發(fā)明不僅提高系統(tǒng)的處理速度,系統(tǒng)內(nèi)存的利用率,而且解決現(xiàn)有的移動(dòng)通信終端經(jīng)常出現(xiàn)的內(nèi)存不夠用的問(wèn)題。
文檔編號(hào)G06F12/02GK102004699SQ201010559259
公開(kāi)日2011年4月6日 申請(qǐng)日期2010年11月25日 優(yōu)先權(quán)日2010年11月25日
發(fā)明者陳增灼 申請(qǐng)人:康佳集團(tuán)股份有限公司