打印

请教逻辑地址的一个问题

请教逻辑地址的一个问题

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

TOP

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来定义的.

TOP

在linux中 线性地址(页),逻辑地址(段)完全一样!

TOP