本帖最后由 titer1 于 2012-09-28 23:14 编辑 1 kmalloc 底层调用 伙伴系统的 __get_free_pages()函数,vmalloc也是。 kmap没有调用 2 vmalloc 可能睡眠,kmalloc使用gfp_atomic方式分配可能睡眠,(kmalloc睡眠不,决定于分配的标志,gfp_atomic必然不能,否则睡眠之) //网上关于kmalloc睡眠模糊。我查了下lkd,2012-9-28 23:13:37 3 kmalloc 返回线性地址,指向物理连续的一内存区,分配是以页为单位。分配上限是:2^5个...
by titer1 - 内核源码 - 2012-10-02 13:41:44 阅读(4042) 回复(8)
只看了相对简单的kmap函数,理解的结果是,这个函数是把某块高端内存映射到页表,然后返回给用户一个填好vitual字段的 page结构 然后听说ioremap的功能是把io空间映射出来,疑问: ioremap只能操作io空间而不能操作ram空间? 该函数实现原理是? 能否以最简要的句子概括,谢谢!
对于提供了MMU(存储管理器,辅助操作系统进行内存管理,提供虚实地址转换等硬件支持)的处理器而言,Linux提供了复杂的存储管理系统,使得进程所能访问的内存达到4GB。 进程的4GB内存空间被人为的分为两个部分--用户空间与内核空间。用户空间地址分布从0到3GB(PAGE_OFFSET,在0x86中它等于0xC0000000),3GB到4GB为内核空间。 内核空间中,从3G到vmalloc_start这段地址是物理内存映射区域(该区域中包含了内核镜像、物理...
对于提供了MMU(存储管理器,辅助操作系统进行内存管理,提供虚实地址转换等硬件支持)的处理器而言,Linux提供了复杂的存储管理系统,使得进程所能访问的内存达到4GB。 进程的4GB内存空间被人为的分为两个部分--用户空间与内核空间。用户空间地址分布从0到3GB(PAGE_OFFSET,在0x86中它等于0xC0000000),3GB到4GB为内核空间。 内核空间中,从3G到vmalloc_start这段地址是物理内存映射区域(该区域中包含了内核镜像、物...
[转]kmalloc, vmalloc分配的内存结构 对于提供了MMU(存储管理器,辅助操作系统进行内存管理,提供虚实地址转换等硬件支持)的处理器而言,Linux提供了复杂的存储管理系统,使得进程所能访问的内存达到4GB。 进程的4GB内存空间被人为的分为两个部分--用户空间与内核空间。用户空间地址分布从0到3GB(PAGE_OFFSET,在0x86中它等于0xC0000000),3GB到4GB为内核空间。 内核空间中,从3G到vmalloc_start这段地址是物理内存映射区...
kmalloc returns physically contiguous memory, malloc does not guarantee anything about the physical memory mapping. The other main difference is that kmalloc'ed memory is reserved and locked, it cannot be swapped. malloc does not actually allocate physical memory. Physical memory gets mapped later, during use. Memory is subject to fragmentation. You may have many megabytes of free memory left, bu...
对于提供了MMU(存储管理器,辅助操作系统进行内存管理,提供虚实地址转换等硬件支持)的处理器而言,Linux提供了复杂的存储管理系统,使得进程所能访问的内存达到4GB。 进程的4GB内存空间被人为的分为两个部分--用户空间与内核空间。用户空间地址分布从0到3GB(PAGE_OFFSET,在0x86中它等于0xC0000000),3GB到4GB为内核空间。 内核空间中,从3G到vmalloc_start这段地址是物理内存映射区域(该区域中包含了内核镜像、物理...
[color="#000066"]kmalloc, vmalloc分配的内存结构 对于提供了MMU(存储管理器,辅助操作系统进行内存管理,提供虚实地址转换等硬件支持)的处理器而言,Linux提供了复杂的存储管理系统,使得进程所能访问的内存达到4GB。 进程的4GB内存空间被人为的分为两个部分--用户空间与内核空间。用户空间地址分布从0到3GB(PAGE_OFFSET,在0x86中它等于0xC0000000),3GB到4GB为内核空间。 内核空间中,从3G到vmalloc_start这段地址...
[转]kmalloc, vmalloc分配的内存结构 对于提供了MMU(存储管理器,辅助操作系统进行内存管理,提供虚实地址转换等硬件支持)的处理器而言,Linux提供了复杂的存储管理系统,使得进程所能访问的内存达到4GB。 进程的4GB内存空间被人为的分为两个部分--用户空间与内核空间。用户空间地址分布从0到3GB(PAGE_OFFSET,在0x86中它等于0xC0000000),3GB到4GB为内核空间。 内核空间中,从3G到vmalloc_start这段地址是物理内存映射...