-
緩衝技術
鎖定
- 中文名
- 緩衝技術
- 外文名
- buffering technique
- 所屬領域
- 計算機
- 目 的
- 協調吞吐速度相差很大的設備之間數據傳送
緩衝技術簡要介紹
通常CPU的速度要比I/O設備的速度快得多得多,所以可以設置緩衝區,對於從CPU來的數據,先放在緩衝區中,然後設備可以慢慢地從緩衝區中讀出數據。常見的緩衝技術有:單緩衝,雙緩衝,循環緩衝,緩衝池。其中,廣泛流行使用公用緩衝池。
緩衝技術引入
在操作系統中,引入緩衝的主要原因,可歸結為以下幾點:
1.改善CPU與I/O設備間速度不匹配的矛盾
例如一個程序,它時而進行長時間的計算而沒有輸出,時而又陣發性把輸出送到打印機。由於打印機的速度跟不上CPU,而使得CPU長時間的等待。如果設置了緩衝區,程序輸出的數據先送到緩衝區暫存,然後由打印機慢慢地輸出。這時,CPU不必等待,可以繼續執行程序。實現了CPU與I/O設備之間的並行工作。事實上,凡在數據的到達速率與其離去速率不同的地方,都可設置緩衝,以緩和它們之間速度不匹配的矛盾。眾所周知,通常的程序都是時而計算,時而輸出的。
2. 可以減少對 CPU的中斷頻率,放寬對中斷響應時間的限制
3. 提高 CPU和 I/O設備之間的並行性
緩衝的引入可顯著提高 CPU和設備的並行操作程度,提高系統的吞吐量和設備的利用率。
根據I/O控制方式,緩衝的實現方法有兩種:
緩衝技術種類
根據系統設置的緩衝器的個數,可把緩衝技術分為:
單緩衝:在設備和處理機之間設置一個緩衝器。設備相處理機交換數據時,先把被交換數據寫入緩衝器,然後,需要數據的設備或處理機從緩衝器取定數據。由於緩衝器屬於臨界資源,即不允許多個進程同時對一個緩衝器操作,因此,儘管單緩衝能匹配設備相處理機的處理速度,但是,設備和設備之間不能通過單緩衝達到並行操作。
雙緩衝:解決兩台外設、打印帆和終端之間的並行操作問題的辦法是設置雙緩衝。有了兩個緩衝器之後,CPU可把輸出到打印機的數據放入其中一個緩衝器(區)、讓打印機慢慢打印;然後,它又可以從另一個為終端設置的緩衝器(區)中讀取所需要的輸入數據。
多緩衝:是把多個緩衝區連接起來組成兩部分,一部分專門用於輸入,另一部分專門用於輸出的緩衝結構。
緩衝池:把多個緩衝區連接起來統一管理,既可用於輸入又可用於輸出的緩衝結構。
緩衝技術緩衝池的管理
緩衝技術結構
緩衝池由多個緩衝區組成。
(1) 空白緩衝隊列em,其隊首指針為F(em),隊尾指針為L(em);
另外,在緩衝池中還具有四種工作緩衝區:
(1) 用於收容輸入數據的工作緩衝區(hin);
(2) 用於提取輸入數據的工作緩衝區(sin);
(3) 用於收容輸出數據的工作緩衝區(hout);
緩衝技術管理
對緩衝池的管理由如下幾個操作組成:
(3)供進程申請緩衝區用的過程get_buf(type,number);
(4)供進程將緩衝區放入相應緩衝區隊列的過程put_buf(type,work_buf)。
其中,參數type表示緩衝隊列類型,number為緩衝區號,而work_buf則表示工作緩衝區類型。
緩衝技術工作過程
使用這幾個操作,緩衝池的工作過程可描述如下:
首先,輸入進程調用get_uf(em,number)過程從空白緩衝區隊列中取出一個緩衝號為number的空白緩衝區,將其作為收容輸入緩衝區hin,當hin中裝滿了由輸入設備輸入的數據之後,系統調用過程put_buf(in,hin)將該緩衝區插入輸入緩衝區隊列in中。
另外,當進程需要輸出數據數據時,輸出進程經過緩衝管理程序調用過程get_buf(em,number)從空白緩衝區隊列中取出一個空白緩衝區number作為收容輸出緩衝區hout,待hout中裝滿輸出數據之後,系統再調用過程Put_buf(out,hout)將該緩衝區插入輸出緩衝區隊列out.