對「快取」的全面理解和優化

2021-08-30 07:05:14 字數 3279 閱讀 9795

理解快取

作業系統的任務主要是合理地調配系統的各種資源,為各種程式的執行提供環境,它可以看作是硬體和應用軟體之間的乙個媒介。其中對記憶體的管理是系統的最主要的職責,怎麼樣使有限的記憶體用在刀刃上,怎麼要保證系統本身所需的記憶體(以防止宕機,在win2000和winxp裡這一點已經做的非常好了),怎樣克服各種硬體連線的瓶頸。

本文主要就這種硬體連線的瓶頸問題展開一些討論。大家知道計算機的主要硬體,硬碟,記憶體和處理器之間的速度是不一樣的,其中處理器的速度是非常快的,記憶體次之,而硬碟的速度是很慢的(相對於處理器來說),一件任務的處理要通過處理器給出的指令,把相關資料從硬碟裡調出來,到記憶體,在記憶體和處理器之間還會有許多資料的傳輸,記憶體本身不能處理資料,要通過處理器來處理,當他們一起工作的時候,由於處理器和記憶體工作得快,它們常在把事做完了沒事做了,要等硬碟,這樣就大大降低了系統的整體效能,不能發揮所有硬體的效能。為了解決這個問題,乙個優秀的作業系統必然要有「快取」來作為這些硬體之間的乙個中間站,來緩和這種矛盾,從而一定程度上提高系統的效能,「快取」處理的越好,系統的效能發揮的越好。所以研究「快取」就有了它的意義。

看了上面的內容,以前對「快取」沒有認識的朋友應該理解它了。理解之後馬上可以應用的地方就是在自購相容機的時候。大家大可不必去追趕潮流,買什麼p4處理器,而應該買乙個快一點的硬碟,比如買個7200轉的(或更快的),以減少瓶頸的矛盾。處理器嗎,買賽揚好了,一般是沒問題的,處理器大多數時候是閒著的,有時處理很多個大任務時可能會有些緊張,注意避免就可以了。

從某種角度講,記憶體本身是硬碟和處理器之間的乙個快取,它的作用是緩解硬碟和處理器之間的尖銳矛盾的。當它被作為乙個固定的部件後,它本身也成了需要用快取來緩解瓶頸的物件。它對處理器和硬碟夾在中間,是他們的必經之路,硬碟與處理器之間的關係成了硬碟與記憶體和記憶體與處理器之間的雙重關係。所以上面提到的瓶頸問題的處理歸結為對記憶體的優化,即怎樣處理好硬碟與記憶體之間的快取很處理器與記憶體之間的快取。

快取的優化

作業系統本身已經有了很多優化措施,而我們只能在它的優化措施的基礎上根據我們的實際情況來優化。

1,最「著名」的快取是頁面檔案,這個倒不是緩解速度的,而是緩解容量的,在速度上,硬碟不如記憶體,但是容量上,記憶體是不可能跟硬碟比的,當你執行乙個程式需要大量資料,占有大量記憶體時,記憶體就要被塞滿,怎麼辦呢?把那些暫時不用的放到硬碟裡去,因為處理器總是只呼叫處理乙個任務所需的資料,其他的準備的資料(就是那些可能要用的,但暫時還不用的)可以先放一放,如果記憶體放不下,就只好放到硬碟了。但是這樣做是有代價的,當放到記憶體的資料重新要被使用時,你就得等很長時間等系統把在硬碟中得資料調上來。其實你可以感受到系統的這些動作,比如你開啟ie或office,第一次開啟是很慢的,但是關閉後馬上再開啟就快很多,這是因為這時資料還沒被系統「請」出記憶體,系統從記憶體中直接取得資料自然快了;另乙個情況,當你開了乙個photoshop這樣的大軟體,這時開啟office要比平時還慢一點,這是因為記憶體本來被photoshop占領著,要調入office的資料到記憶體就必須把photoshop的資料「請」出記憶體,多了這個過程,開啟自然要慢一些。

優化頁面檔案,可以做一下幾條:

1)把頁面檔案放到系統盤之外,這樣做主要是為了保持頁面檔案的連續性,硬碟讀取資料是靠磁頭在磁性物質上「讀」得到資料的,頁面檔案放在物理上的不同區域,磁頭就要跳來跳去,自然不利於效率。系統盤檔案眾多,頁面檔案幾乎肯定不連續。所以要把它移到其他盤。要提醒一點,當你移動好頁面檔案後,要把原來的刪除掉,系統不會自動刪除。

2)如果有兩個硬碟,把頁面檔案放在轉速快的那個,原因上面已講了很多遍了。

3)最大最小頁面檔案的設定原則。有很多人建議將這兩個值設定成相等的,我不知道他們是那裡來的依據,其實這樣設定是不合理的。我們先要知道他們兩個值的意義。一般情況下,記憶體是不會真的「塞滿」,它會在記憶體儲量到達一定程度時自動將一部分暫時不用的資料放到硬碟,最小頁面檔案是所說的「一定程度」的具體比例的決定因素,最小頁面檔案大,比例就低,反之則相反;最大頁面檔案是極限值,有時你開了很多程式,記憶體和最小頁面檔案都滿了,就自動溢位到最大頁面檔案。所以,將兩者設為一樣大是不合理的。最小頁面檔案要小一些,這樣能夠在記憶體中盡可能存更多的資料,效率就高,最大頁面檔案大一些,以免出現「全滿」的的情況。

4)winxp現在支援4g記憶體,哪怕你有5,6百m的記憶體,你都不需頁面檔案了,這時可以把頁面檔案禁掉。到登錄檔編輯器hkey_local_machine\system\currentcontrolset\controlsession manager \memory management下,找到disablepagingexecutive(禁用頁面檔案)設其值為1。

5)在同上的登錄檔編輯器位置上有個clearpagefileatshutdown(關機時清除頁面檔案),這裡所說的「清除」頁面檔案(即虛擬記憶體)並非是指從硬碟上完全刪除pagefile .sys這個檔案,而是對其進行「清洗」和整理,從而為下次啟動win2k更好地利用虛擬記憶體作好準備。這樣做還有利於安全,頁面檔案上的殘留的資料是可以用特殊的工具讀到的,而這些資料你可能並不想讓人知道。這樣做的代價是關閉系統時間會加長。 將其值設為1即可。

6)學過c的朋友們應該對操作記憶體有個概念,乙個任務完成後,要用free函式來釋放記憶體,但有很多軟體在設計的時候,並沒有在所有環節都這樣做,這會造成無用的資料佔據記憶體,對這種情況可以使用一些記憶體優化軟體,讓這鐘軟體來完成釋放記憶體的動作。

2,下面介紹和優化一些不著名的快取:

1)記憶體讀取硬碟資料要經過乙個系統快取(system cache),它的位置是在記憶體的特定區域,它是用來緩解硬碟與記憶體之間的速度不平衡的。它是以犧牲記憶體資源來換取從硬碟讀取資料時的速度的,有了這塊快取,系統能從硬碟預讀所需的資料,減少系統等待的時間。如果你的記憶體很大,比如5,6百m,那麼你除了可以採取上面說的關閉頁面檔案的方法外,還可以起用打的系統快取。做法如下,進入登錄檔編輯器: hkey_local_machine\system\currentcontrolset\controlsession manager \memory management,找到largesystemcache(啟用大的系統快取),將它的值設為1就可以了。

這樣設定了後,systemcache從4m增加到8m,再win2000和winxp中,這個值是動態的,如果記憶體不足,systemcache佔據的空間可以自動相應調整。

2)處理器從記憶體讀取資料的快取是什麼呢?是二級資料高階快取(緩衝),同樣它也要在記憶體中佔乙個空間,所以最好是有了大記憶體之後再設定這個值。也需再登錄檔裡設定,方法如下:進入 hkey_local_machine\system\currentcontrolset\controlsession manager \memory management ,找到 secondleveldatacache,預設為256,大記憶體設為512。

好了經過了上面的介紹,我想對朋友們來說最重要收穫的是加深了對快取和作業系統的認識,至於優化的方法,我得承認一般的朋友是用不著去做的,當然「玩」一下也是很有意思的。

快取和記憶體的理解

快取可以認為是記憶體的一部分,但是也不能簡單地這樣認為 快取是為了解決cpu速度和記憶體速度的速度差異問題 1 因為快取只是記憶體中少部分資料的複製品,所以cpu到快取中尋找資料時,也會出現找不到的情況 因為這些資料沒有從記憶體複製到快取中去 這時cpu還是會到記憶體中去找資料,這樣系統的速度就慢下...

對nginx和apache的全面了解

1 nginx相對於apache的優點 輕量級,同樣是web 服務,比apache 占用更少的記憶體及資源 抗併發,nginx 處理請求是非同步非阻塞的,而apache 則是阻塞型的,在高併發下nginx 能保持低資源低消耗高效能 高度模組化的設計,編寫模組相對簡單 社群活躍,各種高效能模組出品迅速...

UIIC的全面理解

uicc universal integrated circuit card 通用積體電路卡是定義了物理特性的智慧卡的總稱。作為3g使用者終端的乙個重要的 可移動的組成部分,uicc主要用於儲存使用者資訊 鑑權金鑰 短消 付費方式等資訊。在3g使用者終端的入網測試中,要求滿足uicc的一致性測試要求...