首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
嵌入式Web访问时的内存丢失问题
来源:本站整理  作者:佚名  2009-11-19 08:56:57




    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所列。

    由表1可以看出,空闲的内存空间还有1560 KB,而应用程序所需的内存空间为400多KB,但是内核认为并没有足够的内存空间用来加载程序。例如一个系统内存大小为1 MB,有400KB的空闲内存,为了装载一个应用程序需要分配100 KB的空间。大家可能觉得这个需要肯定能得到满足,然而,由于uClinux必须给应用程序分配连续内存空间的特性,所以必须有100KB连续的内存空间才能满足这个需要。而当系统内存分配如图3所示时,最大的连续内存块的大小只有80 KB,这样是没有办法分配给这个应用程序的。这就是系统中页面访问出错的问题所在,虽然有足够的空闲内存空间,但是没有应用程序所需的连续内存空间。

    这就是内存丢失问题。虽然系统会显示大量的可用内存,但是应用程序却不能得到。

上一页  [1] [2] [3] [4]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:17,968.75000 毫秒