2012-07-06 192 views
0

Linux內核的虛擬內存大小佔用48GB內存,64位機器的大小是多少?我知道在32位機器上,Linux內核佔用1GB的虛擬內存。Linux內核的虛擬內存大小佔用48GB內存,64位機器的大小是多少?

+0

我很確定這是一個可配置的值。最有可能它需要儘可能多的[交換空間](http://superuser.com/questions/172724/what-file-system-is-swap-on-linux) – Shahbaz 2012-07-06 13:39:54

+0

爲什麼會在乎你有48GB內存? (只是在開玩笑) – KurzedMetal 2012-07-06 13:53:01

+0

@KurzedMetal:這是一個有效的擔憂,它與安裝的實際RAM無關。例如,你可能想要映射一個100GB的文件。嘿,不要問我爲什麼,但你可能想這樣做:-)這個「正常工作」就像魔術一樣。除了當你的可用地址空間只有2GB時,它不會......所以它可能是有道理的問。想象一下,碎片整理程序可以映射驅動器並使用memcpy移動扇區... :-) – Damon 2012-07-06 13:56:31

回答

1

對於不實現完整64位的實現,AMD64使用「規範形式」地址(請參閱第131-135頁here)。這種奇怪的方案背後的基本原理是,隨着硬件的發展,將來可能會增加更多的比特位,並且這兩個方向將會一起向中間增長。

目前,所有實現(即,所有現有處理器)具有48個的地址,因此00000000'00000000--00007FFF'FFFFFFFF和FFFF8000'00000000 - FFFFFFFF'FFFFFFFF是有效的地址範圍,具有在存儲器128TB每個可用地址空間的一半(總共256TB)。

因此,這將是128TB,這也是Linux的最大每進程地址空間under AMD64

+0

謝謝!它真的幫助我很多! – injoy 2012-07-06 13:55:41