Feed Facebook

A-A+

磁片碎片整理詳解

2009年06月29日 Windows XP, 研究資源 暫無評論

注意 : 此文不適用於固態硬碟

錯誤的理解
很多人都會說,我的磁碟空間足夠使用,或者我的系統運行足夠順暢,所以根本不需要進行磁片碎片整理。這個理解絕對是錯誤的,首先,磁片碎片整理是必須的系統操作之一,其次,無論您是否願意,系統都在悄悄為您進行著這樣的操作。
到底為什麼要需要整理碎片?
眾所周知,磁片上的檔佈局會強烈地影響I/O性能,嚴重碎片化的或散佈在磁片中的檔和目錄會損害性能,雖然Windows XP會自動重定位某些檔來改善性能,但通常情況下,這並非屬於系統必須的常規,而且通常情況下也僅包含磁片上很小部分的檔。
從這方面來考慮,應該在系統安裝結束後立即對磁片進行完整的碎片整理。


磁片碎片整理如何進行
默認情況下,Windows XP每隔3天就會執行一次局部碎片整理,並根據當天的使用情況調整檔在磁片上的物理位置,所移動的檔將被寫入Layout.ini檔,這是 Windows XP認為應該按照這一順序來安排檔在磁片上的物理位置,該檔的路徑在C:/Windows/Prefetch。
系統在空閒時會自動整理磁片碎片,此時會首先讀取Layout.ini檔中的內容,並針對其中涉及的檔進行局部的碎片整理,這也是磁片整理程式轉移檔位置的依據。


深入熟悉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文件中。

 

不讓系統自動整理磁片碎片
有時候,你可能會覺得局部碎片整理的功能非常無聊,因為磁片的碎片整理也會對硬碟進行某種程度的操作。網上流傳著關於通過修改註冊表鍵值來禁用局部碎片 整理的技巧,看似有理,但事實上,這些所謂技巧是完全無效的。事實上,你即使將C:/Windows/Prefetch/目錄下的檔全部刪除,重新啟動 系統後仍然會自動創建Layout.ini檔,屆時3天1次的局部碎片自動整理功能會被重新啟動。正確的方法應該是用記事本打開Layout.ini文 件,將其中的內容全部刪除,並將這個檔設置為唯讀屬性,這樣Windows XP就無法啟動局部碎片自動整理功能了,當然你也就不用擔心C:/Windows/Prefetch/會變得越來越龐大。

 

進一步討論
我們經常可以從網上看到關於修改註冊表鍵值以提高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”即可。

問題三:禁止預讀取後能提高系統的啟動速度嗎?
網路上流傳著一條關於提 升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後,的確可以減少預讀取的檔,但系統初始化內核的工作是一個非常複雜的過程,此時需要載入很多底層 的驅動程式、啟動子系統以及相關的服務,即使是當我們看到了歡迎螢幕,也不能認為此時系統已經啟動完成,因為系統會在後臺繼續初始化那些未完成的驅動程式 的載入工作,雖然捲軸的動作次數較以前大大減少,但在顯示歡迎螢幕之前的黑屏過程卻反而有所增加,因此總的系統時間並未變化。

 

標籤:

給我留言