
Linux Kernel
文章平均质量分 77
lukuen
这个作者很懒,什么都没留下…
展开
-
linux 内核 内存管理 bootmem alloctor 申请内存
alloc_bootmem_low_pages()定义在:include/linux/bootmem.h中,定义如下:#define alloc_bootmem_low_pages(x) \ __alloc_bootmem_low(x, PAGE_SIZE, 0)__alloc_bootmem_low()定义在:mm/bootmem.c,定义如下:void * _原创 2011-11-08 20:32:42 · 1962 阅读 · 0 评论 -
linux 内核 内存管理 初始化 页表
linux内核在启动分页机制时就已经有了一个可用的页表,这个最初的页表是手工创建了,而且仅有为数不多的几个页面,进入start_kernel()以后需要把原来的页表完善一下,具体工作在start_kernel() --> setup_arch() --> paging_init()函数中。paing_init()函数定义在arch/x86/mm/init_32.c中。void __init p原创 2011-11-09 21:17:09 · 4003 阅读 · 0 评论 -
linux 内核 内存管理 bootmem alloctor 的初始化
首先说说bootmem alloctor存在的意义。在内核刚刚开启分页机制时,只是创建了很少的几页的映射(内核+堆栈+bitmap),并没有实现内存的管理模块,也就是此时的内核还不能比较随意的申请/释放内存,所以内核的功能受到了很大的限制。为了尽快改变这种状况,内核创建了一个临时的内存管理器 -- bootmem alloctor,但这个内存管理模块的功能十分有限,内核随后会建立更强大的内存管理机原创 2011-11-08 19:30:45 · 4071 阅读 · 0 评论 -
如何判断 linux内核 中 如何判断 条件编译
在阅读linux源码时,经常遇到条件编译的情况,如下:#ifdef CONFIG_FLAT_NODE_MEM_MAP /* ia64 gets its own node_mem_map, before this, without bootmem */ if (!pgdat->node_mem_map) {...... }#ifndef CONFIG_N原创 2011-11-01 17:28:50 · 1955 阅读 · 0 评论 -
Linux 进程地址空间1_数据结构和接口
数据结构内存描述符:mm_structstruct mm_struct { struct vm_area_struct * mmap; /*内存区域链表*/ rb_root_t mm_rb; /*内存区域红黑树的根*/ struct vm_area_struct * mmap_cache;转载 2009-07-14 10:22:00 · 1502 阅读 · 0 评论 -
linux 内核 内存管理 slub算法 (一) 原理
内核管理页面使用了2个算法:伙伴算法和slub算法,伙伴算法以页为单位管理内存,但在大多数情况下,程序需要的并不是一整页,而是几个、几十个字节的小内存。于是需要另外一套系统来完成对小内存的管理,这就是slub系统。slub系统运行在伙伴系统之上,为内核提供小内存管理的功能。 slub把内存分组管理,每个组分别包含2^3、2^4、...2^11个字节,在4K页大小的默认情况下,另外原创 2011-11-07 17:05:34 · 27929 阅读 · 41 评论