平面地址space、线性地址、基地址、有效地址计算有什么区别

What are the differences among flat address space,linear addresses,base address,effective address calculations

所有这些东西之间有什么区别:平面地址,基址 地址,线性地址,有效地址,物理地址,有效地址计算 ???

80x86既有分段也有分页;其中虚拟地址(软件使用)被转换为物理地址(硬件如内存控制器)使用。对于完整转换:

  • 首先CPU确定有效address/offset(例如,对于像“mov eax,[eax+ebx*4+99]”这样的指令,CPU计算"eax+ebx*4+99")

  • 的结果
  • 然后 CPU 应用分段(通过添加 段基地址 ,在检查段限制之后)得到 线性地址.

  • 然后CPU使用线性地址和页表(and/or TLB)将线性地址转换成物理地址.

注意:如果段基地址始终为零(并且段限制设置为最大值),则段实际上被禁用(因为它什么都不做)。这通常称为“平面寻址”(大多数操作系统都是这样做的)。