请教逻辑地址的一个问题
遇到情景分析(2.4.0)得一个问题,在内核态,逻辑地址和线性地址是一一对应得?在代码哪里保证使逻辑地址时从c0000000开始的?(是不是没有特别设置,逻辑地址从0开始的)
请大家指教,谢谢 logical address: 由16位段选择符+32位偏移量组成.
linear address: 也叫virtual address,用一个32位的无符号数表示4GB的地址空间.
logicaladdress 到linear address 的转换是通过MMU中叫做segmentation unit的硬件电路来完成的.
在linux中,代码段和数据段都从0x0000 0000 开始,在用户态或内核态下的所有进程可以使用相同的逻辑地址.
所以:logical address的偏移量字段的值与 相应的线性地址总是相等(一致)的.
c0000000 是内核空间和用户空间的分界值,该值是用PAGE_OFFSET来定义的. 在linux中 线性地址(页),逻辑地址(段)完全一样!
页:
[1]