新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 嵌入式Web訪問時的內存丟失問題

        嵌入式Web訪問時的內存丟失問題

        作者: 時間:2009-11-19 來源:網絡 收藏

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

        本文引用地址:http://www.104case.com/article/152276.htm

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

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

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


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 启东市| 舟曲县| 襄垣县| 蒙自县| 峨眉山市| 山东| 囊谦县| 乐安县| 贺州市| 盐亭县| 会同县| 雷山县| 壤塘县| 广灵县| 台东县| 顺义区| 鹿泉市| 镇沅| 大方县| 晴隆县| 洛阳市| 虞城县| 葫芦岛市| 中西区| 乾安县| 治多县| 鹤山市| 苍山县| 绥德县| 濉溪县| 鲜城| 内乡县| 弥勒县| 安达市| 邻水| 金坛市| 浦城县| 西和县| 中卫市| 天祝| 玛多县|