X86 平面地址空间、线性地址、基址和有效地址计算之间有什么区别

X86 平面地址空间、线性地址、基址和有效地址计算之间有什么区别,x86,cpu-architecture,memory-address,addressing-mode,memory-segmentation,X86,Cpu Architecture,Memory Address,Addressing Mode,Memory Segmentation,所有这些东西之间的区别是什么:扁平地址,基址 地址、线性地址、有效地址、物理地址、有效地址计算???80x86同时具有分段和分页功能;其中,软件使用的虚拟地址转换为硬件(如内存控制器)使用的物理地址。对于完全转换: 第一个CPU确定有效地址/偏移量,例如,对于像mov eax、[eax+ebx*4+99]这样的指令,CPU计算eax+ebx*4+99的结果 然后CPU通过添加段基址应用分段,在检查段限制后获得线性地址 然后CPU使用线性地址和页表和/或TLB将线性地址转换为物理地址 注意:如果段

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

80x86同时具有分段和分页功能;其中,软件使用的虚拟地址转换为硬件(如内存控制器)使用的物理地址。对于完全转换:

第一个CPU确定有效地址/偏移量,例如,对于像mov eax、[eax+ebx*4+99]这样的指令,CPU计算eax+ebx*4+99的结果

然后CPU通过添加段基址应用分段,在检查段限制后获得线性地址

然后CPU使用线性地址和页表和/或TLB将线性地址转换为物理地址


注意:如果段基址都始终为零,并且段限制设置为最大值,则段将被有效禁用,因为它不起任何作用。这通常被称为平面寻址,也是大多数操作系统所做的;其中,软件使用的虚拟地址转换为硬件(如内存控制器)使用的物理地址。对于完全转换:

第一个CPU确定有效地址/偏移量,例如,对于像mov eax、[eax+ebx*4+99]这样的指令,CPU计算eax+ebx*4+99的结果

然后CPU通过添加段基址应用分段,在检查段限制后获得线性地址

然后CPU使用线性地址和页表和/或TLB将线性地址转换为物理地址


注意:如果段基址都始终为零,并且段限制设置为最大值,则段将被有效禁用,因为它不起任何作用。这通常被称为平面寻址,这是大多数操作系统所做的。

如果不明显:如果禁用分页,那么线性地址已经是物理地址了。但是,是的,如果启用了分页,它会在分段之后发生。分段不允许在单个进程的虚拟地址空间中使用超过4GiB的内存;在32位模式下,线性地址空间仅为32位。64位模式下的64位。如果不明显:如果禁用分页,则线性地址已经是物理地址。但是,是的,如果启用了分页,它会在分段之后发生。分段不允许在单个进程的虚拟地址空间中使用超过4GiB的内存;在32位模式下,线性地址空间仅为32位。64位模式下的64位。