免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: cluter
打印 上一主题 下一主题

X86 head_32.S文件中内存映射详解(附图) [复制链接]

论坛徽章:
0
11 [报告]
发表于 2011-02-26 17:25 |只看该作者
回复 10# cluter

非常感谢。我对那部分不甚了解,找个时间仔细看下,有不明之处再请教。

不好意思,还有一个问题:为什么内核建立页面映射不在这里一次建立完整?难道是因为不想用太多的汇编语言?

论坛徽章:
0
12 [报告]
发表于 2011-02-26 18:20 |只看该作者
回复 11# JackyBsh


    个人感觉是 因为当前的实际物理内存还不知道---因为内存信息还都保存在e820的结构体中。
   下一步就是开始 统计整理 实际的物理内存。
   然后再进行 页表映射。
   因为页表映射和 物理内存大小是有很大关系的。

论坛徽章:
0
13 [报告]
发表于 2011-02-26 18:28 |只看该作者
本帖最后由 JackyBsh 于 2011-02-26 18:29 编辑

回复 12# cluter

曾经简单看过一点 grub2 的代码(grub-1.98/loader/i386/linux.c),似乎在其中已经通过 BIOS 探测了物理内存,并且填充了相应的 e820 的数据结构。

论坛徽章:
0
14 [报告]
发表于 2011-02-26 18:43 |只看该作者
回复 13# JackyBsh


    是的,但是这部分信息并没有处理。。。所以还是不知道 当前最大的物理内存。  setup_arch中的setup_memory函数中才开始整理这部分信息。
  过几天 我就准备发表一个 启动时刻的 内存初始化流程的帖子。。。到时候你可以在看看。

论坛徽章:
0
15 [报告]
发表于 2011-02-26 18:50 |只看该作者
回复 14# cluter

了解。非常感谢!

论坛徽章:
0
16 [报告]
发表于 2012-12-22 00:57 |只看该作者
cluter 发表于 2011-02-26 12:12
回复 7# JackyBsh


能对如下两句:

”而 mapping_beyond_end是给 后来建立内存映射页表用的。

后来内核要建立物理内存直接映射的时候,这段区域就不够用了。所以要从_end开始。“

解释一下吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP