发布时间:2014-06-04 16:38:06
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);#define DEFINE_PER_CPU(type, name) \ __typeof__(type) per_cpu__##na.........【阅读全文】
发布时间:2014-06-04 16:36:40
有了2和3的基础,我们来看一下setup_arch中的内存初始化函数:paging_init() void __init paging_init( struct meminfo *mi, &n.........【阅读全文】
发布时间:2014-06-04 16:32:20
我们看下boot传入的命令为:"noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0 rootfstype=cramfs mem=64M" 进入setup_arch函数后,首先遇到的和内存管理有关的,是parse_cmdline函数。在arch\arm\kernel\setup.c中,mem命令参数被预执行。(关于其他__early_param参数,可以在SI中以__.........【阅读全文】
发布时间:2014-06-04 16:27:49
源码为 2.6.37内核,x86_64架构,内存模型为Sparse Memorypaging_init函数在setup_arch函数中被调用,用于初始化所有节点的pg_data_t结构,以及节点对应的管理区zone结构,和page结构。调用的大致过程为:start_kernel() --> setup_arch() --> paging_in.........【阅读全文】