Chinaunix

标题: 使用全局内核页表swapper_pg_dir如何进行地址转换? [打印本页]

作者: icunow    时间: 2009-05-30 17:19
标题: 使用全局内核页表swapper_pg_dir如何进行地址转换?
我用的是fedora,内核版本是linux-2.6.21.i686
我定位了swapper_pg_dir,也就是全局内核页表,发现使用这个页目录表
进行地址转换的话,行不通。
那么在3G到3G+896M的空间进行寻址的话,是通过什么进行的?swapper_pg_dir在
什么时候使用?
我同样使用了__pa进行查看
在asm-i386\page.h文件中有
#define __pa(x) ((unsigned long)(x)-PAGE_OFFSET)
PAGE_OFFSET就是3G了。
在system.map中有c12d8440 D init_task
我用__pa(c12d8440)得到init_task的物理地址。但是,参看这块地址发现
全为0。
作者: jdw_ryder2011    时间: 2011-06-03 17:25
swapper_pg_dir它的作用包括初始化时建立8M的映射,还有为进程页表3G以上的线性空间提供模板。
系统初始化完了以后好像就不用了吧。因为3G--(3G+896M)之间的地址好像直接用__pa转换而不用查表吧。
这里有篇文章 比较详细:http://lanhg2008.blog.163.com/bl ... 178201051144339432/




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2