我感覺每個進程“占的內存”加起來應該大於物理內存,,
怎樣的內存管理和調度可以讓這幾百個進程看起來是一塊運行的啊?
同一個物理頁可以映射到不同進程的地址空間,比如如果多個版本的程序都用同一個Visual C++運行時的DLL,那麼只讀數據是共享的。一個進程的私有內存才是說占就真占的。
另外,系統會把暫時不用的內存(比如窗口正在被最小化的程序的內存)交換到磁盤上的虛擬內存交換文件,直到下次程序想起來用(比如窗口正在被還原)的時候再交換回來。一個機器上的可用內存應該是對操作系統可見的物理內存(32位的Windows因為地址空間限制一些內存可能用不了)+虛擬內存。