【问题标题】:What are the differences among flat address space,linear addresses,base address,effective address calculations平面地址空间、线性地址、基地址、有效地址计算有什么区别
【发布时间】:2020-02-19 09:16:05
【问题描述】:

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

【问题讨论】:

    标签: x86 cpu-architecture memory-address addressing-mode memory-segmentation


    【解决方案1】:

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

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

    • 然后CPU应用分段(通过添加段基地址,检查段限制后)得到一个线性地址

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

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

    【讨论】:

    • 如果不是很明显:如果分页被禁用,那么线性地址已经物理地址。但是,是的,启用分页后,它会在分段之后发生。分段不允许在单个进程的虚拟地址空间中使用超过 4GiB 的内存;线性地址空间在 32 位模式下只有 32 位。 (在 64 位模式下为 64 位。)
    猜你喜欢
    • 1970-01-01
    • 2016-10-05
    • 2013-02-22
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    相关资源
    最近更新 更多