【问题标题】:Can two different processes on a two cpu machine access same RAM address simultaneously两台cpu机器上的两个不同进程可以同时访问同一个RAM地址吗
【发布时间】:2011-09-19 14:33:32
【问题描述】:

如果我的计算机有两个 CPU,每个 CPU 都运行一个进程,那么它们都希望在运行时使用相同的虚拟地址“x”。如果它们在物理地址空间中获得相同的位置,会发生这种情况吗? (因为它们是同时的,并且不知道对方也要求空间并且可能会意外获得相同的物理地址)

【问题讨论】:

  • 我当然希望不会。除非内核中存在严重的错误,否则这不太可能。
  • 您是在编写操作系统级代码还是应用程序级代码?如果是后者,则无需担心。
  • 这是一个操作系统理论问题。我说的是现代操作系统,比如 Windows 7、ubuntu

标签: operating-system


【解决方案1】:

不,存在允许原子访问内存的内存原语。这允许多个 cpu 进行协调。如果没有这种原语,两个 cpu 将无法协调它们的工作。

【讨论】:

    【解决方案2】:

    地址空间的分配是协调的,因此两个进程不会偶然共享它们的部分地址空间。操作系统可能会在进程之间共享其地址空间的只读部分,典型的例子是程序本身。

    【讨论】:

      【解决方案3】:

      答案是“不”。有一些机制可以防止它。

      http://www.ece.cmu.edu/~ece548/handouts/19coher.pdf 有一些很好的幻灯片,它们在相对较高的层面上解决了这个主题 - 但随附的文字可能会更有洞察力。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-04
        • 2018-01-05
        • 2011-07-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多