對緩衝區的理解

2021-09-10 09:46:01 字數 1242 閱讀 1567

緩衝區(buffer),它是記憶體空間的一部分。也就是說,在記憶體空間中預留了一定的儲存空間,這些儲存空間用來緩衝輸入或輸出的資料,這部分預留的空間就叫做緩衝區,顯然緩衝區是具有一定大小的。

緩衝區根據其對應的是輸入裝置還是輸出裝置,分為輸入緩衝區和輸出緩衝區。

我們為什麼要引入緩衝區呢?

高速裝置與低速裝置的不匹配,勢必會讓高速裝置花時間等待低速裝置,我們可以在這兩者之間設立乙個緩衝區。

緩衝區的作用:

1.可以解除兩者的制約關係,資料可以直接送往緩衝區,高速裝置不用再等待低速裝置,提高了計算機的效率。例如:我們使用印表機列印文件,由於印表機的列印速度相對較慢,我們先把文件輸出到印表機相應的緩衝區,印表機再自行逐步列印,這時我們的cpu可以處理別的事情。

2.可以減少資料的讀寫次數,如果每次資料只傳輸一點資料,就需要傳送很多次,這樣會浪費很多時間,因為開始讀寫與終止讀寫所需要的時間很長,如果將資料送往緩衝區,待緩衝區滿後再進行傳送會大大減少讀寫次數,這樣就可以節省很多時間。例如:我們想將資料寫入到磁碟中,不是立馬將資料寫到磁碟中,而是先輸入緩衝區中,當緩衝區滿了以後,再將資料寫入到磁碟中,這樣就可以減少磁碟的讀寫次數,不然磁碟很容易壞掉。

簡單來說,緩衝區就是一塊記憶體區,它用在輸入輸出裝置和cpu之間,用來儲存資料。它使得低速的輸入輸出裝置和高速的cpu能夠協調工作,避免低速的輸入輸出裝置占用cpu,解放出cpu,使其能夠高效率工作。

緩衝區 分為三種型別:全緩衝、行緩衝和不帶緩衝。

1、全緩衝

在這種情況下,當填滿標準i/o快取後才進行實際i/o操作。全緩衝的典型代表是對磁碟檔案的讀寫。

2、行緩衝

在這種情況下,當在輸入和輸出中遇到換行符時,執行真正的i/o操作。這時,我們輸入的字元先存放在緩衝區,等按下回車鍵換行時才進行實際的i/o操作。典型代表是鍵盤輸入資料。

3、不帶緩衝

也就是不進行緩衝,標準出錯情況stderr是典型代表,這使得出錯資訊可以直接盡快地顯示出來。

下列情況會引發緩衝區的重新整理:

緩衝區滿時;

關閉檔案。

可見,緩衝區滿或關閉檔案時都會重新整理緩衝區,進行真正的i/o操作。

大家要仔細理解緩衝區重新整理的意思,重新整理字面上的意思是用刷子刷,把原來舊的東西變新了,這裡就是改變的意思,例如像緩衝區溢位的時候,多餘出來的資料會直接將之前的資料覆蓋,這樣緩衝區裡的資料就發生了改變。

比如在linux下,操作命令行就屬於常見的行緩衝模式 輸入一行命令例如ls,命令ls就會進入到緩衝區內,不輸入回車的話,什麼也不會發生,當輸入回車就會執行真正的io操作

緩衝區理解

在講緩衝區之前,我們要先介紹下記憶體的作用。記憶體是計算機中重要的部件之一,它是與cpu進行溝通的橋梁。計算機中所有程式的執行都是在記憶體中進行的,其作用是用於暫時存放cpu中的運算資料,以及與硬碟等外部儲存器交換的資料。也就是說 只要計算機在執行中,cpu就會把需要運算的資料調到記憶體中進行運算,...

緩衝區的理解

這裡所說的緩衝區指的是為標準輸入與標準輸出設定的緩衝區,為什麼要設定乙個標準輸入緩衝區主要是從效率上來考慮的,如果不設緩衝區會降低cpu的效率,因為它總是會在使用者輸入之後馬上會去執行某些指令,導致多次io開銷!同樣設定乙個標準輸出緩衝區是為了解決列印的問題!總之這樣做的目的就是為了效率!比如如果沒...

C 程式設計對緩衝區的理解

什麼是緩衝區 緩衝區又稱為快取,它是記憶體空間的一部分。也就是說,在記憶體空間中預留了一定的儲存空間,這些儲存空間用來緩衝輸入或輸出的資料,這部分預留的空間就叫做緩衝區。緩衝區根據其對應的是輸入裝置還是輸出裝置,分為輸入緩衝區和輸出緩衝區。為什麼要引入緩衝區 我們為什麼要引入緩衝區呢?比如我們從磁碟...