免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2094 | 回复: 6
打印 上一主题 下一主题

[C] linux书上有句话不能理解。。。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-16 20:55 |只看该作者 |倒序浏览
Understanding the linux kernel里边,说到物理地址扩展PAE时,作者说32位机器上可以安装4GB的RAM,但是实际上用户进程线性地址空间的需要,内核不能直接对1GB以上的RAM进行寻址。
这是为什么?

还有就是,一个进程是包括两类段吗:
用户代码段,内核代码段
用户数据段,内核数据段
用户堆栈段,内核堆栈段

那上边这句话是说的进程 单种类的段线性地址空间 不超过1G,还是 进程 所有段 不超过1G?

3Q!

论坛徽章:
0
2 [报告]
发表于 2009-12-16 21:26 |只看该作者
内核使用1G,用户使用3G

论坛徽章:
0
3 [报告]
发表于 2009-12-16 22:06 |只看该作者
原帖由 cugb_cat 于 2009-12-16 21:26 发表
内核使用1G,用户使用3G



谢谢,想起来了。后边好像是说过,3G到4G供内核使用

论坛徽章:
0
4 [报告]
发表于 2009-12-16 22:41 |只看该作者
进程的线性地址分为两部分:
  
  0x00000000~0xbfffffff(3G)的线性地址,无论进程运行在用户态还是内核态都可以寻址
  0xc0000000~0xffffffff(4G)的线性地址,只有内核态才可以寻址。

不对啊。。。这样的话内核也可以寻址4G,用户态的倒是只能寻址3G

论坛徽章:
0
5 [报告]
发表于 2009-12-17 06:48 |只看该作者
不要说段。你可以理解为区,就像磁盘分区。

论坛徽章:
0
6 [报告]
发表于 2009-12-17 16:05 |只看该作者
对于 x86。
较早版本的 Linux,ring 0 的 CS 和 DS 从 0xc0000000 开始一直到 0xffffffff,ring3 的 CS 和 DS 从 0x0 开始一直到 0xbfffffff。这个时候,在内核段和用户段内的代码看来,每个段的逻辑地址都是从 0 开始的。
现在 ring 0 与 ring 3 共享一个 4G 线性空间,内核的代码和数据全部作向上偏移 0xc0000000 处理;换句话说,内核段与用户段完全重叠,且充满整个 4G 空间。

再看 PAE,实际上 PAE 只扩展了物理地址线,但并没有增加虚拟地址空间,虚拟地址的范围仍是 0 到 4G-1。



[ 本帖最后由 langue 于 2009-12-17 16:34 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2009-12-17 16:25 |只看该作者
原帖由 langue 于 2009-12-17 16:05 发表
对于 x86。
较早版本的 Linux,ring 0 的 CS 和 DS 从 0xc0000000 开始一直到 0xffffffff,ring3 的 CS 和 DS 从 0x0 开始一直到 0xbfffffff。这个时候,在内核段和用户段内的代码看来,每个段的逻辑地址都是从 ...


还是法老解释的清楚啊。

总结一下,所谓的范围,有两层含义,一种是物理上的,一种是逻辑上的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP