Memory 为什么不能访问物理内存中的连续内存地址

Memory 为什么不能访问物理内存中的连续内存地址,memory,architecture,operating-system,virtual-memory,Memory,Architecture,Operating System,Virtual Memory,根据以下链接中的Microsoft文档: 程序可以使用连续的虚拟地址范围来访问 物理内存中不连续的大内存缓冲区 所以有一个问题,为什么物理内存中不能有进程的连续内存 文档中还有另一个问题,下图演示了用户和系统空间的虚拟内存: 系统虚拟地址空间在整个内存中是唯一的,但是每个进程都有一个虚拟地址空间 谢谢。你的问题很简单!你问过为什么我们可以在虚拟内存中有大的内存缓冲区,但在物理内存中却没有!那是因为我们仅限于硬件!如果我们能够在物理内存上访问我们想要的缓冲区,那么为了满足我们的需求,工业界

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

  • 程序可以使用连续的虚拟地址范围来访问 物理内存中不连续的大内存缓冲区
所以有一个问题,为什么物理内存中不能有进程的连续内存

文档中还有另一个问题,下图演示了用户和系统空间的虚拟内存:

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


谢谢。

你的问题很简单!你问过为什么我们可以在虚拟内存中有大的内存缓冲区,但在物理内存中却没有!那是因为我们仅限于硬件!如果我们能够在物理内存上访问我们想要的缓冲区,那么为了满足我们的需求,工业界必须制造1024GB的内存!但我们使用的是8GB内存,我们很满意。。。!虚拟内存的存在是为了满足我们的需求,使硬件更加高效


希望有帮助首先,当进程加载到内存中时,操作系统可以优化将进程页连续加载到物理内存。内存中的进程页不能总是连续的,因为内存中有其他进程和东西占用空间,因此,如果以后某些进程页面使用率降低,则会将其调回硬盘驱动器,如果再次需要,则无法保证在调出之前将其加载到同一位置,因为可能会有另一个进程页面放置在那里。您应该阅读有关虚拟内存的内容,以便更好地理解所有这些内容。

您读过吗?@OliverCharlesworth是的,但几个月前,我对this@OliverCharlesworth你能帮个忙吗?我没有发现你说的任何东西。如果你不介意的话,至少在页面上告诉我你提到的原因。谢谢你能再解释一下第二个问题吗?thanks@Mohammadyummy,是的,内核有自己的虚拟空间,每个进程都有自己的虚拟空间。每个进程彼此隔离,进程A无法访问进程B地址空间,除非进程B允许我们这样做,以防进程间通信。我没有投反对票,但你的答案毫无意义,似乎也无法回答问题。