▲Windows 7 Superfetch記憶體管理機制詳解 (網路資料) @ VS dream world :: 隨意窩 Xuite日誌
  • 卍☆卍★卍☆卍


  • 平安知足常樂
  • ☆歡迎★
  • \\ (._.)?
    1. 沒有新回應!
  • 201107021354▲Windows 7 Superfetch記憶體管理機制詳解 (網路資料)

    Windows 7 Superfetch記憶體管理機制詳解

    在瞭解Superfetch記憶體管理機制之前。我們要弄清楚一些概念。下面我就來講解一下什麼叫做「工作集」。

    一、首先,我們從記憶體講起。我們可以簡單的將記憶體理解為「數據結構」+「工作集」。也就是說,在記憶體這個大房子裡面有兩個房間,一個是「數據結構」房間,另一個是「工作集」房間。那麼我們就開始講什麼是「工作集」房間。

    我們可以將每一個程序的運行佔用的記憶體當做一個員工,而這些員工要工作的話就必須要走進他們的辦公室,然後才能開始工作,那麼這些「辦公室」就可以理解為工作集了。引用森木的話就是「簡單的說,應用程序在運行過程中進程所佔用的記憶體中的工作空間就叫做工作集」。

    那工作集的作用是什麼呢?就如我剛才說的,是各個員工辦公的場所,我們可以想像這些員工來自他們的「家」,也就是硬盤,工作集的作用就是讓這些員工從家進入到大廈裡(也就是記憶體裡),也可以說,在這個大廈裡,門口就是工作集房間,員工進入了工作集才能進入大廈。再次引用森木的話就是「工作集的作用是為了應用程序在運行時將硬盤當中對應的文件引入物理記憶體中」。

    可是我們知道,大廈不能只有工作集一個房間,所有的員工在這個房間裡面佔用的地方並不是整個大廈(記憶體)。而工作集房間的面積大小就要看你這個大廈有多大了。如果大一點的大廈工作集房間肯定大,那小的大廈這個房間自然就小了。我在前面也提到過,這個大廈還有一個房間,就是「數據結構」。


    二、物理記憶體的數據結構

    在數據結構這個房間裡,還分有五個小房間。他們分別是:

    Free Page List 自由頁面列表(房間)
    Modified Page List已修改頁面列表(房間)
    Standby Page List備用頁面列表(房間)
    Zero Page List清零頁面列表(房間)
    Bad Page List壞損頁面列表(房間)

    那下面我就結合工作集的工作原理來一起講解數據結構這個房間了。


    三、工作集的工作原理

    舉個例子說,開機後,我目前打開了一些程序,譬如有Word、IE、Media Player、QQ。

    工作集的概念和作用

    他們現在要工作了,就必須進入到他們的辦公室(工作集)中。而這時,工作集這個房間剛剛好滿員了。

    先來說說這些工作:Word我是寫了一些字之後沒有關閉;IE我根本沒用過它;在這時,我現在又想打開一個新程序,Photoshop,於是考慮到工作集空間告急,所以關閉了Media Player和QQ。而Photoshop真的需要工作集當中的頁面給他讓路。這時就要將員工分配到數據結構房間。而數據結構有五個小房間之多,該怎麼處理這些沒用的員工呢?

    原來,五個房間中前四個小房間都是為了收納這些員工準備的。首先,當我關閉了程序,那麼這些員工就不工作了,當然就不在辦公室(工作集)當中。這時,凡是關閉了的程序的工作集頁面就會被轉到Free Page List房間裡面。就好像剛才的Media和QQ一樣。而我使用後(修改後)沒有關閉的程序,就像Word的工作集頁面就會被轉入到Modified Page List房間裡。最後,我連用都沒用IE就轉入到Standby Page List裡面了。

    對於Free Page List中的頁面大多都是我關閉程序後留下的無用數據。為了始終能接納工作集房間排除的員工,便將要這些空間給進程使用。可是帶有無用的頁面和代碼直接使用的話就會造成錯誤。那麼就要將這些無用數據用數字0代替。所以這些無用數據就會被掛載到Zero Page List房間中等待清零。當這個房間裡面員工(無用數據)達到8個的時候,就會觸發清零操作了。隨後再分配給後面的使用。


    四、軟調頁和硬調頁

    相信大家都有過類似的經歷。當我開機後,第一次運行一個程序,就比如說是Word吧,可能需要5秒才能啟動。當我關閉後再開,也許只用2秒。如果我不關閉,直接打開另外一個Word文件,那就更快了。這是什麼原因造成的呢?

    當我們開機後,工作集裡面沒有Word這個員工(頁面),他還在家(硬盤)裡面。於是當我召喚他的時候,它才從家走到辦公室(工作集)。這樣的過程就叫做硬調頁了,當然需要的時間長。而當我們關閉了Word時候,他就被派往大廈的另一房間,我卻馬上再次召喚他,這時,另一個房間內的數據還沒被清零,他便不用從家裡走來,而是直接從數據結構裡面引入就可以了。在不關閉這個程序Word的情況下,他也不用為其他程序讓路的時候,它還存在於辦公室(工作集)裡面,召喚他的時候就會更快。這樣的「無需從硬盤中重新調用數據,而是將數據結構中的頁面重新掛載到工作集中」的過程,便叫做軟調頁了。
    在瞭解了一些基本的概念之後,我們就開始講解vista的新記憶體管理機制「Superfetch」了。總的來說,Superfetch為我們帶來了一下幾點改進:


    會將用戶可能使用的應用程序頁面利用記憶體可用空間進行預加載;
    盡可能地避免系統發生從硬盤的頁面調用;
    讓應用程序最快速度開啟;
    不會由於計算機長時間閒置而使突然使用變得響應遲緩;
    在退出大型應用程序後會主動將之前***轉移到虛擬記憶體中的頁面重新調入記憶體當中;


    一、進行程序頁面預加載

    其實從上面的Word例子我們可以知道,當記憶體中有所需程序頁面的時候會使程序啟動變得更快。而Superfetch具有了學習的功能,自從第一次使用windows 7時,Superfetch就開始記錄我們的使用習慣,將我們經常使用的程序的頁面在開機後進行提前加載,那麼當我們第一次開啟程序的時候便可以獲得像第二次開啟一樣的速度了。所以這些預加載的頁面就會使得我們的記憶體佔用變得多。

    網上有許多教程或是軟件針對XP的記憶體使用進行優化。森木也提到說:「過去在windows XP的系統環境中往往普遍存在一個概念,系統空閒時可用記憶體空間越多越好」。而由於XP得記憶體管理機制並不是十分優秀,所以說即使優化地再好也無法良好的利用大容量記憶體。反之,真正想獲得快速的程序啟動速度就必須確保記憶體中有用戶使用程序的記憶體頁面。(也就是說在正常範圍內,7下面反倒記憶體佔用越高越好了)從而導致高記憶體使用,這也就是大家的一個誤區了。

    在Superfetch開機後進行預加載的時候,採用了vista中的低優先級,所以並不會對正常使用照成影響。當我們打開程序的時候就直接可以從記憶體中調用頁面了。避免了硬調頁,就會大大提升效率。

    下面的話就是為已經使用7的用戶說的了
    由於Superfetch要在開機後進行預加載,所以建議大家不要關機。盡量使用「休眠」或「睡眠」,這樣Superfetch的預加載內容就會保留。從而提高速度和效率。


    二、積極的記憶體調配

    在XP時代,也許你也有過類似的經歷:當開始使用一些程序後,由於有事便離開了。回來的時候卻發現系統響應十分緩慢,特別糟糕。這就是因為任意的後台調用。

    讓我們離開後,程序都處於不使用狀態。這時系統的一些後台程序,如磁盤整理、殺毒軟件等程序就會「全速運行」。導致我們使用的一些程序頁面不得不被擠到了硬盤虛擬記憶體中。可是當這些後台程序完成任務後,XP系統並不會把之前被擠到虛擬記憶體的頁面導回記憶體裡。於是在再次使用電腦時,系統才會手忙腳亂的進行臨時調配,甚至是硬調頁。導致程序響應極其遲緩。

    而windows vista/7的Superfetch就非常聰明了。讓這些後台程序執行完畢後,系統會立即進行記憶體調配。等待用戶再次使用。

    只要符合條件的閃存都可以加速我們的系統。ReadyBoost功能是利用閃存的容量作為Superfetch預加載頁面的儲存空間。但由於微軟採用了特殊的算法,所以並不會影響閃存的壽命。還有,用於ReadyBoost的閃存最好為物理記憶體大小1~2.5倍。如果系統物理記憶體足夠大的話,就沒有必要使用ReadyBoost了。

     

    ▲Flash Memory技術...|日誌首頁|■ SATA與其他規格的比較 ...上一篇▲Flash Memory技術 (網路資料)...下一篇■ SATA與其他規格的比較 (網路資料)...
    回應