程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 線程-有幾百個進程卻只有幾G的內存,求解釋這幾百個進程如何共享內存的?

線程-有幾百個進程卻只有幾G的內存,求解釋這幾百個進程如何共享內存的?

編輯:編程綜合問答
有幾百個進程卻只有幾G的內存,求解釋這幾百個進程如何共享內存的?

我感覺每個進程“占的內存”加起來應該大於物理內存,,
怎樣的內存管理和調度可以讓這幾百個進程看起來是一塊運行的啊?

最佳回答:


同一個物理頁可以映射到不同進程的地址空間,比如如果多個版本的程序都用同一個Visual C++運行時的DLL,那麼只讀數據是共享的。一個進程的私有內存才是說占就真占的。

另外,系統會把暫時不用的內存(比如窗口正在被最小化的程序的內存)交換到磁盤上的虛擬內存交換文件,直到下次程序想起來用(比如窗口正在被還原)的時候再交換回來。一個機器上的可用內存應該是對操作系統可見的物理內存(32位的Windows因為地址空間限制一些內存可能用不了)+虛擬內存。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved