lhj991504 发表于 2008-3-4 09:28:48

请教逻辑地址的一个问题

遇到情景分析(2.4.0)得一个问题,在内核态,逻辑地址和线性地址是一一对应得?
在代码哪里保证使逻辑地址时从c0000000开始的?(是不是没有特别设置,逻辑地址从0开始的)
请大家指教,谢谢

todaygood 发表于 2008-8-24 10:17:20

logical address: 由16位段选择符+32位偏移量组成.
linear address: 也叫virtual address,用一个32位的无符号数表示4GB的地址空间.

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

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

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

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

snakeloveist 发表于 2008-9-6 20:36:18

在linux中 线性地址(页),逻辑地址(段)完全一样!
页: [1]
查看完整版本: 请教逻辑地址的一个问题