如果我有一臺計算機和兩個每個運行一個進程的cpu,他們都希望在運行時使用相同的虛擬地址'x'。這是否會發生,他們在物理地址空間中獲得相同的位置? (因爲它們是同時存在的,不知道另一個是否也要求空間,並且可能意外地獲得了相同的物理地址)兩個cpu機器上的兩個不同進程可以同時訪問相同的RAM地址
1
A
回答
4
不,有存儲器原語允許原子訪問存儲器。這允許多個cpus進行協調。如果沒有這種原始性,兩個cpus就無法協調他們的努力。
1
答案是'不'。有防止它的機制。
http://www.ece.cmu.edu/~ece548/handouts/19coher.pdf有一些很好的幻燈片,可以在相對較高的層次上解決這個問題 - 但是附帶的文本可能會更有見地。
2
地址空間的分配是協調的,以便兩個進程不偶然地共享其部分地址空間。操作系統可能在進程之間共享只讀地址空間的一部分,典型的例子就是程序本身。
相關問題
- 1. malloc可以在兩個不同的進程中返回相同的地址嗎?
- 2. 兩個進程中兩個相同的虛擬地址如何映射到不同的物理地址?
- 3. 兩個線程可以同時訪問同步方法嗎?
- 4. 同時使用兩個線程訪問兩個同步塊
- 5. 兩個應用程序可以訪問相同的Cookie嗎?
- 6. 如何在同一資源上同步兩個進程訪問?
- 7. 兩部手機可以有相同的藍牙地址嗎?
- 8. 從兩個不同的線程同時訪問IO(串口)
- 9. 兩個不同的進程可以共享相同的DLL數據嗎?
- 10. 兩個進程共享相同的堆
- 11. 兩個不同的類可以繼承相同的基類嗎?
- 12. 我可以同時爲兩個屬性聲明相同的值:
- 13. 以不同的值在行上連接兩個相同的表
- 14. 比較兩個不同機器上的兩個相同的文件夾,SSH問題
- 15. 生成兩個相同的隨機數和一個不同的
- 16. 進程VS線程:兩個進程可以共享相同的共享內存嗎?可以兩個線程?
- 17. 兩個線程同時訪問同一個ArrayList?
- 18. 可以兩個進程共享相同的GPU內存嗎? (CUDA)
- 19. 兩個進程可以共享相同的類名嗎?
- 20. 在我的本地機器上的兩個不同位置有兩個不同的一個回購分支
- 21. Asp.net會話:兩個不同的用戶可以訪問同一個會話
- 22. 在兩個不同的進程上運行兩個活動
- 23. 兩個相同的字不同
- 24. 如何強制兩個進程在同一個CPU上運行?
- 25. 兩個線程訪問同一個LinkedList
- 26. 從兩個不同的程序訪問相同的文件是正確的?
- 27. 相同的複選框,但它在兩個不同的機器人機器上有不同的顯示?
- 28. .htaccess重定向兩個不同的網址相同的視圖
- 29. matlab將兩個不同的相機給我不同的結果?
- 30. 對於安裝在兩臺不同機器上的相同程序,CLSID可以不同嗎?
我當然希望不會。除非內核中存在嚴重錯誤,否則不太可能。 – James
您是在編寫OS級代碼還是應用程序級?如果是後者,則不必擔心這一點。 – Kelvin
這是一個OS理論問題。我正在談論一個現代操作系統,比如Windows 7,Ubuntu – Vadiklk