QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2649|回复: 2

请教逻辑地址的一个问题

[复制链接]
发表于 2008-3-4 09:28:48 | 显示全部楼层 |阅读模式
遇到情景分析(2.4.0)得一个问题,在内核态,逻辑地址和线性地址是一一对应得?
在代码哪里保证使逻辑地址时从c0000000开始的?(是不是没有特别设置,逻辑地址从0开始的)
请大家指教,谢谢
发表于 2008-8-24 10:17:20 | 显示全部楼层
logical address: 由16位段选择符+32位偏移量组成.
linear address: 也叫virtual address,用一个32位的无符号数表示4GB的地址空间.

logical  address 到linear address 的转换是通过MMU中叫做segmentation unit的硬件电路来完成的.

在linux中,代码段和数据段都从0x0000 0000 开始,在用户态或内核态下的所有进程可以使用相同的逻辑地址.

所以:  logical address的偏移量字段的值与 相应的线性地址总是相等(一致)的.

c0000000 是内核空间和用户空间的分界值,该值是用PAGE_OFFSET来定义的.
回复

使用道具 举报

发表于 2008-9-6 20:36:18 | 显示全部楼层
在linux中 线性地址(页),逻辑地址(段)完全一样!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-22 14:56 , Processed in 0.041095 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表