- 博客(7)
- 资源 (1)
- 收藏
- 关注
原创 vmalloc代码
vmalloc()->__vmalloc_node_flags()->__vmalloc_node()->__vmalloc_node_range()->__vmalloc_area_node()->alloc_page() mm/vmalloc.cvoid *vmalloc(unsigned long size){ return __vmalloc_node_flags(si
2013-01-25 16:54:46 768
原创 alloc_page 代码
alloc_pages()->alloc_pages_node()->__alloc_pages()->__alloc_pages_nodemask()->get_page_from_freelist()->buffered_rmqueue()->__rmqueue()->__rmqueue_smallest()->expand()include\linux\Gpf.h#define al
2013-01-25 16:41:08 1314
转载 kmalloc分配大小的限制
kmalloc是通过cache来实现的, 只不过每次kmalloc的大小不同, 因此是从不同的cache中分配:/* include/linux/slab.h */// 注意kmalloc是在头文件中定义的static inline void *kmalloc(size_t size, gfp_t flags){ if (__builtin_constant_p(size))
2013-01-25 16:10:17 4801
原创 kmalloc 代码
Kmalloc()->__kmalloc()->__do_kmalloc()->__cache_alloc()->____cache_alloc()->cache_alloc_refill()->cache_grow()->kmem_getpages()->alloc_pages_exact_node()->__alloc_pages() include\linux\Slab_def.h
2013-01-25 16:07:58 964
转载 linux的物理内存与线性地址空间布局--2
Linux 2.6.10内核中的ARM处理器平台部分没有对高端内存的支持,图18-6和图18-7分别列出了SA1100和IXP4XX处理器平台的Linux线性地址空间布局。 Linux内存线性地址空间大小为4GB,分为2个部分:用户空间部分(通常是3G)和内核空间部分(通常是1G)。在此我们主要关注内核地址空间部分。 内核通过内核页全局目录来管理所有的物理内存,由于线形地址
2013-01-11 15:11:36 467
转载 linux的物理内存与线性地址空间布局--1
在支持MMU的32位处理器平台上,Linux系统中的物理存储空间和虚拟存储空间的地址范围分别都是从0x00000000到0xFFFFFFFF,共4GB,但物理存储空间与虚拟存储空间布局完全不同。Linux运行在虚拟存储空间,并负责把系统中实际存在的远小于4GB的物理内存根据不同需求映射到整个4GB的虚拟存储空间中。n物理存储空间布局Linux的物理存储空间布局与处理器相关,详细情况可以从处
2013-01-11 15:10:15 485
转载 linux内存管理浅析
linux内存管理浅析[地址映射](图:左中)linux内核使用页式内存管理,应用程序给出的内存地址是虚拟地址,它需要经过若干级页表一级一级的变换,才变成真正的物理地址。想一下,地址映射还是一件很恐怖的事情。当访问一个由虚拟地址表示的内存空间时,需要先经过若干次的内存访问,得到每一级页表中用于转换的页表项(页表是存放在内存里面的),才能完成映射。也就是说,要实现一次内存访问
2013-01-11 14:48:52 716
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人