免费注册 查看新帖 |

Chinaunix

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

关于地址空间的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-14 21:39 |只看该作者 |倒序浏览
2可用积分
最近开始在看 < <Linux内核源代码情景分析> > ,在第一章看到写到 "256M正是24位地址空间的大小 ".如果我没弄错的话24位地址空间的大小应该为16M,但这种书应该不会犯这种低级的错误的.我想问一下究竟是我错了还是书中的错了?请各位指教,谢谢!

最佳答案

查看完整内容

LZ~ 既然悬赏了,就应该找一个你认为合适的答案兑现,还有什么不明白的? PS 这种行为[ 本帖最后由 mik 于 2007-11-27 22:50 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-11-14 21:39 |只看该作者
LZ~ 既然悬赏了,就应该找一个你认为合适的答案兑现,还有什么不明白的? PS 这种行为

[ 本帖最后由 mik 于 2007-11-27 22:50 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2007-11-15 02:25 |只看该作者
任何人都会犯错误滴哦

论坛徽章:
0
4 [报告]
发表于 2007-11-16 09:38 |只看该作者
你把上下文都贴出来吧。

论坛徽章:
0
5 [报告]
发表于 2007-11-16 13:06 |只看该作者
情景分析 P9
好像是有问题

论坛徽章:
0
6 [报告]
发表于 2007-11-16 13:46 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
7 [报告]
发表于 2007-11-17 21:21 |只看该作者

上下文

P10:
     "例如:为什么基地址的高8位和低24位不连在一起?最自然也最合理的解释就是:开始时Intel的意图是24位地址空间,后来又改成32位地址空间.这也可以从段长度字段也是拆成两节得到印证:当g标志位为1时,长度的单位为4KB,而段长度的低16位的容量是64K,所以一个段的最大可能长度为  64Kx4K=256M,而这正是24位地址空间的大小."

原文就是这样的,望各位指教.

论坛徽章:
0
8 [报告]
发表于 2007-11-17 22:43 |只看该作者
原帖由 dyts 于 2007-11-17 21:21 发表
P10:
     "例如:为什么基地址的高8位和低24位不连在一起?最自然也最合理的解释就是:开始时Intel的意图是24位地址空间,后来又改成32位地址空间.这也可以从段长度字段也是拆成两节得到印证:当g标志位为1时,长度 ...


要结合 segment descriptor 的结构图来理解呀,如图:

segment base address 的低 24 位和高 8 位分别在 segment descriptor 的 2 个位域中,合并起来等于 32 位
segment limit 的低 16 位与高 4 也分别在 segment descriptor 的 2 个位域中,合共 20 位。
G 位表示 limit 的单位粒度,G = 0 时,单位为 byte, G = 1 时,单位为 4K byte

按此书的解释是: 原本 intel 用低 24 来表示地址空间的 base address。 用 16 位的 limit 来表示 segment 长。当 G = 1 时,单位为 4K byte, FFFF × FFF = FFFFFFF (256M),用这种方法来表示 24 位地址空间,后来才扩展到 32 位


偶对这种说法持保留意见:
程序地址经过 segmentation(分段机制下)转化的是 linear address (线性地址),线性地址范围是 CPU 可最大寻址的范围,从 386 开始就是 32 位,线性地址范围为 32 位宽 0 ~ 0xFFFFFFFF,无法支持此书所说的“24 位地址空间”的说法。 如果,当初设计为 24 位地址空间,为何不直接设 limit 域为 28 位,不用 G 位这么麻烦。

未命名.JPG (18.67 KB, 下载次数: 97)

未命名.JPG

论坛徽章:
0
9 [报告]
发表于 2007-11-18 14:18 |只看该作者
原帖由 mik 于 2007-11-17 22:43 发表


偶对这种说法持保留意见:
程序地址经过 segmentation(分段机制下)转化的是 linear address (线性地址),线性地址范围是 CPU 可最大寻址的范围,从 386 开始就是 32 位,线性地址范围为 32 位宽 0 ~ 0xFFFFFFFF,无法支持此书所说的“24 位地址空间”的说法。


P6上已经说得很清楚了,从286到386过渡,可能Intel开始并没有想从16位过渡到32位,而是过渡到24位

论坛徽章:
0
10 [报告]
发表于 2007-11-18 17:57 |只看该作者
原帖由 Wind-Son 于 2007-11-18 14:18 发表


P6上已经说得很清楚了,从286到386过渡,可能Intel开始并没有想从16位过渡到32位,而是过渡到24位


嗯,忽略了286,改天了解一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP