專利名稱:嵌入式點對點下載系統的內存分配方法
技術領域:
本發明涉及到嵌入式技術領域以及網絡下載技術領域,其中特別涉及到一種嵌入式點對 點(BitTorrent, BT)下載系統的內存分配技術。
背景技術:
隨著信息技術的發展嵌入式技術也不斷的發展壯大,嵌入式技術針對特有的應用而設計 ,具有功耗小,體積小和使用方便的特點。然而也正是由于這些特點限制了嵌入式系統的某 些功能,比如嵌入式系統的處理器功能不夠強大,嵌入式系統的內存資源比較小,從而限制 了比較大型的較占內存資源的應用程序在其上的應用。
BT下載技術是超文本傳輸協議(Hyper Text Transfer Protocol, HTTP)下載技術和文 件傳輸協議(File Transfer Protocol, FTP)下載技術之后出現的另一種網絡資源共享技 術。將BT下載應用于嵌入式系統中存在一些技術難點,比如BT下載技術需要占用比較大的內 存開銷和處理器資源,而嵌入式系統的內存資源很有限。另外,BT下載過程中需要不斷地動 態地向系統申請內存和釋放內存資源,這樣的內存操作會造成嵌入式系統產生較多的內存碎 片。
發明內容
本發明所要解決的技術問題是,提出一種嵌入式BT下載系統的內存分配方法,能有效分 配嵌入式系統中有限的內存資源,使BT下載這種較占內存資源的應用能在嵌入式系統中穩定 運行;進一步的,還能降低內存碎片的產生。
本發明為解決上述技術問題所采用的技術方案是,嵌入式點對點下載系統的內存分配方 法,下載系統為節點分配一段內存鏈表作為下載分配內存;所述內存鏈表指向下載系統中若 干小塊內存區域。
在所述節點使用過程中,下載系統將該節點標識為使用中狀態;所述使用中狀態表示其 它節點無法復用該節點所對應的該段內存鏈表所指向的小塊內存區域;在所述節點使用完畢 后,下載系統將該節點標識為空閑狀態;所述空閑狀態表示其它節點可復用該節點所對應的 該段內存鏈表所指向的小塊內存區域。
具體包括以下步驟
a、下載系統獲得節點信息,并創建該節點為新節點;b、 下載系統遍歷節點鏈表,査找是否有被標識為空閑狀態的節點;若是,進入步驟c; 若否,進入步驟d;
c、 下載系統控制新節點復用査找到的空閑狀態的節點所對應的一段內存鏈表所指向的 小塊內存區域,并重新標識所述空閑狀態的節點為使用中狀態;進入步驟e;
d、 下載系統為新節點重新分配一段內存鏈表作為下載分配內存;并將所述新節點添加 至節點鏈表,并標識該新節點為使用中狀態;進入步驟e;
e、 下載系統與新節點數據傳輸完畢,將該處于使用中狀態的節點標識為空閑狀態。 本發明的有益效果是,使用一連串小塊的內存來代替一大塊連續內存,解決了嵌入式系
統內存資源有限,大塊連續內存申請難度大,而BT下載需要較大的內存消耗的矛盾;進一步 的,通過對已分配的內存資源復用,最大程度的降低了內存碎片的產生。
圖1為現有的BT下載系統中對節點的內存分配和釋放流程圖; 圖2為本發明的內存分配方法流程圖。
具體實施例方式
本發明主要是要解決了現有技術的兩大矛盾,矛盾一是嵌入式系統內存資源有限,而 BT下載是需要較大的內存消耗,并有時需要向系統申請較大塊連續內存區域;
矛盾二是嵌入式系統通存的問題,因而在進行嵌入式軟件開發的時候需要特別留意,而 BT下載應用對內存使用的特點使得內存碎片問題日益突出,如附圖1所示是傳統BT下載方法 中Peer的內存分配和釋放示意圖,在傳統的BT下載方法中,每一個Peer先后經歷獲取Peer、 創建Peer、為Peer分配內存、傳輸數據、完成傳輸和釋放內存等六個階段,如此反復直到下 載完成。通過下載系統不斷的獲取Peer,創建新Peer并為新Peer分配內存,最后釋放Peer所 占用內存,如此一直循環導致內存碎片產生,可供分配的較大塊內存越來越少,最后導致大 塊內存分配失敗,系統出現死機的嚴重后果。
本發明通過將大塊連續內存化整為零,以一個內存鏈表來代替大塊連續內存,內存鏈表 指向下載系統中若干小塊內存區域。因為大塊連續內存可能申請不到,但是一連串小塊的內 存是可以分配到的,從而解決了上文提到的矛盾一。
本方法通過內存復用的方式來解決矛盾二。具體方法如下
當新Peer創建時,系統為其分配內存,并將該Peer添加入一個Peer鏈表中,當該Peer使 用完畢后其所占用的內存資源不被釋放,而只是在Peer鏈表中標識該節點區域內存資源處于 空閑狀態;空閑狀態表示其它節點可復用該節點所對應的該段內存鏈表所指向的小塊內存區 域。
當再有Peer創建時,系統首先去Peer鏈表中搜尋是否有處于空閑狀態的節點可以用,如 有,則該Peer復用該段內存區域,并將該Peer標識為使用中狀態;使用中狀態表示其它 Peer無法復用該節點所對應的該段內存鏈表所指向的小塊內存區域;若沒有則系統對其重新 分配內存資源,并將該Peer也加入Peer鏈表中。如此重復,由于不斷的有Peer產生和消除, 而其所使用的內存資源不需要重復的向系統申請,也不需要重復的去釋放所占有的內存資源 ,最大程度的降低了內存碎片的產生。
如附圖2所示是本發明提出了基于嵌入式系統的BT下載內存分配方法示意圖,該方法的 流程說明如下
1. 系統通過與軌道(Tracker)通信或通過動態哈希表(DHT, Distribute Hash Table)方式獲取到Peer集,Peer集中主要包含Peer的IP地址和端口號(Port)信息;
2. 系統利用獲取到的Peer相關信息創建新的Peer;
3. 系統創建了新Peer,系統遍歷節點鏈表(PeerList),尋找PeerList中是否有空閑 的Peer可供使用;
4. 步驟3中,若PeerList中無空閑的Peer可供使用,則系統為該新Peer申請新的內存 資源;
5. 在步驟4中,系統已經為新Peer分配了新的內存空間,然后系統將此新Peer添加入 PeerList尾;
6. 標識該新Peer的狀態為使用中狀態,也就是其他的Peer無法復用其內存資源;
7. 創建了Peer之后,系統與該Peer進行通信并進行數據的交換與傳輸;
8. 系統與該Peer數據傳輸完畢;
9. 系統將該處于使用中狀態的Peer標識為空閑狀態,使得后來的新創建的Peer能復用 其內存資源,系統進入下一次獲取Peer階段;
10. 在步驟3中,若系統遍歷PeerList鏈表時獲取到鏈表中存在空閑的Peer,那個新創 建的Peer將復用空閑Peer的內存資源,而無需再向系統申請新的內存空間;
11. 系統將空閑Peer的狀態標識為使用中狀態;
12. 系統與新建的Peer創建連接,建立通信并交換數據;
13. 系統與新建的Peer完成數據的交換與傳輸;
14. 系統將處于使用中狀態的Peer的標識為空閑狀態,使得后來新創建的Peer能復用其
內存資源,然后系統進入下一次獲取Peer階段。
權利要求
1.嵌入式點對點下載系統的內存分配方法,其特征在于,下載系統為節點分配一段內存鏈表作為下載分配內存;所述內存鏈表指向下載系統中若干小塊內存區域。
2.如權利要求l所述嵌入式點對點下載系統的內存分配方法,其特征 在于,在所述節點使用過程中,下載系統將該節點標識為使用中狀態;所述使用中狀態表示 其它節點無法復用該節點所對應的該段內存鏈表所指向的小塊內存區域;在所述節點使用完畢后,下載系統將該節點標識為空閑狀態;所述空閑狀態表示其它 節點可復用該節點所對應的該段內存鏈表所指向的小塊內存區域。
3.如權利要求2所述嵌入式點對點下載系統的內存分配方法,其特征 在于,具體包括以下步驟a、 下載系統獲得節點信息,并創建該節點為新節點;b、 下載系統遍歷節點鏈表,査找是否有被標識為空閑狀態的節點;若是,進入步驟c ;若否,進入步驟d;c、 下載系統控制新節點復用査找到的空閑狀態的節點所對應的一段內存鏈表所指向的 小塊內存區域,并重新標識所述空閑狀態的節點為使用中狀態;進入步驟e;d、 下載系統為新節點重新分配一段內存鏈表作為下載分配內存;并將所述新節點添加 至節點鏈表,并標識該新節點為使用中狀態;進入步驟e;e、 下載系統與新節點數據傳輸完畢,將該處于使用中狀態的節點標識為空閑狀態。
全文摘要
本發明涉及嵌入式網絡下載領域。本發明提出一種有效分配內存資源的嵌入式BT下載系統的內存分配方法。嵌入式點對點下載系統的內存分配方法下載系統為節點分配一段內存鏈表作為下載分配內存;所述內存鏈表指向下載系統中若干小塊內存區域。節點使用過程中,將該節點標識為使用中狀態;其它節點無法復用該節點所對應的該段內存鏈表所指向的小塊內存區域;節點使用完畢后,將該節點標識為空閑狀態;其它節點可復用該節點所對應的該段內存鏈表所指向的小塊內存區域。本發明解決了嵌入式系統內存資源有限,大塊連續內存申請難度大,而BT下載需要較大的內存消耗的矛盾;進一步的,通過對已分配的內存資源復用,最大程度的降低了內存碎片的產生。
文檔編號G06F12/02GK101354679SQ200810304240
公開日2009年1月28日 申請日期2008年8月27日 優先權日2008年8月27日
發明者尤金剛, 居文軍, 彭世偉, 梁應龍, 琳 蔡 申請人:四川長虹電器股份有限公司