為了提高系統的效能,加快系統的啟動、檔案讀取的速度,Windows XP/Server 2003中增加了預讀取功能。Windows XP/Server 2003系統硬碟下的Windows\\Prefetch檔案夾,就是預讀取所在的檔案夾,且在Prefetch檔案夾中有許多以PF為副檔名的檔案,這就是系統產生的預讀取檔案。但是這個功能如果用不好,時間一長,會產生大量的預讀取檔案, 佔用寶貴的硬碟空間,導致系統搜尋花費的時間更長,加重系統搜尋的負擔,使系統運行速度變慢。因此,只有管好、用好這些預讀取檔案,才能始終保持系統效能最佳化,讓系統跑得更快、更順暢。
Prefetch
Windows Vista的SuperFetch構建在由Windows XP引入的被稱為Prefetch的技術之上,所以在瞭解SuperFetch和EMD之前,最好讓我們先談談它。首先,預取是作業系統實際需要之前,從磁碟向記憶體中匯入關鍵資料和程式碼片段的進程。記住了這一點,讓我們大致瞭解預取是如何工作的。
為了讓整個預取操作切實地提高效能,Windows XP緩衝管理器在系統啟動過程中以及在各種應用程式被匯入的時候,監視資料在磁碟和RAM之間以及在RAM和虛擬記憶體之間的移動。當緩衝管理器監視這些事件時,它構造目錄和每個應用程式或進程引用的所有檔案的映射。這些映射被儲存到\Windows\Prefetch檔案夾副檔名為.pf的檔案中。
在這些對應檔被建立之後,緩衝管理器將在系統啟動以及匯入應用程式的時候使用它們以提高效率。更明確地,緩衝管理器會攔截將被匯入的每一個進程或應用程式並且查看\Windows\Prefetch檔案夾以確定是否存在相應的映射。如果存在,緩衝管理器將指派檔案系統立即訪問映射中的目錄或檔案引用。然後緩衝管理器將警告記憶體管理器並告訴它使用對應檔中的資訊向記憶體中匯入資料或代碼。當這個預取操作完成之後,緩衝管理器將允許應用程式或進程繼續匯入。在應用程式或進程這樣做的過程中,它會發現需要的大部分檔案和資料已經存在於記憶體中,因此減少了磁碟訪問量並且使得應用程式或進程匯入或響應得更迅速。
為了進一步提高這個預取操作的效率,Windows XP會定期地分析對應檔的內容,編輯一個目錄和檔案清單,以匯入的順序組織它們,並且將這些資訊儲存在\Windows\Prefetch檔案夾的名為Layout.ini的檔案中。然後它會安排磁碟磁碟重組程式定期運行並且使用Layout.ini檔案中的資訊以重新部署所有目錄檔案,讓它們排列在磁碟中臨近的地區。
SuperFetch
既然你知道了Windows XP的Prefetch技術是如何工作的,你就瞭解了Windows Vista的SuperFetch技術工作原理的70%。作為Windows XP的Prefetch的下一版本,SuperFetch包括了Prefetch的所有功能並做的更多。
首先,SuperFetch克服了Windows XP的Prefetch中的一個大缺點。正如我前面解釋的,Prefetch通過匯入大部分由記憶體中一個應用程式或進程需要的檔案或資料,所以可以在需要時更迅速地訪問它們。然而,由於這些檔案和資料存在於記憶體中,所以它們受控制虛擬記憶體的規則支配。換句話說,當其他應用程式需要訪問記憶體,任何預取的資料會被移出到硬碟上的分頁檔中。當再次需要它時,必須將它從分頁檔中移回到記憶體,這當然抵消了效能增強。
SuperFetch更進一步地保證你獲得對效能增強最有效使用。除了構造我前面提到的對應檔之外,SuperFetch還會構造你使用的應用程式的描述檔案,它包括你在何時使用和使用的頻率等資訊。然後,SuperFetch將跟蹤描述檔案中的應用程式並且記錄任何預取資料在何時被移出到分頁檔中。SuperFetch將監視引起預取資料被移出到分頁檔的應用程式描述檔案,並且應用程式一完成,它就將預取資料取回到記憶體中。所以當你轉到訪問應用程式,預取資料將在記憶體中再次可用而且應用程式會快速響應。
如果你使用Windows XP作業系統,那麼請注意磁碟磁碟重組的問題。 1.為什麼要需要整理片段 磁碟上的檔案布局會強烈地影響I/O效能,嚴重片段化的或散布在磁碟中的檔案和目錄會損害效能,雖然Windows XP會自動重定位某些檔案來改善效能,但通常情況下,這並非屬於系統必須的常規,而且通常情況下也僅包含磁碟上很小部分的檔案。 從這方面來考慮,應該在系統安裝結束後立即對磁碟進行完整的磁碟重組。預設情況下,WindowsXP每隔3天就會執行一次局部磁碟重組,並根據當天的使用方式調整檔案在磁碟上的物理位置,所移動的檔案將被寫入Layout.ini檔案,這是Windows XP認為應該按照這一順序來安排檔案在磁碟上的物理位置,該檔案的路徑在C:\Windows\Prefetch。 系統在空閑時會自動整理磁碟片段,此時會首先讀取Layout.ini檔案中的內容,並針對其中涉及的檔案進行局部的磁碟重組,這也是磁碟整理程式轉移檔案位置的依據。 2.深入認識Prefetch目錄 在Windows XP及其以後的作業系統中,增加了預讀取功能(也可以理解為“預先裝載”),該功能可以提高系統的效能,加快系統的啟動、檔案讀取的速度,這些預讀檔案儲存在%systemroot%\Prefetch目錄中,以*.pf為副檔名,這些*.pf檔案包括了載入檔案的詳細資料和載入順序。 每一個應用程式,包括Windows XP的啟動過程,都會在PrefetCh目錄下留下相應的預讀取檔案,預讀取檔案描述了應用程式或啟動時各個模組的裝載順序,其命名方式是以應用程式的可執行檔的名字為基礎,加上一個“-”和描述執行檔案完整路徑的十六進位值,再加上副檔名.pf,例如QQ.EX-0065A2A1.pf。每當使用者啟動一個程式,會自動在Prefetch目錄中對應的*.pf檔案中留下一條記錄。不過,Windows XP啟動的預讀取檔案總是同一個名稱,即NTOSBOOT-B00DFAAD.PF,其中包含著啟動時載入檔案的記錄。 當下一次啟動系統或運行某個程式時,Windows會參考相應的*.pf檔案,將其中記錄的所有檔案載入記憶體,而不是象以往一項一項依指令逐個載入檔案。另外,Windows會利用啟動程式或程式的*.pf檔案制訂一個最佳化的磁碟分配方案,這個方案的相關資訊儲存在Lyaout.ini檔案中。 3.不讓系統自動整理磁碟片段 有時候,你可能會覺得局部磁碟重組的功能非常無聊,因為磁碟的磁碟重組也會對硬碟進行某種程度的操作。網上流傳著關於通過修改註冊表索引值來禁用局部磁碟重組的技巧,看似有理,但事實上,這些所謂技巧是完全無效的。事實上,你即使將C:\Windows\Prefetch\目錄下的檔案全部刪除,重新啟動系統後仍舊會自動建立Layout.ini檔案,屆時3天1次的局部片段自動整理功能會被重新啟用。閃此正確的方法是用記事本開啟Layout.ini檔案,將其中的內容全部刪除,並將這個檔案設定為唯讀屬性,這樣Windows XP就無法啟用局部片段自動整理功能了,當然你也就不用擔心C:\Windows\Prefetch\會變得越來越龐大。 4.進一步的討論 我們經常可以從網上看到關於修改註冊表索引值以提高Windows XP啟動速度的技巧,這些技巧真的是有效嗎?下面,我們結合磁碟磁碟重組的執行個體來進行深入一步的探討: 問題一:C盤為什麼無法進行磁碟重組? Windows XP系統,在對C盤進行磁碟重組時,提示由於C:\Windows\prefetch\WMIPRVSE.EXE-28F301A9.PF檔案損壞,掃描無法繼續。 C:\Windows\Prefetch\是Windows XP的預讀檔案夾,Windows XP將頻繁使用的資料存放在預讀檔案夾中,需要再次使用這些資料時可以大大加快讀取速度,但隨著時間的增長,這個檔案夾的個頭會變得越來越大,而且可能會存在一些死鏈檔案,此時如果執行磁碟重組,就有可能出現上面提到的錯誤,解決的辦法是清空這個檔案夾,然後整理片段。 問題二:啟動時也能整理片段? Windows XP可以在啟動時進行磁碟重組,使那些啟動所必須的檔案能夠相鄰排列,從而在下次啟動時提高速度,不過該功能在預設設定下是被關閉了的。啟用的辦法是開啟登錄編輯程式,找到HKEY_LOCAL_MAHCINE\SOFTWARE\Dfrg\BootOptimizeFunetion,雙擊右側邊窗格中的Enable鍵,將索引值由預設的“N”修改為“Y”即可。 問題三:禁止預讀取後能提高系統的啟動速度嗎? 網路上流傳著1條關於提升Windsws XP啟動速度的技巧,具體方法是通過修改註冊表中HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters目錄下EnablePrefeteher子鍵,將它的索引值賦為“1”。這樣可以減少預讀取的檔案,減少進度條等待時間,效果是進度條跑一圈就進入登入畫面了。 微軟的技術文檔解釋了EnablePrefetcher被賦予不同值的含義: 0:取消預讀取功能; 1:只預讀取應用程式; 2:只預讀取Windows系統檔案。 3:預讀取Windows系統檔案和應用程式,這是WindowsXP的預設值。 雖然EnablePrefetcher索引值設定為1後,的確可以減少預讀取的檔案,但系統初始化核心的工作是一個非常複雜的過程,此時需要載入很多底層的驅動程式、啟動子系統以及相關的服務,即使是當我們看到了歡迎畫面,也不能認為此時系統已經啟動完成,因為系統會在後台繼續初始化那些未完成的驅動程式的載入工作,雖然捲軸的動作次數較以前大大減少,但在顯示歡迎畫面之前的黑屏過程卻反而有所增加,因此總的系統時間並未變化。