Operating system 我想知道虚拟地址的确切概念

Operating system 我想知道虚拟地址的确切概念,operating-system,Operating System,虚拟地址在某些地方被描述为线性地址,在另一些地方被描述为逻辑地址。 我想知道哪一个对虚拟地址的概念是正确的。虚拟地址的概念是,你有一个假的/假装的地址空间,并出于一个或多个原因(为了提高灵活性、提高可移植性、提高安全性等)将其转换/映射到真实/物理地址空间。如何在实践中实现这一点并不真正影响理论概念 用于在80x86上实施该概念;使用分段将虚拟地址转换为线性地址,然后使用分页将线性地址转换为物理地址。然而分段可以配置为“虚拟=线性”(通过将分段基数设置为零,分段限制设置为最大值,包括在64位代码

虚拟地址在某些地方被描述为线性地址,在另一些地方被描述为逻辑地址。
我想知道哪一个对虚拟地址的概念是正确的。

虚拟地址的概念是,你有一个假的/假装的地址空间,并出于一个或多个原因(为了提高灵活性、提高可移植性、提高安全性等)将其转换/映射到真实/物理地址空间。如何在实践中实现这一点并不真正影响理论概念

用于在80x86上实施该概念;使用分段将虚拟地址转换为线性地址,然后使用分页将线性地址转换为物理地址。然而分段可以配置为“虚拟=线性”(通过将分段基数设置为零,分段限制设置为最大值,包括在64位代码中,如果FS和GS配置为不执行任何操作);并且可以禁用分页,导致“线性=物理”;如果既不使用分段也不使用分页,那么最终将得到“虚拟=线性=物理”

大多数80x86操作系统不使用分段,而是使用分页;因此,对于80x86上的大多数操作系统(和大多数应用程序),虚拟地址可以描述为线性地址;但是“技术上可以”并不是增加混淆的好理由,几乎没有人会毫无理由地称它们为线性地址(而不是虚拟地址)——通常,只有在差异可能重要的情况下,才会使用“线性”一词


对于逻辑地址,我不知道您在哪里看到的,如果没有上下文,我会(正确或错误地)假设它与存储空间有关,与内存无关(例如,对于旧硬盘,“柱面、磁头、扇区寻址”的替代方案为“逻辑块地址”)。

您需要了解的三个基本概念:

物理-实际的、特定的设备

逻辑-重定向到设备

虚拟设备

在大内存系统出现以前的年代,虚拟和逻辑在地址方面经常混淆。实际上,没有虚拟地址这样的东西。逻辑地址可以映射为一个完全不存在的地址、物理地址或虚拟模拟的内存


您可以通过逻辑地址访问虚拟内存。

x86上的
选择器:偏移量对或远指针是逻辑地址(请参阅英特尔手册)。虚拟地址和线性地址在x86上是同义词,前者更强烈地建议启用页面转换。