2016-07-06 122 views

回答

1

用户级代码总是看到虚拟地址。它没有办法知道目前对应于这些地址之一的什么物理地址(如果有的话)。 “虚拟”是它生活的唯一世界,也是它唯一知道的世界。对于所有的程序意图和目的,“虚拟现实。”

+0

我已经在问题中的链接分享图像。你能对此有一个看法并且详细阐述一下吗? –

0

澄清:所有操作系统(除了MS-DOS等...)在一个虚拟内存空间中运行的用户程序。每个程序都有自己的感知,包括“位置$12345678”,每个程序的感知是正确。每个程序可以有不同的编号,并可以根据自己的喜好进行更改。

他们能做到这一点,因为他们的没有其实都知道:

  • 凡在物理内存他们 '位置$12345678'” 实际上驻留。 如果它......而且相当,可能不!)
  • 什么是物理地址$12345678

操作系统维护虚拟存储器为每个过程中,采用和物理-RAM的组合(如有必要)页面文件和/或交换的文件空间。一个进程正在使用的信息“按需”提供给一个物理RAM位置,这个位置对于它来说都是未知的,并且它不知道。最近未被使用的信息最终从物理RAM“被盗”并移动到外部存储器中,直到它再次被引用,从而触发所谓的“页面错误”。

由调试器给你的内存的观点是,被感知的存储视图,这是正确的正在调试的程序:虚拟地址,在此过程中的虚拟内存

+0

进程的虚拟地址空间是否有最大限制?就像我们在linux上使用top命令一样,它显示了进程的物理内存和虚拟内存。 (它不断变化)。一个进程的虚拟内存如何改变 –

+0

应用程序认为它有一定的大小的(虚拟)内存区域。它无法检测到尝试访问任何特定位置是否会导致页面错误。它只能通过系统调用从OS请求这些信息来预先确定其(虚拟)内存分配的大小。 –

+0

你看到'top'命令不断变化的原因是因为它可以*看到操作系统的虚拟内存子系统的活动。它可以看到有多少物理*资源正在用于支持任何进程:当前的物理RAM占用空间和每个使用的交换/页面空间。它可以看到进程将会喜欢多少内存(它的所谓“工作集大小”),以及它实际获得多少内存。它可以看到等待的时间。进程竞争物理RAM资源。物理情况不断变化...每微秒。 –

相关问题