vmalloc用法???

wodenide007 2011-03-25 09:13:49
高端物理地址的分配采用vmalloc/vfree这组函数进行,什么是高端物理内存呢?
我们知道Linux给内核预留了一部分虚拟地址空间,这部分虚拟地址如果能全部直接映射到物理地址
空间就不存在高端内存。如果这部分内存有一部分不能直接映射到地址空间,那么这部分虚拟地址
空间称为高端内存。因此,高端内存是虚拟地址空间中的概念。举个例子:如果你的物理内存为512M
,那么就不存在高端内存的分配,如果你的物理地址为2G,那么有1G+128M(预留给VMALLOC区)
是属于高端内存的。高端内存的分配即便是逻辑上连续,也不要求物理上是连续的.


我的问题就是,如果我的物理地址是512M,那么是不是没法用vmalloc???
还有就是,我看ldd3上说:当驱动需要真正的物理地址时(像外设用于驱动系统总线的DMA地址),就不能用vmalloc了,
问什么??怎么解释??
使用vmaaloc函数的正确场合是在分配一大块连续的、只在软件中存在的、用于缓冲的内存区域的时候。
只在软件中存在???
各位大侠解疑!!!!
...全文
193 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jianmin09 2011-03-27
  • 打赏
  • 举报
回复
512M的物理地址,仍可用vmalloc!
confidence321 2011-03-27
  • 打赏
  • 举报
回复
用户空间,分为常规内存和高端内存。DMA用常规内存,映射到常规内存的是较小的、连续的。而高端内存则不一定连续,对于网络等做缓冲还可以。

4,441

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧