作業系統05-裝置管理
作業系統
第五章: 裝置管理
I/O管理
-
I/O裝置
-
I/O裝置的型別
-
傳輸速率
-
低速裝置
- 滑鼠、鍵盤 每秒幾十個位元組到幾百個位元組
-
中速裝置
- 印表機 每秒數千個或數萬個位元組
-
高速裝置
- 磁碟機 每秒數百千個位元組或數十兆位元組
-
-
資訊交換單位
-
字元裝置
- 512B~4KB 可定址 資訊存取的資料塊
-
塊裝置
- 用於資料的輸入和輸出,基本單位是字元
-
-
共享屬性
-
拓展
- 用共享裝置去模擬獨佔裝置工作的過程,進而產生多個虛擬的獨佔裝置
-
分類:
-
獨佔裝置
- 只允許一個使用者程序使用的裝置
-
共享裝置
- 允許多個程序使用的裝置
-
虛擬裝置
- 通過虛擬技術將一臺獨佔裝置改造成若干臺邏輯設 備,供若干個使用者程序同時使用
-
-
-
-
裝置與控制器之間的介面
- 資料訊號線
- 狀態訊號線
- 控制訊號線
- 裝置控制器
-
-
-
I/O裝置通道
-
型別
-
位元組多路
- 以位元組交換方式工作
- 含有若干個非分配型子通道
- 每個子通道連線一臺I/O裝置
- 按時間片輪轉方式共享主通道
- 用於中低速裝置
-
陣列選擇
- 以陣列方式進行資料傳送
- 只有一個分配型子通道
- 不允許其他裝置使用該通道
-
陣列多路
- 位元組多路和陣列選擇的綜合
-
-
功能
- 特殊的處理機,具有執行I/O指令的能力
- 通過執行通道程式來控制I/O操作
- 指令單一
- 通道沒有自己的記憶體
-
-
多通路I/O系統
- 儲存器到裝置之間有多通道
- 提高運輸速率
-
匯流排系統
-
ISA和EISA匯流排
-
區域性匯流排
-
VESA
-
PCI
I/O 管理控制
-
-
-
程式I/O方式
-
CPU要不斷地測試I/O裝置的狀態
-
沒有中斷機構
-
讓I/O裝置無法向CPU報告已完成一個字元的輸入操作(是CPU沒有辦法終止)
-
中斷驅動I/O控制方式
-
加入中斷
-
在輸完一個數據時,需要CPU花費極短時間去做中斷處理
-
DMA I/O控制方式
-
DMA
-
-
命令/狀態暫存器CR
- 接收從CPU發來的I/O命令
- 有關控制資訊
- 裝置的狀態
-
記憶體地址暫存器MAR
- 輸入時,存放把資料從裝置傳送到記憶體的起始目標地址
- 輸出時,存放由記憶體到裝置的記憶體源地址
-
資料暫存器DR
- 儲存資料
- 從裝置到記憶體
- 從記憶體到裝置
-
資料計數器DC
- 本次CPU要讀或寫的位元組數
-
工作過程
- 設定MAR和DC初值
- 啟動DMA傳送命令
- 挪用儲存器週期傳送資料字
- 儲存器地址增一
- 位元組數暫存器減一
-
-
特徵
- 傳輸單位是資料塊
- 從裝置和記憶體之間直接互動
- 盡在資料塊的傳送開始和結束時,才需要CPU干預,在控制器的控制下完成傳送
-
-
I/O通道控制方式
-
進一步減少CPU的干預
-
對一組資料塊的相關操作
-
通道程式
- 向I/O通道傳送一條I/O指令,以給出其所要執行的通道程式首地址和要訪問的裝置
- 通道執行通道程式即可完成CPU的I/O任務
- 組成
- 向I/O通道傳送一條I/O指令,以給出其所要執行的通道程式首地址和要訪問的裝置
-
- 操作碼
- 記憶體地址
- 計數
- 通道程式結束位P
- 記錄結束標誌R
- I/O子系統層次
緩衝管理
-
緩衝
- 單緩衝
- 雙緩衝
- 迴圈緩衝
-
緩衝池
-
既可以用於輸入又可用於輸出
-
空緩衝區
- 佇列emq
-
裝滿輸入資料的緩衝區
- 佇列inq
-
裝滿輸出資料的緩衝區
- 佇列outq
-
裝置分配
-
裝置獨立性
-
邏輯裝置
-
物理裝置
-
裝置獨立性軟體
-
執行所有裝置的公有操作
- 對獨立裝置的分配與回收
- 對映
- 對裝置進行保護,禁止使用者直接訪問裝置
- 緩衝管理
- 差錯控制
-
向用戶層(或檔案層)軟體提供統一介面
-
-
對映
-
好處
-
-
資料結構
- 裝置控制表
- 控制器控制表
- 通道控制表
- 系統裝置表
-
考慮因素
- 裝置的固有屬性
- 裝置分配演算法
- 裝置分配中的安全性
-
分配程式
- 基本的裝置分配程式
- 裝置分配程式的改進
-
裝置分配
-
I/O軟體的目標
- 與具體裝置無關
- 統一命名
- 對錯誤的處理
- 緩衝技術
- 裝置的分配和釋放
- I/O控制方式
-
I/O系統的層次
-
使用者空間的軟體
-
與裝置無關的軟體
-
裝置驅動程式
-
功能
-
接受由I/O程序發過來的命令和引數,並將命令中的抽象要求轉化為具體要求
- 如磁碟號轉換為磁碟的盤面、磁軌號及扇區號
-
檢查使用者I/O請求的合法性
- 瞭解I/O裝置的狀態
- 傳遞有關引數
- 設定裝置的工作方式
-
發出I/O命令
- 如果裝置空閒,便立即啟動I/O裝置去完成指定的操作
- 如果裝置忙碌,則請求塊掛在裝置佇列上等待
-
及時響應由控制器或通道發來的中斷請求並進行處理
-
對於設定有通道的計算機系統,還可以根據使用者的I/O請求,構成通道程式
-
-
裝置處理方式
- 為每一類裝置設定一個程序,專門用於執行這類裝置的I/O操作
- 在系統中設定的一個I/O程序,專門用於執行系統中所有各類裝置的I/O操作
- 不設定專門的裝置處理程序,而只為各類裝置設定相應的裝置處理程式
-
特點
- 在I/O的程序與裝置控制器之間的一個通訊和轉換程式
- 與I/O特性相關,不同型別的裝置應該配置不同的驅動程式
- 與硬體相關,因此需要組合語言
- 驅動程式與I/O裝置所採用的控制方式緊密相關
-
處理過程
- 將抽象要求轉換為具體要求
- 檢查I/O請求的合法性
- 讀出和檢查裝置的狀態
- 傳送必要的引數
- 工作方式的設定
- 啟動I/O裝置
-
-
中斷處理程式
-
主要工作
- 程序上下文切換
- 對處理中斷訊號源進行測試
- 讀取裝置狀態和修改程序狀態
-
工作流程
- 喚醒被阻塞的程式
- 保護被中斷程序的CPU環境
- 轉入相應的裝置處理現場
- 中斷處理
- 恢復被中斷程序的現場
-
-
硬體
-
SPOOLing技術
-
-
-
為了緩和CPU的高速性與I/O裝置低速性間的矛盾而引入了離線輸入、離線輸出技術
-
把低速I/O裝置上的資料傳送到高速磁碟上
-
實現
-
利用其中的一道程式,來模擬離線輸入時的外圍控制機功
-
再用另一道程式來模擬離線輸出時外圍控制機的功能
-
共享印表機
- 將輸出程序在輸出井中申請一個空閒磁碟塊區,並將列印的資料送入其中
- 輸出程序再為使用者程序申請一張空白的使用者請求打印表,並將使用者的列印要求填入,再將該表掛到請求列印佇列
-
-
特點
- 提高I/O速度
- 將獨佔裝置改造共享裝置
- 實現了虛擬裝置功能
-
磁碟儲存器管理
-
磁碟效能簡介
-
資料的組織和格式
-
磁碟型別
-
固定頭磁碟
- 在每條磁軌上都有一讀/寫磁頭
-
移動頭磁碟
- 每一個盤面僅配有一個磁頭
- 移動磁頭僅能以序列方式讀/寫
-
-
磁碟訪問時間
-
尋道時間
- 啟動磁臂的時間s與磁頭移動n條磁軌所花費的時間之和
- Ts=m×n+s
- m是一常數,與磁碟驅動器的速度有關
-
旋轉延遲時間
- 指定扇區移動到磁頭下面所經歷的時間
-
傳輸時間
- Tt的大小與每次所讀/寫的位元組數b和旋轉速度有關
- r為磁碟每秒鐘的轉數;N為一條磁軌上的位元組數
-
總時間
-
-
-
磁碟排程演算法
- 先來先服務FCFS
-
按程序請求訪問磁碟的先後次序進行排程
-
最短尋道時間優先SSTF
-
選擇與當前磁頭所在磁軌距離最近的請求作為下一次服務的物件
-
可能產生“飢餓”現象
-
掃描(SCAN)演算法
-
-
當前移動方向上選擇與當前磁頭所在磁軌距離最近的請求作為下一次服務的物件
-
迴圈掃描(CSCAN)演算法
- 磁頭移到最外磁軌時立即又返回到最裡磁軌
- 消除了對兩端磁軌請求的不公平
-
N-Step-SCAN
- N步SCAN演算法是將磁碟請求佇列分成若干個長度為N的子佇列,磁碟排程將按FCFS演算法依次處理這些子佇列
- 每處理一個佇列時又是按SCAN演算法
- 當正在處理某子佇列時,如果又出現新的磁碟I/O請求,便將新請求程序放入其他佇列
- N步SCAN演算法是將磁碟請求佇列分成若干個長度為N的子佇列,磁碟排程將按FCFS演算法依次處理這些子佇列
-
FSCAN排程演算法
- 一個是由當前所有請求磁碟I/O的程序形成的佇列,由磁碟排程按SCAN演算法進行處理
- 將新出現的所有請求磁碟I/O的程序,放入另一個等待處理的請求佇列。這樣,所有的新請求都將被推遲到下一次掃描時處理
- 一個是由當前所有請求磁碟I/O的程序形成的佇列,由磁碟排程按SCAN演算法進行處理
磁碟快取記憶體
-
邏輯上屬於磁碟,而物理上是駐留在記憶體中的盤塊
-
形式
-
在記憶體中開闢一個單獨的儲存空間來作為磁碟快取記憶體
-
把所有未利用的記憶體空間變成一個緩衝池,供請求分頁系統和磁碟I/O時共享
- 當磁碟I/O的頻繁程度較高時,該緩衝池可能包含更多的記憶體空間
- 而在應用程式執行得較多時,該緩衝池可能只剩下較少的記憶體空間
-
-
資料交付方式
-
資料交付
- 直接將快取記憶體中的資料,傳送到請求者程序的記憶體工作區
-
指標交付
- 只將指向快取記憶體中某區域的指標,交付給請求者程序
- 資料量小,節省了時間
-
週期性地寫回磁碟
- UNIX方法
- MS-DOS方法
提高速度的方法
- 提前讀
- 延遲寫
- 優化物理塊的分佈
- 虛擬盤