作業系統之輸入輸出(補充)

什麼是緩衝區?緩衝區的作用是啥?

緩衝區是一個儲存區域,可以用專門的硬體暫存器組成,也可以用記憶體作為緩衝區使用。硬體作為緩衝區的成本較高,容量也較小,一般僅用在對速度要求非常高的場合,如儲存器管理中所用的聯想儲存器對列表的訪問頻率極高,因此,使用速度很快的聯想暫存器來存放頁表項的副本。一般情況下更多的是利用記憶體作為緩衝區。裝置獨立性軟體的緩衝區管理就是要組織管理好這些緩衝區

快取區的作用

1)緩和cpu與io裝置之間速度不匹配的矛盾

2)減少對cpu的中斷頻率 放寬對cpu中斷相應時間的限制

3)解決資料粒度不匹配的問題

4)提高cpu與io裝置之間的並行性

緩衝區有一個特點,當緩衝區資料非空時,不能往緩衝區衝入資料,只能從緩衝區把資料傳出。當緩衝區為空時,可以往緩衝區衝入資料,但必須把緩衝區充滿以後才能從緩衝區把資料傳出

緩衝區管理的策略

單緩衝

:在裝置和處理機之間設定一個緩衝區。裝置和處理機交換資料時,先把被交換的資料寫入緩衝區,然後需要資料的裝置或處理機從緩衝區取走資料。

雙緩衝

:在單緩衝的基礎上,提高了處理機和輸入裝置的並行操作速度

迴圈緩衝

:包含多個大小相等的緩衝區,每個緩衝區中有一個連線指向下一個緩衝區,最後一個緩衝區指向第一個緩衝區,多個緩衝區構成一個環形。

緩衝池

:多個系統共用的緩衝區組成的,緩衝區按其使用情況可以形成三個佇列:空緩衝佇列,裝滿輸入資料的緩衝佇列和裝滿輸出資料的緩衝佇列。

當輸入程序需要輸入資料時並從空緩衝佇列的隊首摘下一個空緩衝區把它作為收容輸入工作緩衝區然後把輸入資料輸入其中裝滿後再將它掛在輸入隊尾 當計算程序需要輸入資料數時從輸入這裡取得一個緩衝區作為提取輸入工作緩衝區計算程序從中提取資料資料用完後再將它掛到空緩衝隊尾當計算程序需要輸入資料時便從空緩衝佇列的隊收取一個空緩衝區作為收容輸出工作緩衝區當其中裝滿輸出資料後再把它掛到空緩衝佇列的隊尾。

高速裝置和緩衝區的異同

快取記憶體和緩衝區都是介於高速裝置和低速裝置之間的

快取記憶體存放資料存放的是低速裝置上的某些資料的複製資料。就是快取記憶體上有的,低速裝置上必然有

快取記憶體存放的是高速裝置,經常要訪問的資料,若高速裝置要訪問的資料不在高速裝置中的高速裝置,就要訪問低速裝置

緩衝區存放的是低速裝置傳送給高速裝置的資料。而這些資料在低速裝置上卻不一定有備份,那些資料再從緩衝區傳送到高速裝置,高速裝置和低速裝置的通訊都要經過緩衝區,高速裝置永遠不會直接去訪問低速裝置