1. 程式人生 > >作業系統-----快取和記憶體

作業系統-----快取和記憶體

快取記憶體(cache)

由於CPU的讀取速度比記憶體的讀取速度快,如果持續在CPU和記憶體之間一直來回不停的交換的話,那麼CPU的運轉週期就會出現了很大的浪費,所以出現了快取記憶體,提供快取的目的一般是為了讓資料訪問的速度適應CPU的處理速度,一般是使用硬體實現的指令預測與資料預取技術----儘可能的將要使用的資料預先從記憶體中取到快取中。

如今快取的概念已經擴充,不僅是CPU和主記憶體之間有Cache,而且在記憶體和磁碟之間也有Cache,乃至在硬碟與網路之間也有某種意義上的Cache--稱為Internet臨時資料夾或網路內容快取等。凡是位於速度相差較大的兩種硬體之間,用於協調兩者資料傳輸速度差異的結構,均可稱為Cache。

地址映象與變換 
主條目:CPU快取#組相聯 
由於主存容量遠大於CPU快取的容量,因此兩者之間就必須按一定的規則對應起來。地址映象就是指按某種規則把主存塊裝入快取中。地址變換是指當按某種映象方式把主存塊裝入快取後,每次訪問CPU快取時,如何把主存的實體地址(Physical address)或虛擬地址(Virtual address)變換成CPU快取的地址,從而訪問其中的資料。

快取置換策略 
主條目:CPU快取#置換策略、分頁和快取檔案置換機制 

主存容量遠大於CPU快取,磁碟容量遠大於主存,因此無論是哪一層次的快取都面臨一個同樣的問題:當容量有限的快取的空閒空間全部用完後,又有新的內容需要新增進快取時,如何挑選並捨棄原有的部分內容,從而騰出空間放入這些新的內容。解決這個問題的演算法有幾種,如最久未使用演算法(LRU)、先進先出演算法(FIFO)、最近最少使用演算法(LFU)、非最近使用演算法(NMRU)等,這些演算法在不同層次的快取上執行時擁有不同的效率和代價,需根據具體場合選擇最合適的一種。

磁碟快取

磁碟快取

16MB緩衝區的硬碟 
磁碟快取(Disk Buffer)或磁碟快取(Disk Cache)實際上是將下載到的資料先保存於系統為軟體分配的記憶體空間中(這個記憶體空間被稱之為“記憶體池”),當儲存到記憶體池中的資料達到一個程度時,便將資料儲存到硬碟中。這樣可以減少實際的磁碟操作,有效的保護磁碟免於重複的讀寫操作而導致的損壞。

磁碟快取是為了減少CPU透過I/O讀取磁碟機的次數,提升磁碟I/O的效率,用一塊記憶體來儲存存取較頻繁的磁碟內容;因為記憶體的存取是電子動作,而磁碟的存取是I/O動作,感覺上磁碟I/O變得較為快速。

相同的技巧可用在寫入動作,我們先將欲寫入的內容放入記憶體中,等到系統有其它空閒的時間,再將這塊記憶體的資料寫入磁碟中。

大小 

現在的磁碟通常有32MB或64MB快取。舊的硬碟則有8MB或16MB。

相關推薦

作業系統-----快取記憶體

快取記憶體(cache)由於CPU的讀取速度比記憶體的讀取速度快,如果持續在CPU和記憶體之間一直來回不停的交換的話,那麼CPU的運轉週期就會出現了很大的浪費,所以出現了快取記憶體,提供快取的目的一般是為了讓資料訪問的速度適應CPU的處理速度,一般是使用硬體實現的指令預測與資

作業系統——CPU記憶體、掛起阻塞

CPU ≠ 記憶體 不妨把外存比作一個大倉庫,裡面有各種原材料,可以生產不同的東西。而CPU就是進行加工處理的車間。 一般來說,一個時間段,想要生產的東西也就那幾樣(是確定的,也是有限的,畢竟CPU也是有限的)。 產品確定了,原材料自然也是確定的。而當我們去取原

磁碟快取記憶體快取的區別

記憶體快取 快取記憶體(英語:cache,英語發音:/kæʃ/ kash [1][2][3],簡稱快取),其原始意義是指訪問速度比一般隨機存取儲存器(RAM)快的一種RAM,通常它不像系統主存那樣使用DRAM技術,而使用昂貴但較快速的SRAM技術。 原理

CentOS7(Linux)清理yum快取 釋放記憶體方法

清理yum快取 清理yum快取使用yum clean 命令,yum clean 的引數有headers, packages, metadata, dbcache, plugins, expire-cache, rpmdb, all yum clean h

CentOS7清理yum快取釋放記憶體方法

清理yum快取 清理yum快取使用yum clean 命令,yum clean 的引數有headers, packages, metadata, dbcache, plugins, expire-cache, rpmdb, all yum clean headers

作業系統課程中記憶體裡面堆棧的區別

http://www.cnblogs.com/lln7777/archive/2012/03/14/2396164.html首先需要宣告,這個連結裡面有比較詳細的描述,但是有點長,下面我簡單的描述一下,讓大家快速的瞭解這個知識。  我們在組合語言中或是在作業系統課堂上經常

Glide 快取策略 記憶體快取磁碟快取

本文主要介紹瞭如何配置和管理Glide中的快取,其中大部分內容都可以直接在官方Wiki中找到,這裡只是進行了整理和彙總。言歸正傳,Glide支援圖片的二級快取(並不是三級快取,因為從網路載入並不屬於快取),即記憶體快取和磁碟快取。 磁碟快取 一般的圖片快取指的就是磁碟快取

Android 之 三級快取記憶體!!!、本地、網路)及記憶體LruCache擴充套件 及原始碼分析--- 學習程式碼講解

一. 三級快取簡介 如上圖所示,目前App中UI介面經常會涉及到圖片,特別是像“今日關注”新聞這類app中,圖片運用的機率十分頻繁。當手機上需要顯示大量圖片類似listView、gridView控制元件並且使用者會上下滑動,即將瀏覽過的圖片又載入一遍,

Android快取機制Lrucache記憶體快取DiskLruCache磁碟快取

1.1 記憶體快取——LruCache原始碼分析     1.1.1 LRU     LRU,全稱Least Rencetly Used,即最近最少使用,是一種非常常用的置換演算法,也即淘汰最長時間未使用的物件。LRU在作業系統中的頁面置換演算法中廣泛使用,我們的記憶體或快取空間是有限的,當新加入一個物

quick lua 簡單快捷的紋理快取lua記憶體優化步驟總結。(續)

在之前對紋理快取和Lua虛擬機器記憶體排查優化後,在google後臺crash日誌裡,發現崩潰率還是保持在8%。 重新review程式碼後,發現是出現在兩個統計函式裡。隨著資料探勘技術的發展,現在流行在各個關鍵點加入統計事件,avg專案中也是如此,加入了後臺的統計和goog

Android內部儲存外部儲存以及快取清理記憶體清理!

android內部的儲存結構和路徑獲取方法:清除本地資料和快取:計算快取和記憶體資料的大小:計算快取大小以及刪除的方法:這文章裡面的檔案刪除方法有一些問題:沒有迴圈是資料夾的刪除方法;另外:File.list(); 獲取的是該資料夾下的所有子檔案的相對路徑;File.list

Android記憶體快取磁碟快取的實現

記憶體快取 Android自帶的LruCache實現了記憶體快取,LruCache內部主要使用LinkedHashMap的特性來實現,因為LinkedHashMap可支援FIFO和LRU訪問。 LinkedHashMap的特點 LinkedHashMap繼

程序與記憶體6-快取記憶體1(每CPU頁框快取記憶體記憶體快取記憶體

首先我提幾個主題: 磁碟快取記憶體、記憶體快取記憶體、硬體快取記憶體、每cpu頁框快取記憶體、頁快取記憶體、目錄項快取記憶體、索引節點快取記憶體、轉換後援緩衝器(TLB)、哈佛結構的快取記憶體、寫緩衝器、快取記憶體一致性、L1和L2等快取記憶體在驅動的使用。 上面這些就我

記憶體快取硬碟快取

由於工作中經常要處理圖片的載入快取的問題,所以需要理清系統快取的問題,否則經常會出現OOM問題。防止多圖OOM的解決技術是使用LruCache和DiskLruCache兩種技術。 一 LruCache

架構設計 | 快取管理模式,監控記憶體回收策略

本文原始碼:[GitHub·點這裡](https://github.com/cicadasmile/data-manage-parent) || [GitEE·點這裡](https://gitee.com/cicadasmile/data-manage-parent) # 一、快取設計 ## 1、快取的

讀懂作業系統之虛擬記憶體TLB與快取(cache)關係篇(四)

前言 前面我們講到通過TLB快取頁表加快地址翻譯,通過上一節快取原理的講解為本節做鋪墊引入TLB和快取的關係,同時我們來完整梳理下從CPU產生虛擬地址最終對映為實體地址獲取資料的整個過程是怎樣的,若有錯誤之處,還請批評指正。 TLB和快取序列訪問(Serial TLB & Cache Access)

Objective-C高階程式設計:iOS與OS X多執行緒記憶體管理

這篇文章主要給大家講解一下GCD的平時不太常用的API,以及文末會貼出GCD定時器的一個小例子。 需要學習的朋友可以通過網盤免費下載pdf版 (先點選普通下載-----再選擇普通使用者就能免費下載了)http://putpan.com/fs/cy1i1beebn7s0h4u9/ 1.G

[讀書筆記]iOS與OS X多執行緒記憶體管理 [GCD部分]

3.2 GCD的API 蘋果對GCD的說明:開發者要做的只是定義想執行的任務並追加到適當的Dispatch Queue中。 “Dispatch Queue”是執行處理的等待佇列。通過dispatch_async函式等API,在Block

JVM的垃圾收集機制記憶體分配策略

首先給大家看一下JVM的資料區模型。 上圖是JVM的資料區模型。但是在Hotspot JVM中,我們知道執行時常量是屬於方法區的,而方法區又屬於堆。對於棧,在hotspot中虛擬機器棧和本地棧是合二為一的。 這裡在順便說一說虛擬機器物件的結構,如下圖所示

Java框架-mybatis延遲載入、快取註解開發

1. 延遲載入 1.1 概念 在需要用到資料時才進行載入,不需要用到資料時就不載入資料。也稱作懶載入 好處:先從單表查詢,需要時再從關聯表去關聯查詢,大大提高資料庫效能 缺點:在大批量資料查詢時,由於查詢會耗時,可能導致使用者等待時間變長,影響使用者體驗