緩衝管理

SU溯發表於2021-01-01

適用計算機作業系統(OS)(第四版)
自己的學習筆記,PPT及圖片來源網路及自己老師,侵刪。

1、緩衝的引入

1 )緩和CPU與I/O裝置間速度不匹配的矛盾。
2 )減少對CPU的中斷頻率, 放寬對CPU中斷響應時間的限制。
3 )提高CPU和I/O裝置之間的並行性。
4 )解決資料粒度不匹配的問題

2、I/O緩衝區設定

  • 緩衝區實現
    • 硬緩衝:
      在裝置中(硬體暫存器)設定緩衝區,由硬體實現。
    • 軟緩衝:
      在記憶體中開闢一個空間,用作緩衝區。
  • 緩衝區管理
    • 簡單緩衝:單緩衝和雙緩衝
    • 多緩衝:迴圈緩衝和緩衝池

3、單緩衝與雙緩衝區

緩衝區 :緩衝區非空,不能輸入資料,只有當緩衝區中的資料全部傳送至工作區,才能接受下一次的資料。緩衝區為空時,可以輸入資料,但只有當緩衝區為滿之後,才可以向工作區傳輸資料。

3.1 單緩衝區

平均工作時間 : Max(T,C)+M
初始狀態 :工作區滿,緩衝區空。

1)T > C
平均時間 T+M

在這裡插入圖片描述

2)T < C
平均時間 C+M
在這裡插入圖片描述

3.2 雙緩衝區

初始狀態 :工作區為空,一個緩衝區滿,另一個緩衝區為空
平均工作時間 : Max(T,M+C)

1 )T > M + C
平均時間 :T
在這裡插入圖片描述
2 )T < M + C
平均時間 :M + C

找不到一個和初始狀態相同的時間,但是會發現每經過M+C段時間會完成對一個資料塊的處理
在這裡插入圖片描述

3.3 雙機通訊時緩衝區的設定

單緩衝區 :只能進行單方面的通訊,即不允許雙方同時向對方傳送資料。

雙緩衝區 :可以實現同時通訊,一個作為傳送緩衝區,一個作為接受緩衝區。

4 、迴圈緩衝

指標:

  • Nextg:指示計算程式下一個可用的滿緩衝

  • Nexti:指示輸入程式下一個可用的空緩衝

  • Current:指示計算程式正在使用的緩衝區

在這裡插入圖片描述
程式同步 :

Nexti和Nextg同向移動

  • Nexti指標追上Nextg:則輸入速度>計算速度,全部緩衝區已滿。則輸入程式阻塞,等待有空緩衝區出現。此時稱為系統受計算限制。

  • Nextg指標追上Nexti:則輸入速度<計算速度,全部緩衝區已空。則計算程式阻塞,等待有滿緩衝區出現。此時稱為系統受I/O限制。

這種迴圈緩衝只適用於特定的I/O程式和計算程式,屬於專用緩衝,系統較大時,會有許多這樣的迴圈緩衝,佔用大量記憶體,利用率低

5、緩衝池

包含了三種佇列 :

空緩衝佇列
輸入佇列
輸出佇列

四種工作緩衝區:

收容輸入緩衝區(hin):用於收容裝置輸入的資料。
提取輸入緩衝區(sin):用於提取裝置輸入的資料。
收容輸出緩衝區(hout):用於收容CPU輸出的資料。
提取輸出緩衝區(sout):用於提取CPU輸出的資料。
在這裡插入圖片描述
四種情況 :
1)輸入程式請求輸入資料

從空緩衝佇列隊頭取下一塊緩衝區,作為收容輸入緩衝區,當其充滿之後,就會掛到輸入佇列隊尾上。

2)計算程式請求一塊輸入資料
從輸入佇列隊頭取下一塊緩衝區,作為提取輸入緩衝區,當其為空之後,就會掛到空緩衝佇列尾上。

3)計算程式請求將準備好的資料衝入緩衝區

從空緩衝佇列隊頭取下一塊緩衝區,作為收容輸出緩衝區,當其充滿之後,就會掛到輸出佇列隊尾上。

4)輸出程式請求輸出資料到使用者程式

從輸出佇列隊頭取下一塊緩衝區,作為提取輸出緩衝區,當其為空之後,就會掛到空緩衝佇列尾上。

相關文章