Chinaunix首页 | 论坛 | 博客
  • 博客访问: 126706
  • 博文数量: 11
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 120
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-24 15:58
文章分类

全部博文(11)

文章存档

2009年(11)

我的朋友

分类: LINUX

2009-07-25 10:53:27

前言
    工作中,我们经常能够遇到一些对内存有特殊要求的硬件,有些是其本身的设计要求所至,而另一些则是从系统性能考虑(如不能支持Scatter/gather DMA ),两种情况下都必须为其driver 分配大块的物理地址连续内存块。更槽糕的是,系统连续运行时间越长,大块物理地址连续的内存块分配到的可能性就越低。大多数情况下(内存泄露除外),你会发现系统的剩余内存( free 或cat /proc/meminfo )足够大却依然无法分配到,很显然,内存碎片( memory fragmentation )出现了。在uClinux系统中,由于没有VM的存在,问题更加突出。当你播放一个H.264 或者WMV HD(1920x1080p) 的视频时,甚至播放一个WMA Pro,系统都有可能“Out of memory",根本原因还是系统此时无法为video decode 或audio decoder 分配一个大块的物理地址连续内存。
 
全文概要
   本文首先简单介绍了Linux kernel 中常用的几种内存分配方式(kmalloc, vmalloc, alloc_page类函数),从能分配的上限和分到的可能性来看是否能够满足需求;接着 介绍了两个具体的实际解决方案:
1. 预留内存(mem=)
2. bigphysarea kernel patch.
 
附件为全文pdf.
文件: bigphysarea.pdf
大小: 280KB
下载: 下载
阅读(8663) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~