当前位置:  技术问答>linux和unix

uclinux下怎样能够类似于malloc的分配内存?

    来源: 互联网  发布时间:2016-06-10

    本文导语:  我的程序使用了一个商业库,这个商业库中封装了内存分配函数,在它的内存分配函数中用的是malloc,我现在要在ucLinux下运行程序,需要重写它的内存分配函数,不能用malloc,是不是这样?如果不用malloc,那么在ucLin...

我的程序使用了一个商业库,这个商业库中封装了内存分配函数,在它的内存分配函数中用的是malloc,我现在要在ucLinux下运行程序,需要重写它的内存分配函数,不能用malloc,是不是这样?如果不用malloc,那么在ucLinux下该怎样处理内存分配呢?

|

  uClinux是专门针对没有MMU的处理器而设计的,即uClinux无法使用处理器的虚拟内存管理技术。实际上uClinux采用实存储器管理策略,通过地址总线对物理内存进行直接访问。所有程序中访问的地址都是实际的物理地址,所有的进程都在一个运行空间中运行(包括内核进程),这样的运行机制给程序员带来了不小的挑战,在操作系统不提供保护的情况下必需小心设计程序和数据空间,以免引起应用程序进程甚至是内核的崩溃。
  uClinux仍然采用存储器的分页管理,系统在启动时把实际存储器进行分页,在加载应用程序时程序分页加载。一个进程在执行前,系统必须为进程分配足够的连续地址空间,然后全部载入主存储器的连续空间中。系统不含MMU带来的另外一个问题是磁盘交换空间无法使用,对于资源有限的嵌入式系统而言,系统执行时如果缺少内存将无法通过磁盘交换来得到改善。


希望对你有帮助,我最近在写自己应用的内核内存分配算法,所以还有一点了解。
如果你想在没有mmu的系统下运行你已写的程序,那么原有的内存分配都要重写,因为你的原有程序是用户态的程序,而uclinux只有内核态,而且它只使用物理地址,如果我没有想错,你可以考虑使用alloc_pages()系列函数,该系列函数返回的4K大小的物理页框,不受虚拟地址的影响。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 在uCLinux下可以访问实际的物理地址吗?
  • uClinux和Linux的中断挂接方式是否相同??
  • 低版linux编译高版uClinux
  • arm7 55MHz 能否上uclinux?
  • qt能不能运行在uclinux和rtlinux之上?
  • uclinux上如何使用标准模板库STL?
  • 编译uclinux040408 make user_only 时:出错
  • 大家能告诉我在uclinux上设计多任务应用程序的时候需要注意些什么东西吗?
  • 国内哪家在uclinux方面做的比较好?
  • 问一下uclinux的启动流程
  • [求助]如何设置uclinux内核中的内存
  • uclinux的问题请教
  • uclinux的中断如何处理?
  • uclinux究竟有哪些版本,能不能说一下
  • uclinux:Network is unreachable
  • 大家帮我看看uclinux编译错误吧
  • 在 uclinux 上面 进行编程,程序如何对硬盘进行格式化和分区?
  • uclinux 移植 研究现状
  • uclinux pthread问题,虽然很没人气,但我还是勇敢的发帖了。
  • uClinux下面如何运行snmpd


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3