newbrian02 wrote:
有此經驗,我不會再到...(恕刪)


說這種話?難道這就是傳說中的草莓族嗎?
yup190 wrote:
我沒記錯的話應該是這...(恕刪)


會少的原因是

有一塊記憶體會被作業系統拿去當mapping address

能拿來跑程式的區段會比較少一些…
maypcc wrote:
會少的原因是

有一塊記憶體會被作業系統拿去當mapping address

能拿來跑程式的區段會比較少一些…
...(恕刪)

不過嚴格來說,幫PCI/PCI-E裝置指派MMIO的對應位址(以及所需其他資源)是在開機時由BIOS進行的,如果硬體有支援並啟動了memory remapping能力,BIOS也會把跟PCI/PCI-E MMIO位址重疊到的實體主記憶體重新對應到較高的位址去。

舉例來說,如果系統有4GB的實體記憶體需要申請定址位址(門牌號碼),但是從編號3GB~4GB的定址位址(門牌號碼)已經被PCI/PCI-E裝置跟系統裝置優先佔去了,則BIOS會將原先同時申請想對應到編號3GB~4GB位址(門牌號碼)、因而造成衝突的1GB實體記憶體重新分配對應到編號4GB~5GB的位址(門牌號碼),但若是在沒有memory remapping重對應能力的系統上,這1GB拿不到位址(沒有戶口的黑戶)的實體記憶體會被浪費掉,就算裝了64-bit的作業系統也沒有辦法使用到這1GB。

如果支援PAE的32-bit作業系統沒有被閹掉,經過這個memory remapping重對應過程後其實對作業系統來說能拿來跑程式的實體記憶體並沒有變少(仍然是將近4GB,而不是2.x/3.xGB),例如32-bit的Linux、FreeBSD、Solaris、Windows Server 2003/2008、甚至XP SP1都可以妥善利用被remap過的實體記憶體,獨獨從XP SP2以後到Vista SP1都被閹割了,造成作業系統會故意忽略超過4GB以上的位址(門牌號碼),因此上面例子中的那1GB實體記憶體是明明已經從BIOS那邊拿到門牌戶口了(編號4GB~5GB的位址)、但XP SP2~Vista SP1等卻偏偏故意視而不見、不納入管理也不主動分配給程式執行使用,必須透過一些特殊工具如Gavotte RAMdisk或是由程式本身主動利用AWE API去請求,才能使用到這些記憶體。但不管哪一種方式,能存放的只是資料而非程式本體,用途還是受限了。
x20838x wrote:
32BIT本來就只能定址"4G實體"記憶體
2^32 = 4G

小弟不才,想請教一下,
所謂"4G實體"記憶體 指的應該是4GB吧?
至少在工作管理員裏看到的是這樣.

但...為什麼是2^32(bit) 算出來的4G 不是 4Gb 而是 4GB 呢?
ch1882 wrote:
但...為什麼是2^32(bit) 算出來的4G 不是 4Gb 而是 4GB 呢?

以資料的角度來看2^32的確是4G bit,
但是這裡討論的32bit指的是"定址"的寬度。

而且32bit的OS指的是它的資料都是以32bit為單位來儲存、發送,並不是說它就只能定址32bit,
如ycweng網兄所說的Windows 2003、Free BSD這些OS都是可以定址超過32bit的。
文章分享
評分
評分
複製連結
請輸入您要前往的頁數(1 ~ 7)

今日熱門文章 網友點擊推薦!