史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > 作業系統操作技術文件
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2006-09-19, 06:56 AM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 系統 - 剖析Windows用1G記憶體還慢的原因

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

現在的記憶體基本達到了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/do...C:\RAMDISK

  第二步:點擊"開始e設置e控制台",雙擊打開"新增/刪除硬體",接著選擇"新增/排除設備故障"並單擊"下一步按鍵";在出現的"選擇一個硬體設備"視窗中選中"新增新設備"項,然後單擊"下一步"按鍵;在接下來的視窗中選擇"否,我想從列表中選擇硬體"並單擊"下一步"按鍵;接著在"硬體類型"列表中選擇"其他設備"並單擊"下一步";在出現的窗戶口中單擊"從磁碟安裝"按鍵,在彈出的"從磁碟安裝"視窗中將"廠商文件複製來源"設置為"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"並Enter鍵,接著在[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還處於測試階段,所以仍存在一些問題,所以建議普通玩家在該軟件正式推出後再使用。
__________________
http://bbsimg.qianlong.com/upload/01/08/29/68/1082968_1136014649812.gif
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
有 2 位會員向 psac 送花:
peizhi (2006-09-21),wulihua (2006-09-19)
感謝您發表一篇好文章
舊 2006-09-19, 09:15 AM   #2 (permalink)
長老會員
榮譽勳章
UID - 126403
在線等級: 級別:19 | 在線時長:476小時 | 升級還需:4小時級別:19 | 在線時長:476小時 | 升級還需:4小時級別:19 | 在線時長:476小時 | 升級還需:4小時級別:19 | 在線時長:476小時 | 升級還需:4小時
註冊日期: 2004-04-05
文章: 100
精華: 0
現金: 10564 金幣
資產: 15832 金幣
預設

很棒的文章,謝謝大大分享
也羨慕大大深厚的電腦底子
mrelin4 目前離線  
送花文章: 751, 收花文章: 17 篇, 收花: 30 次
 



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 09:27 PM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1