Linux Kernel Memory Management init Page Table linux 内核内存管理初始化页表
发布时间
阅读量:
阅读量
在Linux内核启动分页机制时,系统已经具备了一个可使用的页表,该初始页表是人工构建的,并且仅包含少量页面。进入start_kernel()函数后,需要对原有的页表进行补充完善,具体操作是在start_kernel() --> setup_arch() --> paging_init()函数中完成。paging_init()函数定义在arch/x86/mm/init_32.c文件中。
void __init paging_init(void)
{
#ifdef CONFIG_X86_PAE
set_nx();
if (nx_enabled)
printk("NX (Execute Disable) protection: active\n");
#endif
pagetable_init();
load_cr3(swapper_pg_dir);
#ifdef CONFIG_X86_PAE
if (cpu_has_pae)
set_in_cr4(X86_CR4_PAE);
#endif
__flush_tlb_all();
kmap_init();
}
pagetable_init()函数负责完成页表的初始化工作,而load_cr3()的作用则是加载页表。
static void __init pagetable_i
全部评论 (0)
还没有任何评论哟~
