CR0的PE和PG置位后,linux源码中的逻辑地址、线性地址、物理地址问题

天行健__ 2013-12-24 02:28:42
看了赵老师的linux内核源码注解一书。
有一些疑惑,请大家不吝赐教。





1、这是获取一页物理内存的代码,代码中计算了某个页面的物理地址,并使用edi寄存器对改页面的对应对的物理地址进行清0。这段代码应该是在CR0的PE和PG置位后运行的,既然开启了段页存储,内核怎么会还用物理地址进行寻址操作呢?不是要经过段页转换的吗?


2、这个是释放页目录所对应页表的操作,内核代码里面使用的是相对的逻辑地址,怎么可以直接用*号操作物理内存中的页表了?不是要经过段页转换的吗?
...全文
330 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
天行健__ 2013-12-26
  • 打赏
  • 举报
回复
太让我失望了,csdn果然没有高手,还是我自己苦思冥想,想到了怎么回事。 内核把自己的代码段和数据段设为了0,内核初始化的时候就在页目录表里放了四个页表,每个页表映射4M物理内存,共映射了16M物理内存,也就是说内核的页表已经覆盖了整个物理内存,内核线性地址空间等于物理地址空间。 所以代码里面用物理地址寻址其实就是线性地址,线性地址和物理地址一一映射,完全相等,寻址时cpu的mmu单元也进行了段页转换。
天行健__ 2013-12-24
  • 打赏
  • 举报
回复
怎么没人回啊?是觉得问题不削一顾,还是csdn都我一般菜鸟?大侠们出来。

4,467

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧