为什么无法访问物理内存中的连续内存地址

时间:2015-02-14 10:47:07

标签: memory architecture operating-system virtual-memory

根据以下链接中的Microsoft文档:

  

https://msdn.microsoft.com/en-us/library/windows/hardware/hh439648%28v=vs.85%29.aspx

     
      
  • 程序可以使用连续范围的虚拟地址来访问   物理内存中不连续的大内存缓冲区。
  •   

所以有一个问题,为什么在物理内存中不能为进程提供连续的内存?

由于文档的原因,还有另一个问题,下面的图片展示了用户和系统空间的虚拟内存:

enter image description here

系统虚拟地址空间在整个内存中是唯一的,但是每个进程都有一个虚拟地址空间?

感谢。

2 个答案:

答案 0 :(得分:1)

首先将进程加载到内存中时,操作系统可以优化以将进程页面连续加载到物理内存。内存中的进程页面由于交换进出而总是连续的,因为还有其他进程和事情。占用空间的内存,所以如果稍后当一些进程页面变得不那么使用时,它会被交换回硬盘驱动器,当再次需要它时,不能保证在交换之前加载到同一个地方,因为可能有另一个进程页面躺在那里。您应该阅读有关虚拟内存的信息,以便更好地理解所有这些内容。

答案 1 :(得分:-3)

你的问题很简单!你已经问过为什么我们可以在虚拟内存中使用大内存缓冲区,而不是在物理内存中!这是因为我们仅限于硬件!如果我们能够在物理内存中访问我们想要的缓冲区,那么行业必须制作1024GB内存才能让我们满意!但我们正在使用8GB内存,我们满意......!存在虚拟内存以满足我们的需求并使硬件更加高效!

希望它有所帮助< 3