【问题标题】:Two Processes in Virtual Memory虚拟内存中的两个进程
【发布时间】:2012-01-24 21:39:02
【问题描述】:

我已阅读有关虚拟内存的信息。我有一个疑问。假设有两个进程 P 和 Q 。两者都将具有相同的虚拟内存寻址。他们都有自己的页表。会有一个系统范围的页表。那么如果我们使用系统范围的页表,那么这两个进程在RAM上是如何区分的呢?

【问题讨论】:

  • 你的意思是虚拟地址空间吗?
  • @Keith Nicholas 是的虚拟地址空间

标签: c linux unix operating-system


【解决方案1】:

每个进程都有一个虚拟地址空间,该地址空间映射到物理内存,但通常也可以虚拟化到磁盘。

【讨论】:

    【解决方案2】:

    这是因为虚拟地址分为用户空间和内核空间。启动过程启动后,分页单元被启用,它突然跳转到内核空间虚拟地址,最后将控制权交给用户空间。系统范围的页表是供内核使用的,每个进程都有自己的页表。

    进入内核时使用内核页表,切换回用户时使用用户进程页表。

    每个进程都有自己的页表,从而区分两个进程

    【讨论】:

      【解决方案3】:

      如果有一个系统范围的页表一直在使用,那么这是行不通的,因为只有一个虚拟映射,并且 2 个进程会互相占用对方的内存。

      *nix 系统为每个进程保留一个页表(简单地说),并在内核调度进程运行时在这些页表之间切换。这样每个进程都可以将相同的虚拟地址映射到不同的物理地址,没有问题。

      【讨论】:

        猜你喜欢
        • 2013-12-13
        • 2020-05-21
        • 2011-09-09
        • 2015-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-27
        • 2017-10-02
        相关资源
        最近更新 更多