2012年1月29日

linux的PAE

幾年前比較知名的問題應該就是4G記憶體的使用,不管是win 7或者linux都有遇到這個問題,事實上在硬體廠商早就想到,但是因為實際產品一直沒有價格便宜到4G記憶體是隨手可得,這問題就被"擱置"下來(使用者當它不存在XD)
http://zh.wikipedia.org/wiki/PAE,這連結是一個很好的解釋

一般有些資訊背景的人大概直覺的反應是32bit的cpu對於定址有4G大小,所以超過4G的記憶體應該是無法定址成功,所以32bit應該是無法突破4G的限制。這個應該是存在於process上的限制,即使開啟的PAE,暫時也無法突破一個process的只能使用4G記憶體的事情,因為只使用了32bit的位址線,最多只能用到4G。但是系統來說就不是這樣了,intel另外利用了一個register來開啟PAE,並且把階層加大,就可以把極限推超過4G,甚至於到好幾T都不是問題啊。

前兩種未開啟PAE的模式應該比較簡單,只是把address line劃分成幾個部分(因效率考量),接著開啟PAE後,先決定是四個page directory的哪一個,然後再跳到那一個page directory,可以簡單的看成每個page directory後面是一個4G的空間,所以2^4*4G就支援到64G了,但是要注意的是page directory table還是得放在實際記憶體最前面4G的部分

沒有留言: