发布时间:2015-12-31 00:16:55
前面已经分析了内存管理框架的构建实现过程,有部分内容未完全呈现出来,这里主要做个补充。如下图,这是前面已经看到过的linux物理内存管理框架的层次关系。现着重分析一下各个管理结构体的成员功能作用。【file:/include/linux/mmzone.h】typedef struct pglist.........【阅读全文】
发布时间:2015-12-31 00:16:44
此处接前文,分析free_area_init_nodes()函数最后部分,分析其末尾的循环: for_each_online_node(nid) { pg_data_t *pgdat = NODE_DATA(nid); free_area_init_node(nid, NULL, &nbs.........【阅读全文】
发布时间:2015-12-31 00:16:30
前面构建内存管理框架,已经将内存管理node节点设置完毕,接下来将是管理区和页面管理的构建。此处代码实现主要在于setup_arch()下的一处钩子:x86_init.paging.pagetable_init()。据前面分析可知x86_init结构体内该钩子实际上挂接的是native_pagetable_init()函数。 native_pagetable_init().........【阅读全文】
发布时间:2015-12-31 00:16:13
传统的计算机结构中,整个物理内存都是一条线上的,CPU访问整个内存空间所需要的时间都是相同的。这种内存结构被称之为UMA(Uniform Memory Architecture,一致存储结构)。但是随着计算机的发展,一些新型的服务器结构中,尤其是多CPU的情况下,物理内存空间的访问就难以控制所需的时间相同了。在多CPU的环境下,系统只.........【阅读全文】
发布时间:2015-12-31 00:15:50
前面已经分析了内核页表的准备工作以及内核低端内存页表的建立,接着回到init_mem_mapping()中,低端内存页表建立后紧随着还有一个函数early_ioremap_page_table_range_init():【file:/arch/x86/mm/init.c】/* * Build a proper pagetable for the kernel.........【阅读全文】