• 6

我的xp sp3用線上更新後 還是不會支援 到4g

我試著簡單整理一下,方便那些不想看完整段文章的人 (如果有錯請糾正)

目前主流的MS OS (XP & Vista),想要使用到4G以上(含)的實體記憶體,就直接裝64 bit OS.

至於會不會像在32 bit OS下,實體記憶體會被犧牲掉一部分,就要請有裝過4GB以上並且用64 bit的大大來說明一下了.

至於還是使用32 bit OS的人來說,除非有特別需求,不然2G physical memory應該就綽綽有餘了.
X64系統沒有多麼令人恐懼......也不是毒蛇猛獸
也沒有什麼操作上會寸步難行的情況......

甚至要裝到8GB的記憶體,也是輕而易舉....
聽8GB好像要花很多錢,但也不過是四千到六千塊的級數........

想要用4GB以上記憶體的人,一起來用x64的os吧!就不會有什麼只抓到3.xGB記憶體的情況發生
Vista x64 SP1等著你...........WinXP x64 SP2也等著你............

ps.不要再問WinXP x64 SP3哪邊下載....
因為winxp x64修正跟win2003 x64合用修正檔,所以winxp x64的SP會跟win2003一起出....
x64的sp2才剛剛在2007年3月推出....SP3再等個兩年吧....
ycweng wrote:

Roger兄,小弟覺得考古無妨,但是4GB實體記憶體在Vista跟XP SP2下無法充分利用,跟您講的Windows沒採用selector:offset模式,實在是沒什麼關係的,32-bit Linux以及MSFT自家的Server作業系統也是採用一樣的Memory Model,也把selector給閹了,4GB(含)以上的實體記憶體也是運用得好好的。

至於Windows的"每個"Process"只有"4GB虛擬定址空間的問題,敢問Roger兄最近是在寫什麼程式?2GB的User space居然寫到不夠用?Office的那幾支大肥仔如Word,大約也就是佔用幾百MB而已。


你忘了,Windows XP 問題在於加上所有應用程式,實體記憶體也只能 4GB 啊,問題就出在我說的 selector 跟 table 啊。

虛擬記憶體跟實體記憶體的轉換這關,因為MS 對selector跟table的簡化,所以變成整個實體記憶體最多到 4GB,還要被硬體映射吃掉 (是每個 Process 都吃)。

既然要問為甚麼 XP 不能給足 4GB,這就是答案,因為從系統到應用程式 Process 都會硬體映射吃掉這些空間,所以定址當然不能給你足足4GB。

單一節區限制=單一Process限制=系統限制,windows 如 XP 真的簡化了很多東西,其他作業系統並沒有完全廢掉 selector 跟 GDT、LDT 等 table 吧.
寄居蟹(德) wrote:
我試著簡單整理一下,方便那些不想看完整段文章的人 (如果有錯請糾正)

目前主流的MS OS (XP & Vista),想要使用到4G以上(含)的實體記憶體,就直接裝64 bit OS.

至於會不會像在32 bit OS下,實體記憶體會被犧牲掉一部分,就要請有裝過4GB以上並且用64 bit的大大來說明一下了.

至於還是使用32 bit OS的人來說,除非有特別需求,不然2G physical memory應該就綽綽有餘了.



答案是不會。

硬體會映射到高位址,所以,除非有一天 64Bits 定址上限又插滿實體記憶體了,不然應該是不會吃掉現有記憶體.

這道理就像 32 位元 4GB 上限,我插4M、16M.....512MB、1GB、2GB 都不會被吃,就是 4GB 才會。

ycweng wrote:
至於Windows的"每個"Process"只有"4GB虛擬定址空間的問題,敢問Roger兄最近是在寫什麼程式?2GB的User space居然寫到不夠用?Office的那幾支大肥仔如Word,大約也就是佔用幾百MB而已。


要超過2GB記憶體使用其實滿容易的
一個值我用雙精準度8byte來儲存的話
一個50000x50000的矩陣就必須使用到20GB的容量來儲存
這狀況倒是十分容易出現,我自己弄的普通model就有到30000個節點
需要30000x30000的記憶體空間來儲存(理論上)讓我解30000條聯立方程式
因此才衍生出一大堆小技巧來讓矩陣瘦身
但是好幾個瘦身後的矩陣也是需要其他記憶體空間來運算的
最後就只能改成使用direct檔來當作記憶體除存使用
扯到IO就是運算速度被拖慢
換了E6850後發現速度全卡在IO沒得救了
最近測試64位元環境看到程式可以使用到8TB的記憶體真是會讓人感動到流淚啊
Hiro hyn hi^dh ab 'wanath......
Roger Shih wrote:
你忘了,Windows XP 問題在於加上所有應用程式,實體記憶體也只能 4GB 啊,問題就出在我說的 selector 跟 table 啊。

虛擬記憶體跟實體記憶體的轉換這關,因為MS 對selector跟table的簡化,所以變成整個實體記憶體最多到 4GB,還要被硬體映射吃掉 (是每個 Process 都吃)。

既然要問為甚麼 XP 不能給足 4GB,這就是答案,因為從系統到應用程式 Process 都會硬體映射吃掉這些空間,所以定址當然不能給你足足4GB。

單一節區限制=單一Process限制=系統限制,windows 如 XP 真的簡化了很多東西,其他作業系統並沒有完全廢掉 selector 跟 GDT、LDT 等 table 吧.
...(恕刪)

x86的logical address到physical address轉換是兩段的:

logical address => [segmentation unit] => linear address => [paging unit] => physical address

在x86 Linux/UNIX/Windows裡面segmentation unit分段單元都是維持您所謂廢掉的狀態,4GB虛擬定址空間分成kernel space以及user space也不是Windows獨有的,不在每個process space留出kernel space以及硬體裝置對應的位址,應用程式要怎麼呼叫作業系統服務、且必要時讓硬體驅動程式進行MMIO?

但要能夠使用到4GB以上的實體記憶體,不要忘了還有paging unit分頁單元,在支援memory remapping的主機板上,跟PCI裝置位址重疊的實體記憶體會被重對應到4GB以上的實體位址,XP SP2以降要限制4GB的實體位址,從paging unit動手腳禁止調用對應到4GB以上實體位址的記憶體頁面資源便可,將來若要放鬆再打開也較方便,Win Server 2003/2008中高階版以及Linux、FreeBSD並沒有硬加上這個限制,所以paging unit可以利用對應到4GB以上實體位址的記憶體page資源來分配給應用程式。

如果要同時充分利用到segmentation unit分段單元以及paging unit分頁單元兩者,倒是讓我想到一個古早時期採用分頁式分段、結果複雜到讓人維護不下去的作業系統:Multics...,後來也才有Unix這個強調簡潔、效率的作業系統誕生、並衍生一堆後代子孫(包括最新的Mac OS)以及Linux這個旁系血親,MSFT若要獨排眾議僅採用分段單元或分頁式分段,不知維護成本會高多少。

Roger Shih wrote:

寄居蟹(德) wrote:
至於會不會像在32 bit OS下,實體記憶體會被犧牲掉一部分,就要請有裝過4GB以上並且用64 bit的大大來說明一下了.
...(恕刪)

答案是不會。

硬體會映射到高位址,所以,除非有一天 64Bits 定址上限又插滿實體記憶體了,不然應該是不會吃掉現有記憶體.

這道理就像 32 位元 4GB 上限,我插4M、16M.....512MB、1GB、2GB 都不會被吃,就是 4GB 才會。
...(恕刪)

貼一張64位元Windows的圖供您參考,硬體一定會映射到高位址嗎?

32位元的作業系統就根本不可能支援到3.5G以上
只有64位元的才有可能支援4G以上的記憶體
你的朋友也想太多
多看點01上面的文章吧
有狀況外的路人亂入.......

不支援 3.5G以上是M$ 故意加進去的限制.
兩位前輩在討論部份要看清楚.

不是所有 32bits OS 都有 用不滿4G的情況.
Gwaewluin wrote:
要超過2GB記憶體使用其實滿容易的
一個值我用雙精準度8byte來儲存的話
一個50000x50000的矩陣就必須使用到20GB的容量來儲存
這狀況倒是十分容易出現,我自己弄的普通model就有到30000個節點
需要30000x30000的記憶體空間來儲存(理論上)讓我解30000條聯立方程式
因此才衍生出一大堆小技巧來讓矩陣瘦身
但是好幾個瘦身後的矩陣也是需要其他記憶體空間來運算的
最後就只能改成使用direct檔來當作記憶體除存使用
扯到IO就是運算速度被拖慢
換了E6850後發現速度全卡在IO沒得救了
最近測試64位元環境看到程式可以使用到8TB的記憶體真是會讓人感動到流淚啊

Gwaewluin兄的矩陣可是Sparse Matrix?如果是就像您說的有一些資料結構的作法可以減少浪費的記憶體,如果不是,要不要試用AWE API看看?好處是透過AWE要到的記憶體不會被swap到虛擬記憶體去,壞處是要有一台真正插滿20GB實體記憶體的PC、否則透過AWE也要不到足夠記憶體。如果改寫太麻煩,此類的科學研究或Simulation運算就是小弟前述屬於那0.5%真正會覺得4GB虛擬空間不夠用的應用,只好把它移植到64-bit OS、甚至工作站去編譯了,不過若沒有能插20GB RAM的PC,您在64-bit Windows跑直接宣告這個超大矩陣的程式版本,虛擬記憶體分頁檔需求可能也會把硬碟操到吱吱叫....
jiang360 wrote:
32位元的作業系統就...(恕刪)


那如果有呢?!
並不是所有的32bit OS只顯示到3.xGB多

Windows Server 2003 & 2008 x86 32bit 記憶體都可正確顯示4G
可自行翻閱4月號的PCDIY,他裡面有報導
你的資訊該更新一下囉!




這是從PCDIY雜誌一書的擷圖,如有侵權小弟立即刪除

這裡也有人提出 2003 32bit顯示出7.xG多的記憶體容量
http://www.mobile01.com/topicdetail.php?f=300&t=477223
緣分,是一種無法解釋的東西,它就像思念一樣,無聲無息的出現在你我身邊,而你,感覺不到...
  • 6
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?