作業系統IO硬體原理
IO系統
I/O 裝置及其介面線路、控制部件、通道和管理軟體。
IO裝置型別
- 根據輸入輸出特性劃分:
輸入型外圍裝置、輸出型外圍裝置和儲存型外圍裝置 - 按照輸入輸出資訊交換的單位劃分:
- 字元裝置:輸入型外圍裝置和輸出型外圍裝置一般為字元裝置,它與記憶體進行資訊交換的單位是位元組,即一次交換 1 個或多個位元組
- 塊裝置:塊裝置一次與記憶體交換的一個或幾個塊的資訊,儲存型外圍裝置一般為塊裝置
IO控制方式
按照 I/O 控制器功能的強弱,以及和 CPU 之間聯絡方式的不同,可把I/O裝置的控制方式分為四類,它們的主要差別在於中央處理器和外圍裝置並行工作的方式不同,並行工作的程度不同。
詢問方式(又稱程式直接控制方式)
一個數據輸入的流程可參照下圖:
1. 假如 CPU 上執行的現行程式需要從 I/O 裝置讀入一批資料,CPU程式設定交換位元組數和資料讀入主存的起始地址
2. CPU向 I/O 裝置發讀指令或查詢標誌指令,I/O 裝置便把狀態返回給 CPU
3. 如果 I/O忙或未就緒,則重複上述測試過程,繼續進行查詢
4. 如果 I/O 裝置就緒,資料傳送便開始,CPU 從 I/O介面讀一個字,再向主存寫一個字。如果傳送還未結束,再次向裝置發出讀指令,直到全部資料傳輸完成再返回現行程式執行
為了完成以上查詢,通常要用到三種指令:
1. 查詢指令,用來查詢裝置是否就緒;
2. 傳送指令,當裝置就緒時,執行資料交換;
3. 轉移指令,當裝置未就緒時,執行轉移指令
轉向查詢指令繼續查詢。
由上述過程可見,一旦 CPU 啟動 I/O 裝置,便不斷查詢I/O的準備情況,終止了原程式的執行。CPU在反覆查詢過程中,浪費了寶貴的 CPU 時間;另一方面,I/O 準備就緒後,CPU 參與資料的傳送工作,此時 CPU 也不能執行原程式,可見 CPU 和 I/O 裝置序列工作,使主機不能充分發揮效率,外圍裝置也不能得到合理使用,整個系統的效率很低。
中斷方式
中斷方式僅當操作正常或異常結束時才中斷中央處理機,因而實現了一定程度的並行操作。
相比於詢問方式,中斷方式的處理流程如下所示
1. CPU 在啟動 I/O 裝置後,不必查詢 I/O 裝置是否就緒,而是繼續執行現行程式,對裝置是否就緒不加過問
2. 直到在啟動指令之後的某條指令(如第 K 條) 執行完畢,CPU 響應了 I/O 中斷請求,才中斷現行程式轉至 I/O 中斷處理程式執行
3. 在中斷處理程式中,CPU 全程參與資料傳輸操作,它從 I/O 介面讀一個字(位元組) 並寫入主存
4. 如果I/O裝置上的資料尚未傳送完成,轉向現行程式再次啟動 I/O 裝置,於是命令 I/O 裝置再次作準備並重覆上述過程
5. 否則,中斷處理程式結束後,繼續從 K+1 條指令執行
使用中斷的方式,由於輸入輸出操作直接由中央處理器控制,每傳送一個字元或一個字,都要發生一次中斷,因而仍然消耗大量中央處理器時間。
例如,輸入機每秒傳送 1000 個字元,若每次中斷處理平均花 100 微秒,為了傳輸 1000 個字元,要發生 1000 次中斷,所以,每秒內中斷處理要花去約 100 毫秒。
但是程式中斷方式 I/O,由於不必忙式查詢 I/O 準備情況,在 CPU 和 I/O 裝置可實現部分並行,與程式查詢的序列工作方式相比,使 CPU 資源得到較充分利用。
DMA 方式
雖然程式中斷方式消除了程式查詢方式的忙式測試,提高了 CPU 資源的利用率,但是在響應中斷請求後,必須停止現行程式轉入中斷處理程式並參與資料傳輸操作。如果 I/O 裝置能直接與主存交換資料而不佔用 CPU,那麼,CPU 資源的利用率還可提高,這就出現了直接儲存器存取(Direct Memory Access ,DMA)方式。
在 DMA(直接主存存取)方式中,主存和 I/O 裝置之間有一條資料通路,在主存和 I/O 裝置之間成塊傳送資料過程中,不需要 CPU 幹予,實際操作由 DMA 直接執行完成
具體處理如下圖所示:
DMA至少需要以下邏輯部件:
邏輯部件
主存地址暫存器
存放主存中需要交換資料的地址,DMA 傳送前,由程式送入首地址,在DMA傳送中,每交換一次資料,把地址暫存器內容加 1
字計數器
記錄傳送資料的總字數,每傳送一個字,字計數器減 1。
資料緩衝暫存器或資料緩衝區
暫存每次傳送的資料。DMA與主存間採用字傳送,DMA與裝置間可能是字位或位元組傳送。所以,DMA中還可能包括有資料移位暫存器、位元組計數器等硬體邏輯
裝置地址暫存器
存放 I/O 裝置資訊,如磁碟的柱面號、磁軌號、塊號。
中斷機制和控制邏輯
用於向 CPU 提出 I/O 中斷請求和儲存 CPU 發來的 I/O 命令及管理 DMA的傳送過程。
DMA 不僅設有中斷機構,而且,還增加了DMA傳輸控制機構。若出現 DMA 與 CPU 同時經匯流排訪問主存,CPU 總把匯流排佔有權讓給 DMA,DMA 的這種佔有稱‘週期竊用’,竊取的時間一般為一個存取週期,讓裝置和主存之間交換資料,而且在 DMA 週期竊取期間,CPU不用幹預,還能做運算操作。這樣可減輕CPU的負擔,每次傳送資料時,不必進入中斷系統,進一步提高了 CPU 的資源利用率。
通道方式
DMA 方式與程式中斷方式相比,使得CPU對IO的干預從字(位元組) 為單位的減少到以資料塊為單位。而且,每次 CPU幹予時,並不要做資料拷貝,僅僅需要發一條啟動 I/O 指 令 ,以及完成 I/O 結束中斷處理。
但是,每發出一次I/O指令,只能讀寫一個數據塊,如果使用者希望一次讀寫多個離散的資料塊,並能把它們傳送到不同的記憶體區域,或相反時,則需要由CPU分別發出多條啟動I/O指令及進行多次 I/O 中斷處理才能完成。
通道方式進一步減少了CPU對I/O操作的幹予,減少為對多個數據塊,而不是僅僅一個數據塊,及有關管理和控制的幹予。
通道又稱輸入輸出處理器。它能完成主儲存器和外圍裝置之間的資訊傳送,與中央處理器並行地執行操作。
採用輸入輸出通道設計後,輸入輸出操作過程如下:
1. 中央處理機在執行主程式時遇到輸入輸出請求
2. 啟動指定通道上選址的外圍裝置,一旦啟動成功,通道開始控制外圍裝置進行操作。
3. 這時中央處理器就可執行其它任務並與通道並行工作,直到輸入輸出操作完成。
4. 通道發出操作結束中斷時,中央處理器才停止當前工作,轉向處理輸入輸出操作結束事件。
按照資訊交換方式和加接裝置種類不同,通道可分為三種類型:
通道型別
位元組多路通道
它是為連線大量慢速外圍裝置,如軟盤輸入輸出機、紙帶輸入輸出機、卡片輸入輸出機、控制檯打字機等設定的。以位元組為單位交叉地工作,當為一臺裝置傳送一個位元組後,立即轉去為另一臺裝置傳送一個位元組。在IBM370系統中,這樣的通道可接 256 臺裝置。
選擇通道
它用於連線磁帶和磁碟快速裝置。以成組方式工作,每次傳送一批資料;故傳送速度很高,但在這段時間只能為一臺裝置服務。每當一個輸入輸出操作請求完成後,再選擇與通道相連線的另一裝置。
陣列多路通道
對於磁碟這樣的外圍裝置,雖然傳輸資訊很快,但是移臂定位時間很長。
1. 如果接在位元組多路通道上,那麼通道很難承受這樣高的傳輸率;
2. 如果接在選擇通道上,那麼;磁碟臂移動所花費的較長時間內,通道只能空等。
陣列多路通道可以解決這個矛盾,它先為一臺裝置執行一條通道命令,然後自動轉換,為另一臺裝置執行一條通道命令。
對於連線在陣列多路通道上的若干臺磁碟機,可以啟動它們同時進行移臂,查詢欲訪問的柱面,然後,按次序交叉傳輸一批批資訊,這樣就避免了移臂操作過長地佔用通道。由於它在任一時刻只能為一臺裝置作資料傳送服務,這類似於選擇通道;但它不等整個通道程式執行結束就能執行另一裝置的通道程式命令,這類似於位元組多路通道。
裝置控制器
裝置控制器是 CPU 和裝置之間的一個介面,它接收從 CPU
發來的命令,控制I/O裝置操作,實現主存和裝置之間的資料傳輸操作。
裝置控制器是一個可編址裝置,當它連線多臺裝置時,則應具有多個裝置地址。
裝置控制器的主要功能為:
1. 接收和識別 CPU 或通道發來的命
令,例如磁碟控制器能接收讀、寫、查詢、搜尋等各種命令;
2. 實現資料交換,包括裝置和控制器之間的數
據傳輸;通過資料匯流排或通道,控制器和主存之間的資料傳輸;
3. 發現和記錄裝置及自身的狀態資訊,供 CPU
處理使用;
4. 裝置地址識別。