Logical Address?Linear Address?Virtual Address?


最近在理解计算机内存管理的时候,又看到了这三个名词,当初在学计算机组成原理的时候就有点绕,现在重新来理解,发现网上很多blog说法都不一致,于是重新翻阅《深入理解计算机系统》、《计算机系统基础》以及Intel IA-32手册,发现还是有说的不甚清晰的地方,于是和老师以及同好讨论,最终得出了一个比较合理的概念区分。


先说结论:虚拟地址(虚地址,Virtual Address)在不同的情境下代表不同的意思:

  • 段页式存储中,虚地址既可以指作线性地址(Linear Address),也可以指做逻辑地址
  • 页式存储和段式存储中,虚地址指作逻辑地址(Logical Address)
    因此,为了不引起混淆,建议尽量不使用虚拟地址,其本身就是一个比较笼统模糊的概念,感觉就是相对物理地址而言的一个称呼。
    在本文,规定三个意义明确的地址:逻辑地址、线性地址、物理地址,方便后续解释。

物理地址

CPU地址总线传来的地址,由硬件电路控制。

逻辑地址

由程序中或者指令中给出的访内地址。

线性地址

在段页式存储中,才有线性地址这个概念。是逻辑地址转化到物理地址的中间产物。

  • 在段式存储中,逻辑地址经过段式管理部件,将其映射为一个线性地址,此时这个线性地址就是物理地址;
  • 若是在段页式存储中,逻辑地址经过段式管理部件,先被映射为线性地址,然后线性地址通过页式管理部件,被映射成物理地址。

虚拟地址

在讨论虚拟地址到底是什么之前,我们先来看三种方式下的地址转换:

段式

页式

段页式

以上图片来源于《计算机系统基础》和《计算机系统结构》,由图我们可以看出,无论是什么模式下,逻辑地址都可以被称之为虚拟地址(VA),然后由于线性地址其实是一个逻辑地址到物理地址变化的中间产物,可以把线性地址理解为页式存储中的逻辑地址,因此很多说法中,线性地址也被叫做虚地址。


总结

总的来说,虚地址就是一个笼统的概念,以后遇到了就按情况理解,自己能够分清楚到底是在讲逻辑地址还是线性地址就好,个人倾向于不用虚拟地址这个概念(笑)。


-------------Thanks for Reading-------------

本文标题:Logical Address?Linear Address?Virtual Address?

文章作者:asKylin

发布时间:2020年05月22日 - 10:05

最后更新:2020年05月22日 - 17:05

原始链接:http://askylin.top/2020/05/22/Address/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。