+ -
当前位置:首页 → 问答吧 → 内存管理的一个问题

内存管理的一个问题

时间:2010-09-07

来源:互联网

本帖最后由 seamountain82 于 2010-09-07 15:32 编辑

在初始化的时候,通过paging_init()=>bootmem_init()=>bootmem_init_node()=>对每个内存块进行map_memory_bank(),最后调用create_mapping(&map)进行映射,这里map的type设置的是MT_MEMORY,在build_mem_type_table()中MT_MEMORY对应的设置,只存在prot_sect(也就是section格式),而没有prot_l1和prot_pte参数(没有页表的支持)。
我的问题是,为什么这里没有设置pte?之后的内存管理中如果做了页面分配后(如alloc_page),如何有原来的sect管理切换到页表管理?相关的prot_l1和pte设置是怎么实现的?
还有kmalloc之后返回的地址addr是否可以用pgd = pgd_offset_k(addr);pmd = pmd_offset(pgd, vaddr);pte = pte_offset_kernel(pmd, vaddr);来查看?
根据我的测试,做完kmalloc之后,pmd仍然表示的sect,而不是一级页表格式。

多谢指教!

作者: seamountain82   发布时间: 2010-09-07

查了一下,你选择的体系结果应该是ARM的。不过再多的俺就帮不了你了。抱歉,请你顶起来。

作者: Tinnal   发布时间: 2010-09-08

热门下载

更多