我想知道逻辑和虚拟内存之间有什么区别和关系?他们的目的有何不同?
逻辑和虚拟地址的关系和差异是否相同?
我想知道逻辑和虚拟内存之间有什么区别和关系?他们的目的有何不同?
逻辑和虚拟地址的关系和差异是否相同?
Answers:
让我们首先回顾虚拟和逻辑寻址之间的区别。我认为区别在于“逻辑地址”意味着程序看到的地址与存储在RAM中的数据的物理地址不同。
如果您有虚拟内存,则可能根本没有物理地址,因为存储的数据可能会被换出到磁盘。但是,可以使系统没有虚拟存储器,其中逻辑地址与物理地址不同,但每个逻辑地址都映射到物理地址。这样可以更轻松地运行多个程序而不会相互踩踏,但不会让程序使用的内存比系统可用的物理内存多。
因此,计算机中没有单独的“逻辑内存”,但我想您可以说具有逻辑地址但没有虚拟内存系统的计算机具有逻辑内存系统。我只想说逻辑内存是通过一些间接方法寻址的内存。您是否有一些特定的计算机系统?
-
考虑您的意见:
相同物理内存的逻辑地址可以相同或不同。通常两个进程无法访问相同的内存,因为那时可以破坏另一个进程。但是,如果他们已经安排使用某种形式的共享内存,他们通常会将该共享内存映射到不同的地址。虚拟地址或多或少是一种逻辑地址,因此如果您有一个支持VM的操作系统,并且两个进程映射共享内存,它们通常会将该内存视为处于不同的地址,就像没有虚拟地址一样记忆。
至于您对逻辑与虚拟目的的理解,虚拟内存用于使用HD扩展您可用于程序的内存。逻辑寻址不仅可用于过程分离,还可以是一个主要用途。
进程使用“逻辑”存储器地址来引用其代码和数据。从逻辑地址到物理地址的转换取决于存储器模型。
当直接映射存储器(即实模式)时,逻辑存储器地址与物理存储器地址相同。
如果物理内存大于处理器的地址空间(例如在16位处理器上),则通常使用内存库硬件来扩展可用的物理内存量。英特尔8086/8088处理器使用灵活的段寄存器而不是固定的存储区方案。将(16位)逻辑地址转换为(20位)物理地址将使用存储体映射表。对于x86,逻辑地址可能包括段寄存器的规范。
如果物理地址范围大于典型的物理存储器(例如十年前的32位处理器),则使用虚拟存储器硬件来提供完整地址范围的使用。逻辑地址由物理内存按需支持。为了容纳完整的虚拟/逻辑地址空间和/或为每个进程提供其自己的地址空间,需要一个后备存储来保存虚拟内存的交换副本。交换的内存可以按段或页面或分段页面进行组织。
BTW在我多年的Unix内核黑客攻击中,我很少听到或使用过“逻辑(内存)地址”这个短语。如果您没有提到物理内存地址,那么它就是虚拟地址。也就是说,“逻辑地址”==“虚拟地址”(当在MMU中激活虚拟存储器时)。