2011-09-19 31 views
1

如果我有一臺計算機和兩個每個運行一個進程的cpu,他們都希望在運行時使用相同的虛擬地址'x'。這是否會發生,他們在物理地址空間中獲得相同的位置? (因爲它們是同時存在的,不知道另一個是否也要求空間,並且可能意外地獲得了相同的物理地址)兩個cpu機器上的兩個不同進程可以同時訪問相同的RAM地址

+1

我當然希望不會。除非內核中存在嚴重錯誤,否則不太可能。 – James

+0

您是在編寫OS級代碼還是應用程序級?如果是後者,則不必擔心這一點。 – Kelvin

+0

這是一個OS理論問題。我正在談論一個現代操作系統,比如Windows 7,Ubuntu – Vadiklk

回答

4

不,有存儲器原語允許原子訪問存儲器。這允許多個cpus進行協調。如果沒有這種原始性,兩個cpus就無法協調他們的努力。

2

地址空間的分配是協調的,以便兩個進程不偶然地共享其部分地址空間。操作系統可能在進程之間共享只讀地址空間的一部分,典型的例子就是程序本身。

相關問題