<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 嵌入式Web訪(fǎng)問(wèn)時(shí)的內存丟失問(wèn)題

嵌入式Web訪(fǎng)問(wèn)時(shí)的內存丟失問(wèn)題

作者: 時(shí)間:2009-11-19 來(lái)源:網(wǎng)絡(luò ) 收藏

uClinux將整個(gè)物理劃分成為4 KB的頁(yè)面。由數據結構page管理,有多少頁(yè)面就有多少page結構,它們又作為元素組成數組men_map[]。物理頁(yè)面可作為進(jìn)程代碼、數據和堆棧的一部分,還可存儲裝入的文件,也可作緩沖區。
uClinux用標準Linux內核變型BuddySystem機制管理空閑物理頁(yè)面。
3.2 原因
由于uClinux提供了跟普通Linux一樣的分配器,普通Linux中缺省的內存分配器是使用“2的冪”的分配方法,這樣可以快速找到符合要求的內存區域。在系統開(kāi)發(fā)過(guò)程初期,采用的就是“2的冪”的分配方法。如果一個(gè)應用程序要求(X)KB內存空間進(jìn)行裝載,則實(shí)際使用占用的內存空間大小為Y=2m(Y≥X)。試想一個(gè)65 KB應用程序,如果按照“2的冪”的分配方法,就必須分配128 KB(2的7次方)的內存空間,這樣就有63 KB的內存空間不能被利用上。這對于小內存的系統來(lái)說(shuō)是相當大的浪費。
多支點(diǎn)觸發(fā)系統運行時(shí),操作系統uClinux使用“2的冪”的內存分配方法,大多數情況下都能正常工作。但在不斷反復測試中,偶爾會(huì )出現上述頁(yè)面出錯。錯誤的原因是不能獲得足夠的內存加載程序。通過(guò)調試終端,用free命令查看系統內存分配情況如表1所列。

本文引用地址:http://dyxdggzs.com/article/152276.htm

由表1可以看出,空閑的內存空間還有1560 KB,而應用程序所需的內存空間為400多KB,但是內核認為并沒(méi)有足夠的內存空間用來(lái)加載程序。例如一個(gè)系統內存大小為1 MB,有400KB的空閑內存,為了裝載一個(gè)應用程序需要分配100 KB的空間。大家可能覺(jué)得這個(gè)需要肯定能得到滿(mǎn)足,然而,由于uClinux必須給應用程序分配連續內存空間的特性,所以必須有100KB連續的內存空間才能滿(mǎn)足這個(gè)需要。而當系統內存分配如圖3所示時(shí),最大的連續內存塊的大小只有80 KB,這樣是沒(méi)有辦法分配給這個(gè)應用程序的。這就是系統中頁(yè)面出錯的所在,雖然有足夠的空閑內存空間,但是沒(méi)有應用程序所需的連續內存空間。

這就是內存。雖然系統會(huì )顯示大量的可用內存,但是應用程序卻不能得到。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>