官术网_书友最值得收藏!

1.1 什么是緩存?

緩存:存儲在計算機上的一個原始數據復制集,以便于訪問。

——維基百科

緩存是系統快速響應中的一種關鍵技術,是一組被保存起來以備將來使用的東西,介于應用開發和系統開發之間,是產品經理們經常顧及不到的地方,也是技術架構設計中的非功能性約束。

因為“緩存為王”,很多技術都打著緩存的旗號,所以談起緩存往往似是而非。

例如,CPU的緩存,是指位于CPU與內存之間的臨時存儲器,容量比內存小得多但交換速度卻比內存要快得多。由于CPU的運算速度要比內存讀寫速度快很多,CPU總有等待數據的時候,而高速緩存則解決了CPU運算速度與內存讀寫速度不匹配的矛盾。緩存中的數據是內存中的一部分,且這部分是短時間內CPU即將訪問的,當CPU調用數據時,先從緩存中調用,從而加快讀取速度。而且,CPU是有多級緩存的,有時候也稱為幾級流水。

再例如,Linux操作系統中的文件緩存如圖1-1所示。

圖1-1 Linux文件系統中的緩存

我們平時在編程的時候,接觸到的都是虛擬地址而不是真實的物理地址,這是虛擬內存的主要功能之一。假如請求一個頁的地址,需要將頁的虛擬地址轉化為頁的物理地址。頁表(page table)和內存管理單元(MMU)就負責將頁的虛擬地址映射到物理地址。頁表負責記錄哪些是物理頁,哪些是虛擬頁,以及這些頁的頁表條目(PTE)。而MMU是一個物理硬件,MMU負責進行虛擬地址到物理地址的翻譯,翻譯過程中需要從頁表獲取頁的PTE, MMU也會使用翻譯后備緩存器(TLB)的緩存頁號。可見,在操作系統層面都有緩存。

因此,緩存一詞與語境有著緊密的關系,緩存在不同場景有著不同的意義,采用的技術手段也是不同的。不涉及操作系統和硬件的緩存,根據在軟件系統中所處位置的不同,緩存大體可以分為三類:

? 客戶端緩存;

? 服務端緩存;

? 網絡中的緩存。

根據規模和部署方式緩存也可以分為:

? 單體緩存;

? 緩存集群;

? 分布式緩存。

可見,在軟件系統中緩存幾乎無處不在,這或許就是緩存為王的一個原因吧。

主站蜘蛛池模板: 清水河县| 陵川县| 沙田区| 大余县| 阿拉善盟| 仙居县| 鹤峰县| 桂东县| 龙门县| 菏泽市| 伊宁县| 科尔| 蓝田县| 红河县| 井研县| 浠水县| 淮北市| 大安市| 黄浦区| 林甸县| 通道| 田林县| 光泽县| 成都市| 商都县| 喀什市| 区。| 崇义县| 陆河县| 克拉玛依市| 新竹县| 吴桥县| 启东市| 从江县| 高碑店市| 蒙城县| 丘北县| 阿拉善盟| 杨浦区| 新乡市| 长岭县|