当前位置: 技术问答>linux和unix
vmalloc用法???
来源: 互联网 发布时间:2016-11-16
本文导语: 高端物理地址的分配采用vmalloc/vfree这组函数进行,什么是高端物理内存呢? 我们知道Linux给内核预留了一部分虚拟地址空间,这部分虚拟地址如果能全部直接映射到物理地址 空间就不存在高端内存。如果这部分内存...
高端物理地址的分配采用vmalloc/vfree这组函数进行,什么是高端物理内存呢?
我们知道Linux给内核预留了一部分虚拟地址空间,这部分虚拟地址如果能全部直接映射到物理地址
空间就不存在高端内存。如果这部分内存有一部分不能直接映射到地址空间,那么这部分虚拟地址
空间称为高端内存。因此,高端内存是虚拟地址空间中的概念。举个例子:如果你的物理内存为512M
,那么就不存在高端内存的分配,如果你的物理地址为2G,那么有1G+128M(预留给VMALLOC区)
是属于高端内存的。高端内存的分配即便是逻辑上连续,也不要求物理上是连续的.
我的问题就是,如果我的物理地址是512M,那么是不是没法用vmalloc???
还有就是,我看ldd3上说:当驱动需要真正的物理地址时(像外设用于驱动系统总线的DMA地址),就不能用vmalloc了,
问什么??怎么解释??
使用vmaaloc函数的正确场合是在分配一大块连续的、只在软件中存在的、用于缓冲的内存区域的时候。
只在软件中存在???
各位大侠解疑!!!!
我们知道Linux给内核预留了一部分虚拟地址空间,这部分虚拟地址如果能全部直接映射到物理地址
空间就不存在高端内存。如果这部分内存有一部分不能直接映射到地址空间,那么这部分虚拟地址
空间称为高端内存。因此,高端内存是虚拟地址空间中的概念。举个例子:如果你的物理内存为512M
,那么就不存在高端内存的分配,如果你的物理地址为2G,那么有1G+128M(预留给VMALLOC区)
是属于高端内存的。高端内存的分配即便是逻辑上连续,也不要求物理上是连续的.
我的问题就是,如果我的物理地址是512M,那么是不是没法用vmalloc???
还有就是,我看ldd3上说:当驱动需要真正的物理地址时(像外设用于驱动系统总线的DMA地址),就不能用vmalloc了,
问什么??怎么解释??
使用vmaaloc函数的正确场合是在分配一大块连续的、只在软件中存在的、用于缓冲的内存区域的时候。
只在软件中存在???
各位大侠解疑!!!!
|
用户空间,分为常规内存和高端内存。DMA用常规内存,映射到常规内存的是较小的、连续的。而高端内存则不一定连续,对于网络等做缓冲还可以。
|
512M的物理地址,仍可用vmalloc!
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。