輸入輸出系統
I/O系統層次結構
-
用戶層軟件
與用戶交互的接口,用戶可直接調用該層的庫函數對設備進場操作
-
設備獨立性軟件
用於實現用戶程序與設備驅動器的統一接口,設備命名,設備保護以及設備分配和釋放
-
設備驅動程序
與硬件相關,用於具體實現系統對設備發出的操作指令。
-
中斷處理程序
保存被中斷進場的CPU環境,轉入相應的中斷處理程序進行處理,處理完恢復現場
模塊之間的層次視圖
-
I/O系統接口
它是I/O系統和上次系統之間的接口,向上層提供設備進行操作的抽象命令,根據設備類型不同,可分為:
-
塊設備接口
塊設備:指數據的存儲和傳輸都是以數據塊為單位的設備,常見的是磁盤。磁盤的地址需要用磁道號和扇區號表示,當上層發來讀命令的時候,該接口會將抽象的命令轉換為磁盤的盤面,磁道和扇區。
-
流設備接口
字符設備:數據的存儲和傳輸都是以字節為單位的設備,常見的是鍵盤,打印機。字符設備通常設立一個字符緩沖區,I/O字符流順序的進入字符緩沖區,順序的送出
-
網絡通信接口
-
-
軟件/硬件(RW/HW)接口
軟硬件接口,上面是中斷處理程序和用於不同設備的設備驅動程序,下面是各種設備的控制器,這兩個接口之間就I/O系統
-
I/O系統
-
中斷處理程序
直接與硬件交換,當有中斷信號來時,中斷處理程序首先保存被中斷進場的CPU環境,然后轉入相應的設備中斷程序處理,處理完后恢復現場。
-
設備驅動程序
驅動程序是進程和設備控制器直接的通信程序,將上層發來的抽象I/O請求轉換為對I/O設備的具體命令和參數,並把它裝入到設備控制器中的命令和參數寄存器。
-
設備獨立性軟件
實現與設備無關,I/O軟件獨立與具體使用的物理設備
-
I/O設備和設備控制器
設備控制器
組成:
-
設備控制器與處理機接口
實現CPU與設備控制器之間的通信
-
設備控制器與設備接口
在控制器上連接一個或者多個設備
-
I/O邏輯
對設備進行控制,當CPU需要操作一個設備的時候,由I/O邏輯對收到的地址譯碼,再根據譯出的命令對所選的設備進行控制
基本功能:
- 接收和識別命令
- 數據交換
- 標識和報告設備狀態
- 地址識別
- 數據緩沖區
- 差錯控制
I/O通道
I/O通道是一種特殊的處理機,具有執行I/O命令的能力,並通過執行通道程序來控制I/O操作,指令單一,只能執行I/O操作有關的命令,且通道沒有自己內存,與CPU共享內存,其目的是讓CPU從繁雜的I/O任務中解脫
通道類型
- 字節多路通道
-
數組選擇通道
-
數組多路通道
中斷
中斷是CPU對I/O設備發來的中斷信號的一種響應
中斷的處理方式
-
屏蔽中斷
當處理機處理一個中斷的時候,會屏蔽所有的中斷,一直到該中斷處理完才會處理新的中斷
-
嵌套中斷
CPU優先響應最高優先級的中斷請求,所有高優先級的中斷請求可以搶占低優先級的
中斷的處理過程:
- 測定是否有未響應的中斷信號
- 保護被中斷進程的CPU環境
- 轉入相應的設備驅動程序
- 中斷處理
- 恢復COU現場並退出中斷
設備驅動程序
設備驅動程序的任務是接收上層軟件發來的抽象命令,把它們轉變為對應設備的具體參數和命令,發給設備控制器,啟動設備執行
設備驅動器處理過程:
- 將抽象的命令轉變為具體設備的命令
- 對服務請求進行檢驗
- 檢查設備的狀態
- 傳送必要的參數
- 啟動I/O設備
I/O設備的控制方式
-
使用輪詢的可編程I/O方式
處理機發送出一條I/O指令之后,不斷的詢問是否I/O命令是否完成,這個方式極大的浪費了CPU的資源
-
使用中斷的可編程I/O方式
CPU發出一條指令之后,繼續執行它原來的任務,由控制器代替CPU指定IO設備,當CPU需要設備的數據時,控制器發出中斷信號,告訴CPU數據已經准備好,可以來取。
-
直接存儲器訪問方式
中斷I/O方式是一字節為單位進行I/O操作,每當完成一個字節的傳輸時,就需要中斷,讓CPU讀取,這樣產生了直接存儲器訪問方式,這種方式是以數據塊為單位傳輸,直接送入內存中,只有在開始和結束的時候需要CPU干預,整塊數據在控制器的控制下完成。
DMA控制器的組成:
- 主機與DMA控制器的接口
- DMA控制器與塊設備的接口
- I/O控制邏輯
-
I/O通道控制方式
DMA控制方式雖然進一步減少了CPU對I/O設備的干預,從對字節干預減少到對數據塊的干預,但CPU每次發出一條指令,只能讀取或寫一個連續的數據塊,並不能同時對不同的內存區進行操作,所以出現了I/O通道方式,它是對一組數據塊進行干預。
要完成對一組數據塊操作,只需要想I/O通道發送一條I/O指令,以給出的所要執行的通道程序的首地址和要訪問的I/O設備,通道接收到命令之后,通知執行通道程序完成I/O任務。
通道是通過執行通道程序並與設備控制器共同實現IO設備的控制。
通道程序:由一系列的通道指令構成
與設備無關的I/O軟件
為了實現設備的無關性,系統采用了邏輯設備名,通過邏輯設備表LUT來實現邏輯設備名對物理設備名的映射
設備分配
系統的設備分為兩種:共享設備和獨立設備。獨立設備由操作系統分配,為了實現對獨立設備的分配,操作系統設置了一些數據結構用來記錄對設備或控制器控制需要的信息。
- 設備控制表DCT
- 控制器控制表COCT
- 通道控制表CHCT
- 系統設備表SDT
分配過程
-
分配設備
根據I/O請求的物理設備名查找SDT,找出相對應的DCT,檢查DCT中的設備狀態字段,設備是否忙碌,如果不忙,檢查安全性,分配設備
-
分配控制器
分配完設備后,到DCT找出該設備相連接的控制器COCT,從COCT的狀態字段看控制器是否忙碌,不忙,分配控制器
-
分配通道
分配完控制器,在COCT中找到相連的CHCT,根據CHCT內的狀態信息看通道是否忙碌,不忙分配通道