-+

来自「linux内核学习笔记 希望想看的人可以很快下载到」· 代码 · 共 22 行

TXT
22
字号
any problems, send mails to lysindybear@sina.com.cn


相关文件
	/arch/i386/mm/init.c
	/mm/page_alloc.c
	/arch/i386/kernel/setup.c

内存的初始化使用setup.c中的setup_arch函数开始的,这个函数通过复制BIOS中的数据到E820结构中,
然后,通过搜索这个结构可以获取当前机器上的内存的配置情况,然后通过解析启动配置参数,对内存
的用量进行重新计算。用最终确定下来的内存量初始化各种全局变量。

调用paging_init函数进行mem_map,页表,NUMA等的设置,总之,通过这个函数以后,内存的各种设置
已经被设置好了。

paging_init调用pagetable_init对NUMA等进行设置。
paging_init调用free_area_init对内存区域建立mem_map结构

free_area_init仅仅调用free_area_init_core函数
free_area_init_core函数为输入的NUMA中的各个zone建立各自的mem_map结构,也就是所有的页表的struct page
结构组成一个数组。

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?