當前位置:首頁 » 硬碟大全 » 內存緩存沖區與緩存的關系
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

內存緩存沖區與緩存的關系

發布時間: 2023-03-22 01:10:15

1. 內存和緩存有什麼區別和聯系請舉例具體形象比喻兩者的關系!

一般來說緩存都是集成到CPU裡面的。

眾人:「這就是你找不到緩存的圖片理由」?

如果按存取數據的速度相比,緩存是比內存快非常多的,我們電腦的操作系統會為應用程序分配好內存,但是由於內存的存取效率比較低下(相對於CPU的處理速度而言),緩存就是為了解決高速CPU對慢速內存的存取。

還有一個概念,就是一級緩存和二級緩存。

在這之前,先說一下RAM(暫時的、動態的存儲數據,具體點就是我們通常說的內存條)和ROM(永久的、固定的存儲數據,通俗講就是我們說的光碟、dvd、手機內存卡等)。

RAM是掉電的,掉電的意思就是設備關機後RAM內存儲的數據全部清空,ROM內的數據依然存在。

RAM有兩種,靜態和動態,靜態RAM比動態RAM快。

靜態RAM集成度比較低,存儲相同的數據,靜態RAM比動態RAM所花費的體積大約為六倍。

同樣的容量,靜態RAM的價格是動態RAM的四倍。

我們要知道一個道理,緩存作為靜態RAM都是比較昂貴的,所以不要幻想什麼加大緩存什麼的。

但是我們有一個折中的辦法,就是加大高速動態RAM作為緩存,比常規動態RAM要快,當然速度和靜態RAM還是有一定的差距(沒辦法,都是錢鬧的/(ㄒoㄒ)/~~)。

RAM中存儲的都是設備使用頻率比較高的數據和指令,它們都是從內存中復制而來的,這是由一套演算法所維護的,與此同時,RAM內存儲的東西並不是固定的,會跟著時間和使用習慣的改變而改變,一句話,內部保持的數據都是由演算法所決定的。CPU在工作時,先去找靜態RAM(一級緩存),然後再去找後加的高速動態RAM(二級緩存),最後內存。

2. 緩存和內存有什麼區別

緩存和內存是計算機不同的組成部件。

3. 內存的一個區域可以同時用於緩存和緩沖嗎

緩沖區(Buffer)定義

緩沖區(Buffer),它是內存空間的一部分。也就是說,在內存空間中預留了一定的存儲空間,這些存儲空間用來緩沖輸入或輸出的數據,這部分預留的空間就叫做緩沖區,顯然緩沖區是具有一定大小的。

有時候,從鍵盤輸入的內容,或者將要輸出到顯示器上的內容,會暫時進入緩沖區,待時機成熟,再一股腦將緩沖區中的所有內容「倒出」,我們才能看到變數的值被刷新,或者屏幕產生變化。

有時候,用戶希望得到最及時的反饋,輸入輸出的內容就不能進入緩沖區。

為什麼要引入緩沖區?

首先,緩沖區可以使低速的輸入輸出設備和高速運行的程序能夠協調工作。一般來說程序在CPU上運行,其速度必定遠超過一般硬體運行速度。例如,硬碟的速度要遠低於 CPU,它們之間有好幾個數量級的差距,當向硬碟寫入數據時,程序需要等待,不能做任何事情,就好像卡頓了一樣,用戶體驗非常差。計算機上絕鬧殲大多數應用程序都需要和硬體打交道,例如讀寫硬碟、向顯示器輸出、從鍵盤輸入等,如果每個程序都等待硬體,那麼整台計算機也將變得卡頓。但是有了緩沖區,就可以將數據先放入緩沖區中(內存的讀寫速度也遠高於硬碟),然後程序可以繼續往下執行,等所有的數據都准備好了,再將緩沖區中的所有數據一次性地寫入硬碟,這樣程序就減少了等待的次數,變得流暢起來。

其次,緩沖區可以有效減少硬體設備的讀寫次數。如果每次輸入輸出操作只傳輸少量數據,就需要傳送很多次,這樣會浪費很多時間,因為開始讀寫與終止讀寫所需要的時間很長,如果將數據送往緩沖區,待緩沖區滿後再進行傳送會大大減少讀寫次數,這樣就可以節省很多時間。例如,我們想將數據寫入到磁碟中,不是立馬將數據寫到磁碟中,而是先輸入緩沖區中,當緩沖區滿了以後,再將數據寫入到磁碟中,這樣就可以減少磁碟的讀寫次數,不然磁碟很容易壞掉。

簡單來說,緩沖區就是一塊內存區,它用在輸入輸出設備和CPU之間,用來存儲數據。它使得低速的輸入輸出設備和高速的CPU能夠協調工作,避免低速的輸入輸出設備佔用CPU,解放出CPU,使其能夠高效率工作,同時減少操作硬體的次數。

緩沖區的類型

緩沖區分為三種類型:全緩沖、行緩沖和不帶緩沖。

1、全緩沖在這種情況下,當填滿標准I/O緩存後才進行實際I/O操作,即一定大小的緩沖區填滿後。全緩沖的典型代表是對磁碟文件的讀寫。

2、行緩沖在這種情況下,當在輸入和輸出中遇到換行符時,執行真正的I/O操作。這時,我們輸入的字元先存放在緩沖區,等按下回車鍵換行時才進行實際的I/O操作。行緩沖的典型代表就是標准輸入設備(也即鍵盤)和標准輸出設備(也即顯示器)。

比如:對以下語句進行執行,

執行時將會看到在Windows 平台下,會先輸出 key0 語句,過5s後才會輸出 key1 語句。這好像與理論矛盾,其實這只是因為在Windows 平台下,輸出設備認為是不帶緩沖區的;在Linux 和 Mac OS 平台下,輸出設備帶有行緩沖區。這時就會等5s後 key0key1 一起輸出。

而對於輸入設備,沒有緩沖區將導致非常奇怪的行為,因此Windows、Linux、Mac OS 在實現時都給輸入設備帶上了行緩沖,所以 scanf()、getchar()、gets() 等輸入函數在每個平台下的表現都一致。

當然,考慮到有些特殊情況希望輸入不帶有行緩沖,這時有Windows 下特有的 getche() 和 getch() 函數滿足這種特殊需求,它們都不帶緩沖區。

3、不帶緩沖也就是不進行緩沖處理,例如C語言中的getch和getche即是如此。

緩沖區的刷新條件

不管是行緩沖還是全緩沖,緩沖區滿時會自動刷新;行緩沖遇到換行符n時會刷新;關閉文件時會刷新緩沖區;程序關閉時一般也會刷新緩沖區,這個是由標准庫來保障的;

當緩沖區刷新時,就會進行真正的I/O操作。

緩存(Cache)定義

廣義的液早沖cache包含很多含義:一、CPU的Cache,它中文名稱是高速緩沖存儲器,讀寫速度很快,幾乎與CPU一樣。由於CPU的運算速度太快,內存的數據存取速度無法跟上CPU的速度,所以在CPU與內存間設置了Cache為CPU的數據快取區。當計算機執行程序時,數據與地址管理部件會預測可能要用到的數據和指令,並將這些數據和睜冊指令預先從內存中讀出送到Cache。一旦需要時,先檢查Cache,若有就從Cache中讀取,若無再訪問內存,現在的CPU還有一級Cache,二級Cache。簡單來說,Cache就是用來解決CPU與內存之間速度不匹配的問題,避免內存與輔助內存頻繁存取數據,這樣就提高了系統的執行效率。

二、磁碟也有Cache,硬碟的Cache作用就類似於CPU的Cache,它解決了匯流排介面的高速需求和讀寫硬碟的矛盾以及對某些扇區的反復讀取。

三、瀏覽器緩存(Browser Caching)是為了節約網路的資源加速瀏覽,瀏覽器在用戶磁碟上對最近請求過的文檔進行存儲,當訪問者再次請求這個頁面時,瀏覽器就可以從本地磁碟顯示文檔,這樣就可以加速頁面的閱覽,並且可以減少伺服器的壓力。這個過程與下載非常類似,不過下載是用戶的主動過程,並且下載的數據一般是長時間保存,游覽器的緩存的數據只是短時間保存,可以人為的清空。

同樣Cache也有大小,例如現在市面上購買的CPU的cache越大,級數越多,CPU的訪問速度越快。cache在很多方面都有應用,就不一一列舉了。

緩存(Cache)與緩沖區(Buffer)的主要區別

Buffer的核心作用是用來緩沖,緩和沖擊。比如你每秒要寫100次硬碟,對系統沖擊很大,浪費了大量時間在忙著處理開始寫和結束寫這兩件事嘛。用個buffer暫存起來,變成每10秒寫一次硬碟,對系統的沖擊就很小,寫入效率就高了,並極大緩和了沖擊。

Cache的核心作用是加快取用的速度。比如你一個很復雜的計算做完了,下次還要用結果,就把結果放手邊一個好拿的地方存著,下次不用再算了。加快了數據取用的速度。

簡單來說,就是Buffer偏重於輸出操作,而Cache偏重於輸入操作。

4. 電腦二級緩存與內存之間是怎樣的關系

他們是兄弟關系.但是有親疏,內存是大哥離CPU遠,緩存小小小弟,抱在CPU的懷里.CPU處理東西是從緩存讀取,緩存從內存中讀取

1G的二級緩存出了嗎?神雞!

5. 緩沖區和緩存有什麼區別

緩沖區溢出是指當計算機程序向緩沖區內填充的數據位數超過了緩沖區本身的容量。溢出的數據覆蓋在合法數據上。理想情況是,程序檢查數據長度並且不允許輸入超過緩沖區長度的字元串。但是絕大多數程序都會假設數據長度總是與所分配的存儲空間相匹配,這就為緩沖區溢出埋下隱患。操作系統所使用的緩沖區又被稱為堆棧,在各個操作進程之間,指令被臨時存儲在堆棧當中,堆棧也會出現緩沖區溢出。

當一個超長的數據進入到緩沖區時,超出部分就會被寫入其他緩沖區,其他緩沖區存放的可能是數據、下一條指令的指針,或者是其他程序的輸出內容,這些內容都被覆蓋或者破壞掉。可見一小部分數據或者一套指令的溢出就可能導致一個程序或者操作系統崩潰。

緩存(Cache memory)是硬碟控制器上的一塊內存晶元,具有極快的存取速度,它是硬碟內部存儲和外界介面之間的緩沖器。由於硬碟的內部數據傳輸速度和外界介面傳輸速度不同,緩存在其中起到一個緩沖的作用。緩存的大小與速度是直接關繫到硬碟的傳輸速度的重要因素,能夠大幅度地提高硬碟整體性能。當硬碟存取零碎數據時需要不斷地在硬碟與內存之間交換數據,如果有大緩存,則可以將那些零碎數據暫存在緩存中,減小外系統的負荷,也提高了數據的傳輸速度。

硬碟的緩存主要起三種作用:一是預讀取。當硬碟受到CPU指令控制開始讀取數據時,硬碟上的控制晶元會控制磁頭把正在讀取的簇的下一個或者幾個簇中的數據讀到緩存中(由於硬碟上數據存儲時是比較連續的,所以讀取命中率較高),當需要讀取下一個或者幾個簇中的數據的時候,硬碟則不需要再次讀取數據,直接把緩存中的數據傳輸到內存中就可以了,由於緩存的速度遠遠高於磁頭讀寫的速度,所以能夠達到明顯改善性能的目的;二是對寫入動作進行緩存。當硬碟接到寫入數據的指令之後,並不會馬上將數據寫入到碟片上,而是先暫時存儲在緩存里,然後發送一個「數據已寫入」的信號給系統,這時系統就會認為數據已經寫入,並繼續執行下面的工作,而硬碟則在空閑(不進行讀取或寫入的時候)時再將緩存中的數據寫入到碟片上。雖然對於寫入數據的性能有一定提升,但也不可避免地帶來了安全隱患——如果數據還在緩存里的時候突然掉電,那麼這些數據就會丟失。對於這個問題,硬碟廠商們自然也有解決辦法:掉電時,磁頭會藉助慣性將緩存中的數據寫入零磁軌以外的暫存區域,等到下次啟動時再將這些數據寫入目的地;第三個作用就是臨時存儲最近訪問過的數據。有時候,某些數據是會經常需要訪問的,硬碟內部的緩存會將讀取比較頻繁的一些數據存儲在緩存中,再次讀取時就可以直接從緩存中直接傳輸。

緩存容量的大小不同品牌、不同型號的產品各不相同,早期的硬碟緩存基本都很小,只有幾百KB,已無法滿足用戶的需求。2MB和8MB緩存是現今主流硬碟所採用,而在伺服器或特殊應用領域中還有緩存容量更大的產品,甚至達到了16MB、64MB等。

大容量的緩存雖然可以在硬碟進行讀寫工作狀態下,讓更多的數據存儲在緩存中,以提高硬碟的訪問速度,但並不意味著緩存越大就越出眾。緩存的應用存在一個演算法的問題,即便緩存容量很大,而沒有一個高效率的演算法,那將導致應用中緩存數據的命中率偏低,無法有效發揮出大容量緩存的優勢。演算法是和緩存容量相輔相成,大容量的緩存需要更為有效率的演算法,否則性能會大大折扣,從技術角度上說,高容量緩存的演算法是直接影響到硬碟性能發揮的重要因素。更大容量緩存是未來硬碟發展的必然趨勢。

6. 內存和緩存的區別和聯系

緩存是指臨時文件交換區,電腦把最常用的文件從存儲器里提出來臨時放在緩存里,就像把工具和材料搬上工作台一樣,這樣會比用時現去倉庫取更方便。因為緩存往往使用的是RAM(斷電即掉的非永久儲存),所以在忙完後還是會把文件送到硬碟等存儲器里永久存儲。電腦里最大的緩存就是內存條了,最快的是CPU上鑲的L1和L2緩存,顯卡的顯存是給GPU用的緩存,硬碟上也有16M或者32M的緩存。千萬不能把緩存理解成一個東西,它是一種處理方式的統稱!

7. Linux中的緩沖區和緩存內存有什麼區別

緩沖區與特定的塊設備相關聯,包括文件系統元數據的緩存以及頁面跟蹤。緩存只包含已停放的文件數據。
也就是說,緩沖區記住目錄中的內容、文件許可權是什麼,並跟蹤從某個塊設備中寫入或讀取到哪些內存。
緩存只包含文件本身的內容。

8. 緩存與緩沖的區別與聯系 有什麼詳細的舉例

相信大山雀家現在都使用過手機和電腦了,在現在這個互聯網已經普及的時代,這兩種電子產品真的十分的常見了。那麼大家有沒有緩存過視頻呢?有沒有在看視頻的時候進行過緩沖呢?下面我們來了解一下關於緩存與緩沖的區別與聯系。

緩存是指把常用數據存儲到可以快速獲取的區域,以備重復利用,一般叫做cache. 緩存能提高效率緩沖是指在數據流轉過程中,不同層次速度不一致時,利用緩沖區來緩解上下層之間速率問題,一般叫做buffer. 緩沖能提高速度buffer(緩沖)是為了提高內存和硬碟或其他I/0設備之間的數據交換的速度而設計的。cache(緩存)是為了提高cpu和內存之間的數據交換速度而設計。cpu在執行程序所用的指令和讀數據都是針對內存的也就是從內存中取得的。由於內存讀寫速度慢,為了提高cpu和內存之間數據交換的速度,在cpu和內存之間增加了cache,它的速度比內存快,但是造價高,又由於在cpu內不能集成太多集成電路,所以一般cache比較哪念小。

以後intel等公司為了進一步提高速度,增加了二級cache,甚至三級cache,它是根據程序的局部性原理而設計的就是cpu執行的指令和訪問的數據往往在集中的某一塊,所以把這塊內容放入cache後,cpu就不用在訪問內存了,這就提高了訪問速度。當然若cache中沒有cpu所需要的內容,還是要訪問內存的。 緩沖buffers是根據磁碟的讀寫設計的,把分散的寫操作集中進行,減少磁碟碎片和硬碟的反復尋道,從而提高系統性能。linux有一個守護進程定期清空緩沖內容,即寫入磁碟也可以通過sync命令手動清空緩沖。

舉個例子吧,我這里有一個ext2的U盤,我往裡面cp一個3M的MP3,但U盤的燈沒有跳動?過了一會兒,或者手動輸入sync,U盤的燈就跳動起來了。卸載設備時會清空緩沖,所以有些時候卸載一個設備時要等上幾秒鍾。修改/etc/sysctl.conf中的vm.swappiness右邊的數字可以在下次開機時調節swap使用策略。該數字范圍是0-100數字越大越傾向於使用swap。默認為60,可以改一下試試。--兩者都是RAM中的數據。簡單來buffer是即將要被寫入磁碟的,而cache是被從磁碟中讀出來的。

buffer是由各種進程分配的,被用在如輸入隊列等方面。一個簡單的例子如某個進程要求有多個欄位讀入,在所有欄位被讀入完整之前,進程把先前讀入的欄位放在buffer中保存。cache經常被用在磁碟的I/O請求上,如果有多個進程都要訪問某個文件,於是該文件便被做成cache以方李唯困便下次被訪問,這樣可提高系統性能。

9. 什麼是緩存 它與內存 二級緩存有什麼關系

二級緩存也是緩存的一種
CPU緩存(Cache Memory)位於CPU與內存之間的臨時存儲器,它的容量比內存小但交換速度快。在緩存中的數據是內存中的一小部分,但這一小部分是短時間內CPU即將訪問的,當CPU調用大量數據時,就可避開內存直接從緩存中調用,從而加快讀取速度。由此可見,在CPU中加入緩存是一種高效的解決方案,這樣整個內存儲器(緩存+內存)就變成了既有緩存的高速度,又有內存的大容量的存儲系統了。緩存對CPU的性能影響很大,主要是因為CPU的數據交換順序和CPU與緩存間的帶寬引起的。 緩存是為了解決CPU速度和內存速度的速度差異問題。內存中被CPU訪問最頻繁的數據和指令被復制入CPU中的緩存,這樣CPU就可以不經常到象「蝸牛」一樣慢的內存中去取數據了,CPU只要到緩存中去取就行了,而緩存的速度要比內存快很多。 這里要特別指出的是: 1.因為緩存只是內存中少部分數據的復製品,所以CPU到緩存中尋找數據時,也會出現找不到的情況(因為這些數據沒有從內存復制到緩存中去),這時CPU還是會到內存中去找數據,這樣系統的速度就慢下來了,不過CPU會把這些數據復制到緩存中去,以便下一次不要再到內存中去取。 2.因為隨著時間的變化,被訪問得最頻繁的數據不是一成不變的,也就是說,剛才還不頻繁的數據,此時已經需要被頻繁的訪問,剛才還是最頻繁的數據,現在又不頻繁了,所以說緩存中的數據要經常按照一定的演算法來更換,這樣才能保證緩存中的數據是被訪問最頻繁的。緩存的工作原理 緩存的工作原理是當CPU要讀取一個數據時,首先從緩存中查找,如果找到就立即讀取並送給CPU處理;如果沒有找到,就用相對慢的速度從內存中讀取並送給CPU處理,同時把這個數據所在的數據塊調入緩存中,可以使得以後對整塊數據的讀取都從緩存中進行,不必再調用內存。 正是這樣的讀取機制使CPU讀取緩存的命中率非常高(大多數CPU可達90%左右),也就是說CPU下一次要讀取的數據90%都在緩存中,只有大約10%需要從內存讀取。這大大節省了CPU直接讀取內存的時間,也使CPU讀取數據時基本無需等待。總的來說,CPU讀取數據的順序是先緩存後內存。 一級緩存和二級緩存 為了分清這兩個概念,我們先了解一下RAM 。RAM和ROM相對的,RAM是掉電以後,其中的信息就消失那一種,ROM在掉電以後信息也不會消失那一種。 RAM又分兩種,一種是靜態RAM,SRAM;一種是動態RAM,DRAM。前者的存儲速度要比後者快得多,我們現在使用的內存一般都是動態RAM。 有的菜鳥就說了,為了增加系統的速度,把緩存擴大不就行了嗎,擴大的越大,緩存的數據越多,系統不就越快了嗎?緩存通常都是靜態RAM,速度是非常的快, 但是靜態RAM集成度低(存儲相同的數據,靜態RAM的體積是動態RAM的6倍), 價格高(同容量的靜態RAM是動態RAM的四倍), 由此可見,擴大靜態RAM作為緩存是一個非常愚蠢的行為, 但是為了提高系統的性能和速度,我們必須要擴大緩存, 這樣就有了一個折中的方法,不擴大原來的靜態RAM緩存,而是增加一些高速動態RAM做為緩存, 這些高速動態RAM速度要比常規動態RAM快,但比原來的靜態RAM緩存慢, 我們把原來的靜態ram緩存叫一級緩存,而把後來增加的動態RAM叫二級緩存。 一級緩存和二級緩存中的內容都是內存中訪問頻率高的數據的復製品(映射),它們的存在都是為了減少高速CPU對慢速內存的訪問。 通常CPU找數據或指令的順序是:先到一級緩存中找,找不到再到二級緩存中找,如果還找不到就只有到內存中找了。 緩存的技術發展 最早先的CPU緩存是個整體的,而且容量很低,英特爾公司從Pentium時代開始把緩存進行了分類。當時集成在CPU內核中的緩存已不足以滿足CPU的需求,而製造工藝上的限制又不能大幅度提高緩存的容量。因此出現了集成在與CPU同一塊電路板上或主板上的緩存,此時就把 CPU內核集成的緩存稱為一級緩存,而外部的稱為二級緩存。一級緩存中還分數據緩存(Data Cache,D-Cache)和指令緩存(Instruction Cache,I-Cache)。二者分別用來存放數據和執行這些數據的指令,而且兩者可以同時被CPU訪問,減少了爭用Cache所造成的沖突,提高了處理器效能。英特爾公司在推出Pentium 4處理器時,用新增的一種一級追蹤緩存替代指令緩存,容量為12KμOps,表示能存儲12K條微指令。 隨著CPU製造工藝的發展,二級緩存也能輕易的集成在CPU內核中,容量也在逐年提升。現在再用集成在CPU內部與否來定義一、二級緩存,已不確切。而且隨著二級緩存被集成入CPU內核中,以往二級緩存與CPU大差距分頻的情況也被改變,此時其以相同於主頻的速度工作,可以為CPU提供更高的傳輸速度。 二級緩存是CPU性能表現的關鍵之一,在CPU核心不變化的情況下,增加二級緩存容量能使性能大幅度提高。而同一核心的CPU高低端之分往往也是在二級緩存上有差異,由此可見二級緩存對於CPU的重要性。 CPU在緩存中找到有用的數據被稱為命中,當緩存中沒有CPU所需的數據時(這時稱為未命中),CPU才訪問內存。從理論上講,在一顆擁有二級緩存的CPU中,讀取一級緩存的命中率為80%。也就是說CPU一級緩存中找到的有用數據占數據總量的80%,剩下的20%從二級緩存中讀取。由於不能准確預測將要執行的數據,讀取二級緩存的命中率也在80%左右(從二級緩存讀到有用的數據占總數據的16%)。那麼還有的數據就不得不從內存調用,但這已經是一個相當小的比例了。目前的較高端的CPU中,還會帶有三級緩存,它是為讀取二級緩存後未命中的數據設計的—種緩存,在擁有三級緩存的CPU中,只有約5%的數據需要從內存中調用,這進一步提高了CPU的效率。 為了保證CPU訪問時有較高的命中率,緩存中的內容應該按一定的演算法替換。一種較常用的演算法是「最近最少使用演算法」(LRU演算法),它是將最近一段時間內最少被訪問過的行淘汰出局。因此需要為每行設置一個計數器,LRU演算法是把命中行的計數器清零,其他各行計數器加1。當需要替換時淘汰行計數器計數值最大的數據行出局。這是一種高效、科學的演算法,其計數器清零過程可以把一些頻繁調用後再不需要的數據淘汰出緩存,提高緩存的利用率。 CPU產品中,一級緩存的容量基本在4KB到64KB之間,二級緩存的容量則分為128KB、256KB、512KB、1MB、2MB、4MB等。一級緩存容量各產品之間相差不大,而二級緩存容量則是提高CPU性能的關鍵。二級緩存容量的提升是由CPU製造工藝所決定的,容量增大必然導致CPU內部晶體管數的增加,要在有限的CPU面積上集成更大的緩存,對製造工藝的要求也就越高。 現在主流的CPU二級緩存都在2MB左右,其中英特爾公司07年相繼推出了台式機用的4MB、6MB二級緩存的高性能CPU,不過價格也是相對比較高的,對於對配置要求不是太高的朋友,一般的2MB二級緩存的雙核CPU基本也可以滿足日常上網需要了。

10. 計算機裡面的緩沖和緩存是什麼意思

緩沖器相當於一個寄存器,暫時保存數據。緩沖區是內存中存放數據的地方。在程序試圖將數據放到機器內存中的某一個位 置的時候,因為沒有足夠的空間就會發生緩沖區溢出。而人為的溢出則是有一定企圖的,攻擊者寫一個超過緩沖區長度的字元串,然後植入到緩沖區,而再向一個有 限空間的緩沖區中植入超長的字元串可能會出現兩個結果,一是過長的字元串覆蓋了相鄰的存儲單元,引起程序運行失敗,嚴重的可導致系統崩潰;另有一個結果就 是利用這種漏洞可以執行任意指令,甚至可以取得系統root特級許可權。大多造成緩沖區溢出的原因是程序中沒有仔細檢查用戶輸入參數而造成的。

緩沖區是程序運行的時候機器內存中的一個連續塊,它保存了給定類型的數據,隨著動態分配變數會出現問題。大多時為了不佔用太多的內存,一個有動態分配變數 的程序在程序運行時才決定給它們分配多少內存。這樣想下去的話,如果說要給程序在動態分配緩沖區放入超長的數據,它就會溢出了。一個緩沖區溢出程序使用這 個溢出的數據將匯編語言代碼放到機器的內存里,通常是產生root許可權的地方,這就不是什麼好現象了。僅僅就單個的緩沖區溢出惹眼,它並不是最大的問題根 本所在。但如果溢出送到能夠以root許可權運行命令的區域,一旦運行這些命令,那可就等於把機器拱手相讓了。

緩存:它事實上相當於一個臨時倉庫。每次打開一個網頁,IE會自動創建一份該網頁文字和圖像的緩存文件(一個臨時副本)。當再次打開該頁時,IE會檢查網 站伺服器上該頁的變化。如果頁面變化了,IE從網路上重新下載新的網頁。如果該頁面沒有變化,IE就從內存或硬碟上使用緩存中的臨時復本來顯示它。

IE會在緩存中保留網頁到硬碟,直到各自的緩存占滿空間;IE則根據網頁的時間和空間來向下取捨。這樣設計的目的是為了更快地裝載頁面。

緩存不僅可以用來加快網頁載入速度,而且當需要查看以前看過的網頁時,還可以無需驅動「小貓」,只需單擊IE上的「文件→離線工作」菜單命令,然後單擊工具欄上的「歷史」按鈕,即可方便地進行瀏覽。

既然IE緩存有這個妙處,那自然應該共享它了。除了直接復制緩存文件的方法外,還有大搬家—更改IE緩存的保存路徑法: 首先打開IE瀏覽器,單擊「工具→Internet選項」菜單命令,打開「Internet選項」對話框。在「常規」選項卡中單擊「Internet臨時 文件」部分的「設置」按鈕,打開「設置」對話框,單擊「移動文件夾」按鈕,在打開的「瀏覽文件夾」對話框里定位到另一個分區下的某個路徑,然後單擊「確定 」按鈕即可