当前位置: 技术问答>linux和unix
内核高端映射的三种方式的疑问
来源: 互联网 发布时间:2016-04-22
本文导语: kmap() kmap_atomic() vmalloc() 其中前两个只更新pte. 而vmalloc() 要更新4级页表的 pgd, pud, pmd, pte 我的问题是为什么前两个函数不更新pgd, pud, pmd呢? 假设一个虚拟地址位于kmalloc()所管辖的区间内,那想取得对应的物...
kmap()
kmap_atomic()
vmalloc()
其中前两个只更新pte.
而vmalloc() 要更新4级页表的 pgd, pud, pmd, pte
我的问题是为什么前两个函数不更新pgd, pud, pmd呢?
假设一个虚拟地址位于kmalloc()所管辖的区间内,那想取得对应的物理地址,难道不需要4级页表吗?
如果是前两个函数有专有的页表,那这个页表的结构是什么样子的?
请赐教,多谢了!
kmap_atomic()
vmalloc()
其中前两个只更新pte.
而vmalloc() 要更新4级页表的 pgd, pud, pmd, pte
我的问题是为什么前两个函数不更新pgd, pud, pmd呢?
假设一个虚拟地址位于kmalloc()所管辖的区间内,那想取得对应的物理地址,难道不需要4级页表吗?
如果是前两个函数有专有的页表,那这个页表的结构是什么样子的?
请赐教,多谢了!
|
kmap()
kmap_atomic()用的页表是在系统初始化阶段做页表初始化时就分配好了。
kmap_atomic()用的页表是在系统初始化阶段做页表初始化时就分配好了。