音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

淺談內(nèi)存分配

作者:eleven11 欄目:ARM技術(shù)
淺談內(nèi)存分配
在arm7上如果合理利用ram,就要利用內(nèi)存分配實現(xiàn)內(nèi)存共享,內(nèi)存分配用的最廣的是塊分配,統(tǒng)一大小的塊仍然會引起內(nèi)存碎片,而且塊越小附加屬性消耗越大,而不同大小的內(nèi)存塊組實際上沒有全局變量組好

在比較小的ram上,要合理利用內(nèi)存資源最好的辦法是實現(xiàn)可變長度內(nèi)存分配,ucgui,zlip都是用的這種方法,仍然有些不足,就是碎片問題,解決辦法可以想lgui那樣預(yù)定義堆空間,當(dāng)堆空間分配完后再從全部內(nèi)存池那里分配內(nèi)存,但當(dāng)堆對象比較多的時候,又引起了一部分浪費,比較折衷的辦法是,當(dāng)需要分配的內(nèi)存比較小的時候,將分配的內(nèi)存從尾部計算,當(dāng)比較大的時候,從頭部開始計算,同時為了快速尋找,分別記錄大內(nèi)存分配的頭和小內(nèi)存分配的頭,當(dāng)釋放的內(nèi)存地址先于記錄的時候,替換頭變量

arm7要合理利用片內(nèi)內(nèi)存實際上要比有mmu的arm9復(fù)雜,遠(yuǎn)沒有一些人想的那么簡單。

2樓: >>參與討論
rockos
沒有最好, 也沒有更好, 只的合適與否

管理精細(xì), 通常算法也復(fù)雜, 對于絕大多數(shù)ARM應(yīng)用, 精細(xì)內(nèi)存管理反而不如粗管理的好.

內(nèi)存管理最沒有浪費的就是MZ雙向鏈表, 但是眾所周知, 這個算法也是最脆弱的, 另外還存在嚴(yán)重的內(nèi)存碎片問題.

塊狀內(nèi)存算法在一定程度上避免了碎片問題, 但是帶了來更大的內(nèi)存浪費(除了分配浪費外,控制結(jié)構(gòu)也要預(yù)先分配). 同MZ鏈相比, 有比較大程度的折衷.

還有一些系統(tǒng)在這兩種算法的基礎(chǔ)上引入了更加復(fù)雜的平衡算法,總得來說沒有多大意思。

ARM的地址空間比較大,內(nèi)存資源對于ARM來講是很便宜的,沒有必要精打細(xì)算。對于只有有限內(nèi)存空間的單片機,用全局變量直接分配死也許是最適用的算法。


3樓: >>參與討論
eleven11
我說的就是arm7片內(nèi)內(nèi)存
他的內(nèi)存很大嗎?只有幾K到幾十K,我沒說掛個8M內(nèi)存的情況,合理的內(nèi)存管理就是內(nèi)存共享,本來單獨的tcp運行需要16K,gui需要32K,這2個加在一起就要48K,合理的進(jìn)行內(nèi)存共享,分段運行,那么32k就夠了

* - 本貼最后修改時間:2006-8-8 6:37:26 修改者:eleven11

4樓: >>參與討論
alang7
建議樓主做一個模板出來
要練練才知道

5樓: >>參與討論
eleven11
模塊有啊
 

* - 本貼最后修改時間:2006-8-7 13:33:01 修改者:eleven11

6樓: >>參與討論
paulsimons
問個問題
不跑操作系統(tǒng)來說,arm7在什么情況下會用到內(nèi)存,比如,我把arm7當(dāng)單片機用,但在片外加上內(nèi)存,然后跑程序,比如函數(shù)調(diào)用啊,變量啊 等等,一般情況下,都是使用r0,r1,等等,我想知道在什么情況下會使用內(nèi)存來存放需要用到的數(shù)據(jù)

7樓: >>參與討論
high
感覺這好象就是c最大不足之一
更高級語言都會有合理分配和回收機制。有說c++好的多,但還是比不夠。有說java就不錯。
c++里面有大量new,free.而c,我是從來不敢用malloc等函數(shù),反正暫時也不會需要內(nèi)存分配,直接手工分配,所以沒理會。

---------------
以上一家之言,對內(nèi)存分配了解不夠。

樓上的,就算那樣內(nèi)存還是一定要的。首先提出要求的就是堆棧,否則怎么函數(shù)調(diào)用。

8樓: >>參與討論
paulsimons
是的,
不知哪位達(dá)人能夠提供C對內(nèi)存使用的原則或規(guī)范,就像arm的atpcs一樣,有據(jù)可依

9樓: >>參與討論
溜溜
不要單從語言的角度說,
管他什么樣語言, 只用看看他實現(xiàn)的手段才能說方法好不好,
new?free?看看匯編他是怎么樣弄的。你要是覺得好,用C語言不能實現(xiàn)嗎

不要太現(xiàn)象了,

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請教一個內(nèi)核啟動問題
44B0與LCD的接口名字是什么?
請教達(dá)人關(guān)于程序異常的問題,急
44B0開發(fā)板,USB應(yīng)用疑問,急~
請教用ARM 做數(shù)字錄音的方案
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號