作業系統的每個程序分配的記憶體空間不是應該是不一樣嗎?the gc2020-12-03 18:30:41

共享問題比較明顯應該是執行緒間,程序的話,你說的是對的,但是有時候兩個程序也會共享一塊記憶體,比如程序間通訊的時候。

作業系統的每個程序分配的記憶體空間不是應該是不一樣嗎?劉生2020-12-03 21:11:22

可以程序間共享記憶體的。 不過需要在程式裡呼叫特定的api,告訴作業系統,你要這麼做。

一般情況下程序間記憶體地址空間是各自獨立互相隔離的。

作業系統的每個程序分配的記憶體空間不是應該是不一樣嗎?知乎使用者2020-12-06 12:52:08

這首先是個語文問題,其次才是計算機問題。

語文上正確的表述是:

1。作業系統為每個程序分配的記憶體空間是一樣的;如32位作業系統的記憶體空間是0-4G

2。作業系統為每個程序分配的記憶體空間所提交的物理記憶體空間在使用者的角度一般是不同的。

3。 使用者可以透過作業系統將同一塊物理記憶體對映到不同的程序空間。

計算機方面,要搞清楚邏輯地址,物理地址,線性地址的概念以及適用。

作業系統的每個程序分配的記憶體空間不是應該是不一樣嗎?龍蝦星人2020-12-06 19:18:06

併發訪問產生不一致的話,我猜應該是訪問了共享記憶體。

作業系統的每個程序分配的記憶體空間不是應該是不一樣嗎?碼農的荒島求生2021-11-18 16:59:48

儘管每個程序都有自己的私有地址空間,但程序也是可以共享一段記憶體的,當兩個程序同時訪問這段記憶體時就有可能出現race condition問題。

但是我猜題主更想問的應該執行緒間的併發訪問問題。

所有執行緒共享所屬程序的地址空間,在這裡每個執行緒都能看到其它執行緒的記憶體資料,包括:堆區以及棧區,當多個執行緒訪問同一塊記憶體且沒有鎖保護的情況下就有可能出現數據不一致問題。