I/0子系統

一.I/O特點

1.設備接口類型
A.字符設備:鍵盤,鼠標,串口
——訪問特徵:以字節爲單位順序訪問
——I/O命令:get(),put();通常使用文件訪問接口和語義
B.塊設備:磁盤驅動器,磁帶驅動器,光驅
——訪問特徵:均勻的數據塊訪問;
——I/O命令:原始I/O或文件系統接口;內存映射文件訪問
C.網絡設備:以太網,無線,藍牙
——訪問特徵:格式化報文交換
——I/O命令:send/receive網絡報文;通過網絡接口支持多種網絡協議
2.同步和異步I/O
A.阻塞I/O:
——讀數據時,進程將進入等待狀態,直到完成數據讀出
——寫數據時,進程將進入等待狀態,直到設備完成數據寫入處理
在這裏插入圖片描述
B.非阻塞I/O:
——立即從read或write系統調用返回,返回值爲成功傳輸字節數
——read或write的傳輸字節數可能爲0
C.異步I/O:
——讀數據時,使用指針標記好用戶緩衝區,立即返回;稍後內核將填充緩衝區並通知用戶
——寫數據時,使用指針標記好用戶緩衝區,立即返回;稍後內核將處理數據並通知用戶
——驅動裏會等待,而應用程序不等待。

二.I/O結構

1.硬件結構舉例:
在這裏插入圖片描述
北橋連高速設備,南橋連I/O設備
2.cpu與設備連接
在這裏插入圖片描述
3.I/O指令和內存映射I/O
A.I/O指令
——通過I/O端口號訪問設備寄存器
——特殊的CPU指令
B.內存映射I/O
——把設備的寄存器或存儲映射帶內存物理地址空間中
——通過load/store指令完成I/O操作
——MMU設置映射,硬件跳線或程序在啓動時設置地址
4…內核I/O結構
在這裏插入圖片描述
5…I/O請求生存週期
在這裏插入圖片描述

三.I/O數據傳輸

1.CPU與設備控制器的數據傳輸
A.程序控制I/O(PIO,Programmed I/O)
——通過CPU的in/out或者load/store傳輸所有數據
——特點:硬件簡單,編程容易;消耗的CPU時間和數據量成正比
——適用於簡單的,小型的設備I/O
B.直接內存訪問(DMA)
——設備控制器可直接訪問系統總線
——控制器直接與內存互相傳輸數據
——特點:設備傳輸數據不影響CPU;需要CPU參與設置
——適用於高吞吐量I/O
C.DMA舉例
在這裏插入圖片描述
2.I/O設備通知操作系統的機制
A.操作系統需要了解設備狀態
——I/O操作完成時間
——I/O操作遇到錯誤
B.兩種方式
——CPU主動輪詢
I/O設備在特定的狀態寄存器中放置狀態和錯誤信息,操作系統定期檢查這些狀態寄存器
特點:簡單;I/O操作頻繁或不可預測時,開銷大和延時長
——設備中斷
設備中斷處理流程:CPU在I/O之前設置任務參數;CPU發出I/O請求後,繼續執行其他任務;I/O設備處理請求;I/O設備處理完成時,觸發CPU中斷請求;CPU接收中斷,分發到相應中斷處理例程
特點:處理不可預測事件效果好;開銷相對較高(CPU在每兩條指令執行期間會去檢查是否有中斷請求)
C.一些設備可能結合了輪詢和設備中斷
——如:高帶寬網絡設備(第一個傳入數據包到達前採用中斷;輪詢後面的數據包直到硬件緩存爲空)
D.設備中斷I/O處理流程
在這裏插入圖片描述

四.磁盤調度

1.磁盤工作機制和性能參數
——讀取或寫入時,磁頭必須被定位在期望的磁道,並從所期望的柱面和扇區開始
——尋道時間:定位到期望的磁道所花費的時間
——旋轉延遲:從零扇區開始到達目的地花費的時間
在這裏插入圖片描述
2.磁盤I/O傳輸時間
在這裏插入圖片描述
3.磁盤調度算法
A.通過優化磁盤訪問請求順序來提高磁盤訪問性能
——尋道時間是磁盤訪問最耗時的部分
——同時會有多個在同一磁盤上的I/O請求
——隨機處理磁盤訪問請求的性能表現很差
4.先進先出(FIFO)算法
——按順序處理請求
——公平對待所有進程
——在有很多進程的情況下,接近隨機調度的性能
5.最短服務時間優先(SSTF)
——選擇從磁臂當前位置需要一定最少的I/O請求
——總是選擇最短尋道時間
6.掃描算法(SCAN)
——磁臂在一個方向上移動,訪問所有未完成的直到磁臂到達該方向上最後的磁道
——也稱電梯算法
7.循環掃描算法(C-SCAN)
——限制了僅在一個方向上掃描
——當最後一個磁道也被訪問過了後,磁臂返回到磁盤的另一端再次進行
8.C-LOOK算法
——磁臂先到達該方向上最後一個請求處,然後立即反轉,而不是先到最後點路徑上的所有請求
9.N步掃描(N-step-SCAN)算法
——磁頭粘着(Arm Stickiness)現象
——SSTF,SCAN及CSCAN算法中,可能出現磁頭停留在某處不動的情況(進程反覆請求某一磁道的I/O操作)
——N步掃描掃描算法(將磁盤請求隊列分成長度爲N的子隊列;按FIFO算法依次處理所有子隊列;隊列內部用掃描算法)
10.雙隊列掃描算法(FSCAN)算法
——FSCAN算法是N步掃描算法的簡化
——FSCAN只將磁盤請求隊列分成兩個子隊列
——把磁盤I/O請求分成兩個隊列;交替使用掃描算法處理一個隊列;新生的磁盤I/O請求放入另一隊列中,所有的新請求都將被推遲到下一次掃描時處理

五.磁盤緩存

放在內存裏的磁盤的數據緩存,爲了避免對磁盤裏同一塊數據的多次引用時的反覆讀取
1.緩存
A.數據傳輸雙方訪問速度差異較大時,引入的速度匹配中間層。
B.磁盤緩存是磁盤扇區在內存中的緩存區
——磁盤緩存的調度算法很類似虛擬存儲調度算法
——磁盤的訪問頻率遠低於虛擬存儲中的內存訪問頻率
——通常磁盤緩存調度算法很複雜
2.單緩存與雙緩存
在這裏插入圖片描述
單緩存中,往緩存中寫時,CPU就不能從緩存中讀,效率較低;雙緩存中,因爲是不同的緩存區,I/O設備的寫和CPU的讀可以同時進行。
3.訪問頻率置換算法(Frequency-based Replacement)
A.問題是:在一段密集磁盤訪問後,LFU算法的引用計數變化無法反映當前的引用情況
B.算法思路
——考慮磁盤訪問的密集特徵,對密集引用不計數
——在短週期中使用LRU算法,而在長週期中不使用LFU算法
C.思路圖解
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章