
Linux内存
longyue0917
这个作者很懒,什么都没留下…
展开
-
Linux内存分析(1) -- 高端内存初试化
第一节 Start_kernel之前要分析内存,先从uboot开始,关于uboot的TAG属性传递,可以参考第九章第一节。随后进入内核启动的汇编代码部分(arch\arm\kernel\head.s),在检查完CPU型号和机器型号之后,便调用__create_page_tables函数进行一级页表的初始化设置。具体的代码分析见head.s中对应的代码。这里需要说明的是原创 2012-03-26 22:18:00 · 3965 阅读 · 0 评论 -
Linux内存分析(2) -- mm\bootmem.c
我们看下boot传入的命令为:"noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0 rootfstype=cramfs mem=64M" 进入setup_arch函数后,首先遇到的和内存管理有关的,是parse_cmdline函数。在arch\arm\kernel\setup.c中,mem命令参数被预执行。(关于其他原创 2012-04-02 00:05:38 · 3325 阅读 · 0 评论 -
Linux内存分析(3) -- create_mapping
在start_kernel对内存的初始化中,会调用arch_setup对平台进行初始化。在该函数中,为创建一级页表,有这样的调用顺序:bootmem_init() --> bootmem_init_node() ->map_memory_bank() --> create_mapping()。 create_mapping函数的开始是一系列的检查,有意义的代码是最后的这个循环:原创 2012-04-03 22:48:42 · 4915 阅读 · 0 评论 -
Linux内存分析(4) -- paging_init (setup_arch部分)
有了2和3的基础,我们来看一下setup_arch中的内存初始化函数:paging_init() void __init paging_init( struct meminfo *mi, //内存的描述信息 struct machine_desc *mdesc)原创 2012-04-08 16:11:01 · 5044 阅读 · 0 评论