已快取

對已快取功能的介紹。

windows任務管理器中,有個物理記憶體,下面有三項,總數、已快取、還有已用。希望電腦高手能給詳細解一下後兩項,是怎么回事,還有已快取加上可用不等於總數是為什麼?還有已快取用來做什麼?
記憶體管理器的重大改變體現在它對物理記憶體的管理方式。先前版本 Windows 所使用的“待機列表”管理有兩個局限性。首先,頁面的優先化僅取決於進程最近過去的行為,而不會預見到它們未來的記憶體需求。其次,用於優先化的數據僅限定 於進程在任意給定時刻所擁有的頁面列表。這兩個缺點會導致出現“午餐后綜合症”之類的狀況,即您離開計算機一段時間,但需要記憶體密集型的系統應用程式在此 期間一直都在運行(例如病毒掃描或磁碟碎片整理)。此應用程式會強制您的活動應用程式已在記憶體中進行快取處理的代碼和數據由記憶體密集型活動重寫。等您回來 後,就會發現性能變得非常緩慢,因為各應用程式必須從磁碟請求它們的數據和代碼。
Windows XP 採用了預取支持,該功能基於以前的引導和應用程式啟動來執行大規模的磁碟 I/O,以向記憶體預載入所預期到的代碼和檔案系統數據,從而改進了引導和應用程式啟動性能。Windows Vista 憑藉 SuperFetch 又向前邁進了一大步,SuperFetch 是一種通過歷史信息和前瞻性記憶體管理來增強“least-recently accessed”(最近最少訪問的)方法的記憶體管理方案。
SuperFetch 作為在服務主機進程 (%SystemRoot%\System32\Svchost.exe) 內運行的 Windows 服務在 %SystemRoot%\System32\Sysmain.dll 中實現。該方案依賴於記憶體管理器提供的支持,因此它可以檢索頁面使用歷史,以及引導記憶體管理器將來自磁碟檔案或分頁檔案的數據和代碼預載入到“待機列表” 中,並為各頁面指定優先權。SuperFetch 服務基本上是將頁面跟蹤擴展到曾經存儲在記憶體中但已被記憶體管理器重新使用以為新數據和代碼讓出空間的數據和代碼。該服務會將這一信息存儲在 %SystemRoot%\Prefetch 目錄中擴展名為 .db 的場景檔案中(位於用於最佳化應用程式啟動的標準預取檔案旁邊)。在對記憶體使用情況的這種深入了解基礎上,SuperFetch 可在物理記憶體變為可用時預載入數據和代碼。
只要記憶體變為可用(例如,當某應用程式退出或釋放記憶體時),SuperFetch 便會要求記憶體管理器提取最近被驅出的數據和代碼。這將以每秒少數幾頁的速率完成,並且 I/O 的優先權為“非常低”,以便預載入操作不會影響用戶或其他活動應用程式。因此,如果您離開計算機去享用午餐,並且某個記憶體密集型的後台任務導致活動套用程 序的代碼和數據在您離開期間被驅出記憶體,則 SuperFetch 通常會在您回來之前將所有或大多數代碼和數據返回到記憶體中。SuperFetch 還包含了對休眠、待機、快速用戶切換 (fus) 和應用程式啟動的特定場景支持。例如,當系統處於休眠狀態時,SuperFetch 會將數據和代碼存儲在它預期(基於以前的休眠)將在後續恢復期間被訪問的休眠檔案中。相比之下,當您恢復 Windows XP 時,先前快取的數據在被引用時必須從磁碟重新讀取。

熱門詞條

聯絡我們