剖析Windows用1G記憶體還慢的原因_WindowsXP

來源:互聯網
上載者:User
現在的記憶體基本達到了1元/MB的均價,不少朋友的電腦告別了可憐的64MB、128MB記憶體,256MB已經成為標準配製,512MB甚至1GB的記憶體也不再是"聳人聽聞"。但是有一件事情讓很多朋友疑惑:"為什麼使用1G記憶體我的Windows啟動、軟體運行速度還是這麼慢?"

  安裝大容量記憶體後,系統、程式運行效率沒有得到大幅度提高,這是因為系統本身運行機制限制了其管理和運用硬體資源的能力。所以縱然硬體資源非常豐厚,如果超出了Windows管理的範圍,那麼效能也不會得到明顯提升。

   記憶體和硬碟

  許多菜鳥常常將實體記憶體和硬碟混淆在一起,因為兩者的容量都是用MB或GB這類的單位表示,說明實體記憶體和硬碟之間關係的最好比喻是:一個帶一張桌子和一個檔案櫃的小辦公室。

  檔案櫃就像硬碟,程式和資料可以長期安全地存放在那裡,案頭代表實體記憶體,允許在辦公桌上工作的人(作用和處理器相同)直接用放在案頭上的任何檔案(程式和資料)。為了對一個特定檔案進行操作,首先必須從檔案櫃中取出檔案並放在案頭上。如果案頭夠大,可以在案頭上同時開啟多個檔案。類似地,如果你有更多實體記憶體,那麼可以運行更多或更大的程式並對更多或更大的資料進行處理。

  給電腦增加硬碟空間就好比在辦公室裡放一個更大的檔案櫃,而增加更多記憶體就好比得到一個更大的辦公桌,可以同時對更多程式和資料進行操作。

   一、Windows這樣使用記憶體

  想要知道為什麼系統速度提升不再明顯,必須先理解Windows 怎樣使用記憶體。這裡要涉及一個概念——資源。

  這不是平時所說的CPU資源,記憶體資源或統一的"系統"資源。我們接下來要講到的"資源"就是程式可以操縱的Windows物件。舉例來說,螢幕上顯示的每個視窗都是一個資源,每幅圖片也都可以能是一個資源。如果一個應用程式開啟了磁碟上的一個檔案,那麼這個被開啟的檔案也是一個資源。以此類推,如果一個應用程式需要使用一個資源,它就會向作業系統提出請求,要求建立一個或從儲存空間裡調用。

   1.情景再現:程式與系統的對話

  程式說:"嗨,Windows,我要建立一個300像素寬,200像素高的視窗,ok?"於是,Windows立即按要求建立或調用這個資源進記憶體,然後反饋給應用程式一個代號:"好,我已經建立好你要的視窗,它的代號是#38710。"此後,需要用到建立的這個視窗時,應用程式都用Windows反饋的代號代表這個資源。"Windows,麻煩你在顯示螢幕左上方顯示#38710。""好!"最後,當應用程式不需要用到該資源的時候,它會要求Windows去除這個資源。"OK,請你刪除#38710。""好!"。

   2.指標——記憶體中的郵遞區號

  那麼這個代號是依據什麼標準產生的呢?在絕大多數作業系統中,它是靠一種叫做"指標"的東西來確定的。你可以把整個記憶體想像成一個郵局,郵遞員把需要寄往各地的信件分類放到很多個不同的信箱裡。信箱一個接一個,足足佔據了一堵牆。每個心細那個都裝了一些信件,包含要送往一個特定地區的資訊。而且,就好像每個地區都有郵遞區號一樣,每一塊可以儲存資料的記憶體空間也有一個地址——指標。代表這個儲存空間的一串數字。記憶體中某部分資料的"指標",也就是這些資料佔據的第一處記憶體空間的地址。所以,如果我是一個普通的作業系統,有一個應用程式要求我調用一個視窗,我就會按照它告訴我的要求調用這個視窗進記憶體,如果這個資源的資料在記憶體中儲存的地址開始於#1234567,那麼我就會返回一條資訊給應用程式:"好了,我調出了這個視窗,它是#1234567。"

   3.解決指標帶來的問題

  在PC中,這種指標有4個位元組長。所以如果一個應用程式需要給記憶體裡的某個資料配一個指標,那就需要4位元組的記憶體空間。這樣的工作方式給早期的Windows設計者帶來了不小的麻煩,因為那時製作工藝尚不發達,記憶體非常昂貴,一台電腦上有8MB的記憶體就足以讓使用者無數次從夢裡笑醒了,大多數電腦只能配製4MB記憶體。在記憶體如此緊張的情況下,一個應用程式卻經常需要用到幾百萬個資源。要用這些資源,就要個每個資源配發一個指標。每個指標佔據4個位元組,幾百萬個指標,就會消耗掉數量客觀的一塊記憶體空間。這就好比一份錢很少,但如果要發給全國人民每人一份錢,那就是至少一千三百萬元的巨款了。

  所以,Windows設計者採用了另外一種替代方案。他們建立了資源表。就是把當前調入記憶體的所有資源的資訊登記到一個清單。這樣一來,當應用程式要求系統調用一個資源時,系統調用後就不給它配髮指針了,而是直接告訴應用程式該資源在資源表中的序號。"好了,我已經調用了你需要的資源,它在資源表裡面的序號是#383"因為需要不是記憶體位址,所以就可以用一個只需佔用2位元組的數字表示。這隻是兩個位元組的差距。但當你只有幾MB記憶體,而你啟動並執行程式動咎調用大量資源時,這兩位元組的差距就會帶來很大的優勢。

   你知道嗎?

   微軟64位作業系統沒1GB記憶體就別玩

  在32位Windows 2000/XP中,最大支援4GB的記憶體,每個應用程式最多隻能使用2GB記憶體,因為另一半的記憶體也留給系統使用了。而在64位WindowsXP中,這個限制沒有了,每個程式能完全使用4GB記憶體,除Windows,微軟還在開發64位版本的SQL Server 2000和Windows Server2003,不過要運行這些應用程式,需要你的電腦至少得有1GB記憶體。

   4.時過境遷,妙計成缺陷

  但這種方法也有它的弊端——兩個位元組能夠表現的不同數字非常有限

  我們可以做個實驗:請你寫不同的數字。如果只准你寫一位元,那就只能寫出十個不同數字。如果限制寫兩位元,雖然能寫出更多,但總數仍然有限。以此類推,允許位元越多,能寫出的不同數字就越多。但只要位元有限制,寫出的不同數位總數就始終有限。同理,如果允許系統使用4位元組的序號,那麼在這個"位元限制"下,可以有幾十億個不同的序號可供使用。但如果只准系統使用2位元組序號,能用的序號就會銳減到65536個。於是,前面我們講的資源表就不能無限的拉長。其中的序號最多隻有65536個

  於是問題來了。當調用了65536個資源後,再想調用更多的資源,縱然記憶體空間還有1GB,足以儲存數百億個資源,但只有2位元組的資源表卻無法產生更多的序號!沒有序號,就意味著無法將各資源區分開來,應用程式自然無法使用這些沒有"戶口"的資源!事實上,因為沒有序號可用,系統根本無法同時調用65536個以上的資源。

  但在10MB記憶體都是奢望的年代,要同時調用數十萬個資源根本就是"無稽之談"。所以當時的Windows設計者們沒有把這個問題放在心上,果斷地選用了資源表,選用了2位元組序號。

  今天,作業系統算是得到報應了。記憶體便宜了,資源表和2位元組序號仍然給我們節省了記憶體空間,但它帶來的壞處卻遠遠超過了它帶來的好處。我們有足夠的記憶體空間,可以調用數百萬個資源,但資源表裡面只有65536個序號!所以同一時間內,記憶體中只能有65536個資源!還有1GB記憶體空間可用?等著吧!

   5.真正"耗資源"的是誰?

  明白了上面的道理,就不難分辨除了大個檔案,大個程式外,真正消耗系統資源的是哪些程式了:

  ★ 調用大量細小資源,把案頭裝飾的花裡胡哨的軟體

  ★ 各種多媒體播放軟體

  ★ 監視系統的工具軟體

  ★ 能在字型菜單裡面預覽字型的應用程式(如MS Office)

  另外,在Windows 9x n/Me中運行16位程式(如DOS程式)時,Windows會劃定一塊記憶體供所有這類程式使用。除非所有16位程式都已經關閉,這塊記憶體是不會被釋放的。

   6.大記憶體的優勢到底在哪裡?

  難道大記憶體就沒有作用了嗎?記憶體廠商在騙錢?當然不是。當一個應用程式被啟動後,Windows的一些組件也隨之被啟動,這是很常見的事情。當應用程式被關閉,Windows會保留那些組件不關閉,因為可能很快還要用到。同理,程式啟動時調進記憶體的少數資源,也不會隨著程式關閉而退出記憶體。

  這時,大記憶體的有時正可以得到體現了。一方面,大記憶體可以一次性容納大量資料,減少使用效能遠不如記憶體的硬碟作為虛擬記憶體使用的幾率,提高資料調用速度。另一方面,關閉程式過後,更多的常用資料會有充足的空間保留在記憶體中不被清除。一旦重啟程式,你會發現明顯比使用小記憶體時快!

   二、大記憶體使用量精要

   1.把記憶體變成你的硬碟

  如果你的記憶體實在富裕,那麼可以使用微軟專門為Windows2000設計的RAMDISK,它能把部分記憶體虛擬成一塊硬碟,把本來儲存在硬碟的資料虛擬到記憶體中。比如,將Windows的臨時檔案,Internet的臨時檔案放置到這個虛擬磁碟中。大家知道,記憶體的速度要比硬碟速度快多了,這樣能大幅提高資料讀取速度,使Windows運行更加高效,同時,由於資料實際儲存在記憶體中,所以在關機後,其中的資料就會消失,因此能在一定程度上加強系統安全性。

  第一步:從http://www.download.mocrosoft.com/download/win2000ddk/sample01/1/nt5/EN-US/ramdisk.exe下載RAMDISK。並將其解壓縮到一個臨時檔案夾中,比如C:\RAMDISK

  第二步:點擊"開始è設定è控制台",雙擊開啟"添加/刪除硬體",接著選擇"添加/排除裝置故障"並單擊"下一步按鈕";在出現的"選擇一個硬體裝置"視窗中選中"添加新裝置"項,然後單擊"下一步"按鈕;在接下來的視窗中選擇"否,我想從列表中選擇硬體"並單擊"下一步"按鈕;接著在"硬體類型"列表中選擇"其他裝置"並單擊"下一步";在出現的窗戶口中單擊"從磁碟安裝"按鈕,在彈出的"從磁碟安裝"視窗中將"廠商檔案複製來源"設定為"c:\RAMDISK",確定後即出現選擇視窗,選中"型號"列表中的"Ramdisk Driver"項並單擊"下一步"按鈕,期間Windows會出現"沒有找到數位簽章"的對話方塊,單擊"是"按鈕進行安裝。

  第三步:開啟"記事本",輸入一下文字,並將其儲存為Ramdisk.reg

  Windows Registry Editor Version 5.00

  [HEY_LOCAL_MACHINE\SYSTEM\CurentControlSet\Servioes\Ramdisk\Parameters]

  "BreakOnEntry"=dword:00000000

  "DebugLevel"=dword:00000000

  "DebugComp"=dword:ffffffff

  "DiskSize"=dword:01f00000

  "DriveLetter"="R:"

  "RootDirEntries"=dword:00000200

  "SectorsPerCluster"=dowrd:00000002

  [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]

  "TEMP"="R:\\"

  "TMP"="R:\\"

  [HKEY_CURRENT_USER\Environment]

  "TEMP"=R:\\"

  "TMP"="R:\\"

  [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders]

  "Cache"="R:\\"

  [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders]

  "Cache"="R:\\"

  [HKEY_USERS\.DEFAULT\Environment]

  "TEMP"=R:\\"

  "TMP"="R:\\"

  [HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders]

  "Cache"="R:\\"

  [HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders]

  "Cache"="R:\\"

  完成後,雙擊Ramdisk.reg,將其匯入註冊表。以上註冊表資料可以在www.cfan.com.cn下載。

   小提示

  Ramdisk.reg檔案中鍵含義為:

  Parameters:設定Ramkisk的盤符為R,大小為30.9MB

  Session Manager\Environment:設定系統的TEMP和TMP環境變數到虛擬磁碟機R。

  HEKY_CURRENT_USER\Environmnet:設定目前使用者的TEMP和TMP環境變數到虛擬磁碟機R

  Both HKCU Shell Folders:設定目前使用者的Internet臨時檔案到虛擬磁碟機R。

  HKY\.DEFAULT keys:設定預設使用者的TEMP、TMP和Internet臨時檔案到虛擬磁碟機R

  第四步:關機,然後重啟動Windows2000即可。

   小提示

  當然微軟提供的RAMDISK功能相對比較簡單,目前網上還有一些更為強大的記憶體虛擬軟體,比如RamDisk等。

   2.修改註冊表發揮大記憶體優勢

  現在請開啟登錄編輯程式,找到[HKEY_LOCAL_MACHINE\System\CurrentControlSet\ControlSession Manager\MomoryManagement],在右側邊窗格修改一下索引值(要注意的是,做一下設定的前提是記憶體最好超過512MB,並僅限於Windows 2000/XP)。

  (1)"LargeSystemCache"(啟動大的系統緩衝):在記憶體中開闢一塊大的記憶體空間用於磁碟檔案系統的預讀取操作。當程式連續請求的資料增加時,Windows通過系統緩衝自動預讀,使程式能以最快速度擷取所需資料。由於啟用這個系統緩衝會佔用較多的實體記憶體,使得能被程式利用的可用實體記憶體減少。將其值設為1。這樣,系統緩衝從4MB增加到8MB。

  (2)"SecondLevelDataCache"(提高CPU效能):CPU的處理速度要遠遠大於記憶體的存取速度,而記憶體又要比硬碟快得多。這樣CPU與記憶體之間,記憶體與磁碟之間就形成了影響效能的瓶頸效應,前面的"LargeSystemCache"是為了緩解記憶體與磁碟瓶頸而設計的,而CPU為了能夠迅速從記憶體擷取處理資料也設定了一種緩衝機制L2 Cache(二級緩衝)。調整這個索引值能夠使Windows更好地配合CPU利用該緩衝機制獲得更高的資料預讀取命中率。建議將其設定為512

  (3)DisablePagingExecutive(禁用分頁檔):將其值改為1(十六進位),這樣將使所有程式和資料強制性限定在實體記憶體中運行,而不是使用虛擬記憶體。很明顯,當有足夠多的實體記憶體來完成所需任務時,這樣做必使系統效能得到巨大的提升。對於記憶體僅有64MB的使用者而言啟用它或許就是災難——系統頻繁出錯,直至崩潰。

  (4)"IOPageLockLimit"(定製輸入/輸出緩衝尺寸):輸入輸出系統是裝置和微處理器之間傳輸資料的通道,當擴大其緩衝尺寸時資料傳遞將更為流暢。同理,具體設定多大的尺寸要視實體記憶體的大小和運行任務多少來決定,一般來說,如果記憶體有64MB就可將該雙位元組鍵的16進位值設定為400(1MB)、800(2MB)或1000(4MB)128MB記憶體可設為1000(4MB)、2000(8MB)或4000(16MB);256MB記憶體4000(16MB)或8000(32MB)。當然如果有更多記憶體,完全可以將其設為10000(64MB)甚至更多。當設為0時,Windows將自動設定。

   小提示

  據稱,此設定還能夠有效解決BT下載損傷磁碟的問題。

  3.Windows98/Me能用1GB記憶體嗎?

  Windows98/Me不支援超過1GB以上的記憶體,同時,在記憶體超過128MB後,還需進行特別調整才能使系統更好地管理和使用記憶體,並避免出現大記憶體引發的系統故障。所有的關鍵設定都圍繞Vcache(虛擬高速記憶體)。

   你知道嗎?

   什麼是Vcache?

  它是Windows為硬碟分配的、作為高速緩衝的實體記憶體,可以大大提高硬碟的讀寫速度,類似於DOS下的Smartdrv的用途。簡單地說,Vcache 是Windows在實體記憶體中自動分配的一塊空間,用來儲存曾經使用過的,並且Windows認為還會被再次使用的代碼和資料,這樣當新的程式要求使用這些代碼和資料時,就不必從硬碟中讀取,而直接從記憶體中讀取,這樣速度會快出不少,從而大大提高系統效能。

  (1)128MB~512MB

  據專家介紹,如果記憶體為128MB~512MB,最好用"記事本"開啟c:\windows\system.ini尋找[Vcache]一節,找到以"MaxFilecache="開頭的一行,並設定其值為實體記憶體的70%(由於這裡使用的數值以KB為單位,需要使用MB*1024或Bytes/1024的公式來轉換資料),比如:你的記憶體為128MB,那麼就應該是128*0.7*1024=91750.4(約為91750KB),該語句應寫為"MaxFileCache=91750"

  (2)512MB以上記憶體

  有些朋友會發現,當把記憶體增加到512MB以上後,啟動Windows98/Me或開啟DOS視窗時,系統會提示"記憶體不足"。

  這主要是因為Windows98/Me處理大於512MB記憶體時存在缺陷,因此最好將Vcache的MaxFileCache值制定為512MB(524,288KB),也就是"MaxFileCache=524288"。

  (3)1GB記憶體

  如果記憶體達到了1GB或更高,那麼Windows98/Me會出現連續重啟、死機或在使用Windows Update過程中不斷重啟的故障。

  要解決這個問題,同樣是開啟System.ini檔案,在[386Ehh]欄位添加"MaxPhysPage=40000"。這樣,就可以限制Windows讀取的記憶體控制在1GB以下。

  如果無法進入Windows,那麼可在重啟時一直按下Ctrl鍵直到出現啟動菜單,接著選擇"Command Prompt Only"項,在出現命令提示字元後,輸入"edit system.ini"並斷行符號,接著在[386Ehh]欄位添加"MaxPhysPage=40000"。

   4.關閉休眠

  很多使用者喜歡休眠功能,這樣可以實現快速開機功能,但對於大記憶體的電腦來說,在不經常讀、寫硬碟的情況下,最好是把硬碟休眠功能關閉,因為有時也會因此而造成無故死機故障。

   5.有大記憶體就可以不要虛擬記憶體了?

  經常看到不少文章介紹,再有了大記憶體後,就可以將虛擬記憶體禁用掉。其實不然!比如:Windows98/Me對大於512MB的記憶體有先天不足,大於這個數量的記憶體,Windows98會出現不穩定及啟動速度變慢的情況。如果使用了大記憶體加上禁用虛擬記憶體,不穩定因素將會進一步增加。

  另外,Windows本身的設計是,一旦發現有進程轉入不活動狀態,就會把分配給它的記憶體空間映射到分頁檔中,儘可能空出實體記憶體給其他活動的進程,並不是用完實體記憶體才開始動用分頁檔。因為如果等到實體記憶體用完再調用,就已經太遲了。在配製較低的電腦上勢必造成資料轉送和處理停滯。所以禁止虛擬記憶體從原則上來講,最易引起Windows異常,及時不出現運行不了的故障,也會頻繁提示虛擬記憶體不夠,請重新設定云云。

   你知道嗎

  據華碩專家介紹,在使用INTEL 850/850E晶片集的主板時,如果搭配了2GB RAMBUS記憶體後,電腦會出現不穩定現象。這是由於Intel850/850E晶片集的限制,Intel的建議為:記憶體條數*每個記憶體上的晶片數≤24顆。而目前國內銷售的RAMBUS 256記憶體的晶片數是8顆,Rambus512MB記憶體的晶片數就是16顆,所以當使用者使用了過大的記憶體時都有可能出現不穩定現象。

   6.讓大記憶體為硬碟助力

  如果你擁有了超過512MB的記憶體,並且還有一塊邁拓或昆騰硬碟,那麼Maxtor公司推出的MaxBoost值得一試,據稱,它能大幅提升硬碟效能,最大可以提升約60%的硬碟效能。該軟體其實是一塊磁碟驅動,替換了Windows2000/XP的磁碟驅動,能針對不同應用軟體自動在系統記憶體中設定一個適合大小的緩衝,在讀寫資料前起到預讀和緩衝作用,利用磁碟讀寫資料以一種不肯公布技術細節的"進階演算法",從而有效提升硬碟讀寫速度,達到提升應用程式和系統速度的目的。據一些專家介紹,該軟體雖然沒有官方宣稱的那樣神奇,但確實在檔案複製等操作方面大顯身手。當然由於MaxBoost還處於測試階段,所以仍存在一些問題,所以建議普通玩家在該軟體正式推出後再使用。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.