設備管理-IO組成 IO軟件
IO系統組成
- 需要用於輸入、輸出和存儲信息的設備;
- 需要相應的設備控制器;
- 控制器與CPU連接的高速總線;
- 有的大中型計算機系統,配置I/O通道;
一. I/O系統的基本功能及模型
I/O系統的主要功能
- 隱藏物理設備細節,方便用戶
- 實現設備無關性,方便用戶
- 提高處理機和設備的並行性,提高利用率:緩衝區管理
- 對I/O設備進行控制:控制方式、設備分配、設備處理
- 確保對設備正確共享:虛擬設備及設備獨立性等
- 錯誤處理
I/O軟件的層次結構及層功能
- 用戶層軟件:實現與用戶交互的接口,用戶可直接調用在用戶層提供的、與I/O操作有關的庫函數,對設備進行操作。
- 設備獨立性軟件 :處於次底層,是進程和控制器之間的通信程序;將上層發來的抽象I/O請求,轉換爲對I/O設備的具體命令和參數,並把它裝入到設備控制其中的命令和參數寄存器中。用於實現用戶程序與設備驅動器的統一接口、設備命名、設備的保護以及設備的分配與釋放等,同時爲設備管理和數據傳送提供必要的存儲空間
- 設備驅動程序 :與硬件直接相關,用於具體實現系統對設備發出的操作指令,驅動I/O設備工作的驅動程序。
- 中斷處理程序 :處於I/O系統的底層,直接與硬件進行交互,用於保存被中斷進程的CPU環境,轉入相應的中斷處理程序進行處理,處理完後再恢復被中斷進程的現場後,返回到被中斷進程。
硬件:執行I/O操作
I/O系統接口
- 塊設備:數據的存取和傳輸都是以數據塊爲單位的設備。基本特徵是傳輸速率較高、可尋址。磁盤設備的I/O常採用DMA方式。
- 流設備接口:數據的存取和傳輸是以字符爲單位的設備。如鍵盤、打印機等。基本特徵是傳輸速率較低、不可尋址,常採用中斷驅動方式。
- 網絡通信接口:操作系統必須提供相應的網絡軟件和網絡通信接口,使得計算機能通過網絡與網絡上的其它計算機進行通信,或上網瀏覽。
二. I/O設備和設備控制器
I/O設備的類型
I/O設備的類型繁多,從OS的觀點,按其重要的性能指標進行分類如下:
- 按傳輸速率分類:
低速、中速、高速(鍵盤、打印機、磁盤)
使用:存儲設備、輸入輸出設備 - 按信息交換的單位分類:
塊設備:有結構、速率高、可尋址、DMA方式控制
字符設備:無結構、速率低、不可尋址、中斷方式控制 - 按設備的共享屬性分類:
獨佔:打印機
共享:一個時刻上仍然是隻被一個進程佔用。可尋址、可隨機訪問的色後備。磁盤。
虛擬:使一臺獨佔設備變換爲若干臺邏輯設備,供給若干用戶“同時使用”
I/O設備中的接口
與控制器的接口有三種類型的信號:
- 數據信號線(進出數據轉換、緩衝後傳送)
- 控制信號線(讀\寫\移動磁頭等控制)
- 狀態信號線
設備控制器
- 設備並不直接與CPU通信
- 計算機中的一個實體——“設備控制器”負責控制一個或多個I/O設備,以實現I/O設備和計算機之間的數據交換。
- 控制器是CPU與I/O設備之間的接口,作爲中間人接收從CPU發來的命令,並去控制I/O設備工作,以使處理機脫離繁雜的設備控制事務。
- 常作成接口卡插入計算機
- 可編址,不同類
控制一個設備時只有一個地址,若連接多個設備則含有多個設備地址
管理的複雜性因不同設備而異,分爲字符設備控制器、塊設備控制器。
- 基本功能
-
- 接收和識別CPU命令(控制寄存器:存放命令和參數)
-
- 標識和報告設備的狀態(狀態寄存器)
-
- 數據交換(數據寄存器)
-
- 地址識別(控制器識別設備地址、寄存器地址。地址譯碼器)
-
- 數據緩衝(協調I/O與CPU的速度差距)
-
- 差錯控制
- 組成
-
- 設備控制器與處理機的接口
-
- 設備控制器與設備的接口
-
- I/O邏輯
通過一組控制線與處理機交互
CPU要啓動一個設備時,將啓動命令發送給控制器;同時通過地址線把地址發送給控制器;控制器的I/O邏輯對收到的地址和命令進行譯碼,再根據所譯出的命令選擇設備進行控制。
- I/O邏輯
- 處理機與設備控制器間
-
- 實現CPU與設備控制器之間的通信。
-
- 共有三類信號線:
數據線:數據線通常與兩類寄存器相連接,第一類是數據寄存器;第二類是控制/狀態寄存器。
地址線
控制線
- 共有三類信號線:
I/O通道——CPU和設備控制器之間增設一個硬件機構
-
I/O通道設備的引入
主要目的:建立更獨立的I/O操作,解放CPU。
數據傳送的獨立
I/0操作的組織、管理及結束處理也儘量獨立。實際上I/O通道是一種特殊的處理機:
指令類型單一,只用於I/O操作;
通道沒有內存,它與CPU共享內存 -
通道類型
根據其控制的外圍設備的不同類型,信息交換方式也可分爲以下三種類型:
a.字節多路通道
一個通道常通過多個子通道連接多個設備控制器
多個設備,通過非分配型子通道以字節爲單位交叉輪流使用主通道傳輸自己的數據。
b.數組選擇通道
針對高速設備:分配型子通道
設備利用子通道佔用通道後,一段時間內一直獨佔,直至設備傳送完畢釋放。
利用率低。
c.數組多路通道
結合上述兩種方式。
含多個非分配型子通道。數據傳送則按數組方式進行。
三. 中斷機構和中斷處理程序
中斷和陷入
中斷:CPU對I/O設備發來的中斷信號的一種響應,中斷是由外部設備引起的,又稱外中斷
陷入:由CPU內部事件所引起的中斷,通常把這類中斷稱爲內中斷或陷入(trap)
中斷和陷入的主要區別:是信號的來源
中斷向量表
爲每種設備配以相應的中斷處理程序,並把該程序的入口地址,放在中斷向量表的一個表項中,併爲每一個設備的中斷請求,規定一箇中斷號,它直接對應於中斷向量表的一個表項中
對多中斷源的處理方式
-
屏蔽(禁止)中斷:
所有中斷都將按順序依次處理
當處理機正在處理一箇中斷時,將屏蔽掉所有新到的中斷,讓它們等待,直到處理機已完成本次中斷的處理後,處理機再去檢查並處理
-
嵌套中斷:
當同時有多個不同優先級的中斷請求時,CPU優先響應最高優先級的中斷請求
高優先級的中斷請求,可以搶佔正在運行低優先級中斷的處理機,該方式類似於基於優先級的搶佔式進程調度
中斷處理程序
主要工作
- 進行進程上下文的切換
- 對處理中斷信號源進行測試
- 讀取設備狀態
- 修改進程狀態
中斷處理流程
- 測定是否有未響應的中斷信號
- 保護被中斷進程的CPU環境
- 轉入相應的設備處理程序
- 中斷處理
- 恢復CPU的現場
四. 設備驅動程序
設備驅動程序是I/O系統的高層與設備控制器之間的通信程序,其主要任務:
- 接收上層軟件發來的抽象I/O要求,如read、write等命令;
- 再把它轉化爲具體要求,發送給設備控制器,啓動設備去執行。
- 反方向,它也將由設備控制器發來的信號,傳送給上層軟件。
驅動程序的功能
- 接收由與設備無關的軟件發來的命令和參數,並將命令中的抽象要求,轉換爲與設備相關的低層操作序列;
- 檢查用戶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控制方式
數據走向:設備(磁盤)–控制器緩衝—進程的內存
1.程序I/O方式(忙—等待方式)
向控制器發送一條I/O指令;啓動輸入設備輸入數據;把狀態寄存器busy=1。
然後不斷測試標誌。爲1:表示輸入機尚未輸完一個字,CPU繼續對該標誌測 試;直到爲0:數據已輸入控制器數據寄存器中。
CPU取控制器中的數據送入內存單元,完成一個字的I/O 。
高速CPU空閒等待低速I/O設備,致使CPU極大浪費。
2.中斷驅動I/O方式
CPU向相應的設備控制器發出一條I/O命令,然後立即返回繼續執行任務。
設備控制器按照命令的要求去控制指定I/O設備。
這時CPU與I/O設備並行操作。
I/O設備輸入數據中,無需CPU干預,因而可使CPU與I/O設備並行工作。從而提高了整個系統的資源利用率及吞吐量。
3.直接存儲器訪問DMA 方式(適用於讀一個連續的數據塊)
a.特點:
數據傳輸的基本單位是數據塊;
所傳送的數據是從設備直接送入內存的,或者直接從內存進設備;不需要CPU操作。
CPU干預進一步減少:僅在傳送一個或多個數據塊的開始和結束時,才需CPU干預,整塊數據的傳送是在控制器的控制下完成的。
b.DMA控制器的組成
主機與DMA控制器的接口;
DMA控制器與塊設備的接口;
I/O控制邏輯.
c.DMA控制器中的寄存器
數據寄存器DR:暫存設備到內存或從內存到設備的數據。
內存地址寄存器MAR:它存放把數據從設備傳送到內存的起始的目標地址或內存原地址。
數據計數器DC:存放本次CPU要讀或寫的字(節)數。
命令/狀態寄存器CR:用於接收從CPU發來的I/O命令或有關控制和狀態信息。
d.工作過程
CPU先向磁盤控制器發送一條讀命令。
該命令被送到命令寄存器CR中,同時發送數據讀入到內存的起始地址,該地址被送入MAR中;
要讀數據的字數則送入數據計數器DC中;
將磁盤中的數據原地址直接送入DMA控制器的I/O控制邏輯上,按設備狀態啓動磁頭到相應位置。
啓動DMA控制器控制邏輯開始進行數據傳送
DMA控制器讀入一個數據到數據寄存器DR中,然後傳到內存MAR地址中;
接着MAR+1,DC-1,判斷DC是否爲0,如否,繼續,反之控制器發中斷請求,傳送完畢。
4.I/O通道控制方式
DMA適用於讀一個連續的數據塊;
再進一步減少CPU的干預(減少中斷), 引入通道。
實現對一組數據塊的讀(寫)及有關的控制和管理爲單位的干預。
此時,CPU只需發一條I/O指令,給出通道程序的首地址及要訪問設備即可。
5.通道程序
a.通道是一種通過執行通道程序管理I/O操作的控制器,它使主機(CPU和內存)與I/O操作之間達到更高的並行程度。
b.通道程序
通道 通過執行通道程序,與設備控制器共同實現對I/O設備的控制。
CPU指令——>設備驅動程序解讀——>通道程序——>通道
五. 設備獨立性(無關性)
用戶編程時所用的設備名(邏輯上的)與實際物理設備無關
好處
- 設備分配時的靈活性
- 易於實現I/O重定向
邏輯設備名到物理設備名的映射
- 邏輯設備表LUT(Logical Unit Table)
- LUT的設置問題
整個系統設置一張LUT(設備重名問題)
爲每個用戶設置一張LUT,記入各自PCB。
設備分配
- 所需數據結構:
設備控制表(DCT)
控制器控制表(COCT)
通道控制表(CHCT)
系統設備(總)表(SDT) - 獨佔設備的分配過程
基本分配步驟(一個有通道的例子):
- 分配設備;
根據請求設備名,查找SDT,找到DCT;
狀態、安全性等因素都可能導致本申請進程阻塞,掛入DCT等待隊列中。 - 分配控制器
通過1步分配設備後,從DCT找到COCT;
檢查COCT狀態字,若忙碌,進程PCB掛到其等待隊列 - 分配通道
COCT找到CHCT
判斷狀態,…
當上述三步都通過後,纔可啓動設備進行數據傳輸
設備分配程序的改進細節
- 增加設備的獨立性
進程使用邏輯設備名提出I/O請求。
系統從SDT中依次找下去,直到找到一個該類設備中空閒可用的進行分配。 - 考慮多通路情況
控制器、通道也是反覆查找,直到找到一條通路。