I/O系統的組成
包括:
需要用於輸入、輸出和存儲信息的設備;
需要相應的設備控制器;
控制器與CPU連接的高速總線;
有的大中型計算機系統,配置I/O通道;
I/O系統的軟件層次
中斷處理過程
I/O控制方式
緩衝管理、設備分配、設備處理
1. I/O系統的基本功能及模型
1.1 I/O系統的功能
1.隱藏物理設備細節,方便用戶
用戶使用抽象的I/O命令即可
2.實現設備無關性,方便用戶
用戶可用抽象的邏輯設備名來使用設備,同時也提高了OS的可移植性和易適應性。
3.提高處理機和設備的並行性,提高利用率:緩衝區管理
4.對I/O設備進行控制:控制方式、設備分配、設備處理
5.確保對設備正確共享:虛擬設備及設備獨立性等
6.錯誤處理
1.2 I/O系統的層次結構和模型
層次結構:系統中的設備管理模塊分爲若干個層次
層間操作:下層爲上層提供服務,完成輸入輸出功能中的某些子功能,並屏蔽功能實現的細節。
①用戶層軟件
實現與用戶交互的接口,用戶可直接調用在用戶層提供的、與I/O操作有關的庫函數,對設備進行操作。
②設備獨立軟件
用於實現用戶程序與設備驅動器的統一接口、設備命名、設備的保護以及設備的分配與釋放等,同時爲設備管理和數據傳送提供必要的存儲空間。
③設備驅動程序
與硬件直接相關,用於具體實現系統對設備發出的操作指令,驅動I/O設備工作的驅動程序。
④中斷處理程序
用於保存被中斷進程的CPU環境,轉入相應的中斷處理程序進行處理,處理完後再恢復被中斷進程的現場後,返回到被中斷進程。
1.3 I/O系統接口
①塊設備接口
數據的存取和傳輸都是以數據塊爲單位的設備。基本特徵是傳輸速率較高、可尋址。磁盤設備的I/O常採用DMA方式。
②流設備接口
字符設備:
1.數據的存取和傳輸是以字符爲單位的設備。如鍵盤、打印機等。基本特徵是傳輸速率較低、不可尋址,常採用中斷驅動方式。
2.get和put操作:
由於字符設備是不可尋址的,因而對它只能採取順序存取方式。(用戶程序)獲取或輸出字符的方法是採用get和put操作。
3.in-control指令:
因字符設備的類型非常多,且差異甚大,系統以統一的方式提供了一種通用的in-control指令來處理它們(包含了許多參數,每個參數表示一個與具體設備相關的特定功能)。
③網絡通信接口
通過某種方式,把計算機連接到網絡上。
操作系統必須提供相應的網絡軟件和網絡通信接口,使得計算機能通過網絡與網絡上的其它計算機進行通信,或上網瀏覽。
2.I/O設備和設備控制器
2.1 I/O設備的類型
I/O設備的類型繁多,從OS的觀點,按其重要的性能指標進行分類如下:
按傳輸速率分類:
低速、中速、高速(鍵盤、打印機、磁盤)
使用:存儲設備、輸入輸出設備
按信息交換的單位分類:
塊設備:有結構、速率高、可尋址、DMA方式控制
字符設備:無結構、速率低、不可尋址、中斷方式控制
按設備的共享屬性分類:
獨佔:打印機
共享:一個時刻上仍然是隻被一個進程佔用。可尋址、可隨機訪問的色後備。磁盤。
虛擬:使一臺獨佔設備變換爲若干臺邏輯設備,供給若干用戶“同時使用”。
I/O設備中的接口
與控制器的接口有三種類型的信號
數據信號線(進出數據轉換、緩衝後傳送)
控制信號線(讀\寫\移動磁頭等控制)
狀態信號線
2.2 設備控制器
控制器是CPU與I/O設備之間的接口,作爲中間人接收從CPU發來的命令,並去控制I/O設備工作,以使處理機脫離繁雜的設備控制事務。
①基本功能
1.接收和識別CPU命令(控制寄存器:存放命令和參數)
2.標識和報告設備的狀態(狀態寄存器)
3.數據交換(數據寄存器)
4.地址識別(控制器識別設備地址、寄存器地址。地址譯碼器)
5.數據緩衝(協調I/O與CPU的速度差距)
6.差錯控制
②組成
1.設備控制器與處理機的接口
2.設備控制器與設備的接口
3.I/O邏輯
③處理機與設備控制器間
實現CPU與設備控制器之間的通信。
共有三類信號線:
1.數據線:數據線通常與兩類寄存器相連接,第一類是數據寄存器;第二類是控制/狀態寄存器。
2.地址線
3.控制線
2.3 I/O通道
①I/O通道設備的引入
CPU只需向通道發送一條I/O指令即可不再幹預後續操作。
通道形成通道程序,執行I/O操作,完成後向CPU發中斷信號。
②通道類型
1.字節多路通道
2.數組選擇通道
3.數組多路通道
③“瓶頸”問題
1.數組選擇通道
針對高速設備:分配型子通道
設備利用子通道佔用通道後,一段時間內一直獨佔,直至設備傳送完畢釋放。
利用率低。
2.數組多路通道
結合上述兩種方式。
含多個非分配型子通道。數據傳送則按數組方式進行。
3.中斷機構和中斷處理程序
中斷是I/O系統最低的一層,也是設備管理的基礎。
3.1 中斷簡介
3.1.1 中斷和陷入
中斷:CPU對I/O設備發來的中斷信號的一種響應,中斷是由外部設備引起的,又稱外中斷。
陷入:由CPU內部事件所引起的中斷,通常把這類中斷稱爲內中斷或陷入(trap)。
中斷和陷入的主要區別:是信號的來源。
3.1.2 中斷向量表
中斷向量表:爲每種設備配以相應的中斷處理程序,並把該程序的入口地址,放在中斷向量表的一個表項中,併爲每一個設備的中斷請求,規定一箇中斷號,它直接對應於中斷向量表的一個表項中。
3.1.3 對多中斷源的處理方式
①屏蔽(禁止)中斷:
所有中斷都將按順序依次處理。
當處理機正在處理一箇中斷時,將屏蔽掉所有新到的中斷,讓它們等待,直到處理機已完成本次中斷的處理後,處理機再去檢查並處理。
優點是簡單,但不能用於對實時性要求較高的中斷請求。
②嵌套中斷:
中斷優先級:系統根據不同中斷信號源,對服務要求的緊急程度的不同,它們分別規定不同的優先級。
當同時有多個不同優先級的中斷請求時,CPU優先響應最高優先級的中斷請求;
高優先級的中斷請求,可以搶佔正在運行低優先級中斷的處理機,該方式類似於基於優先級的搶佔式進程調度。
3.2 中斷處理程序
3.2.1 主要工作
①進行進程上下文的切換
②對處理中斷信號源進行測試
③讀取設備狀態
④修改進程狀態
3.2.2 中斷處理流程
測定是否有未響應的中斷信號
保護被中斷進程的CPU環境
轉入相應的設備處理程序
中斷處理
恢復CPU的現場
4.設備驅動程序
設備驅動程序是I/O系統的高層與設備控制器之間的通信程序,其主要任務:
1.接收上層軟件發來的抽象I/O要求,如read、write等命令;
2.再把它轉化爲具體要求,發送給設備控制器,啓動設備去執行。
3.反方向,它也將由設備控制器發來的信號,傳送給上層軟件。
4.1 驅動程序的功能
①接收由與設備無關的軟件發來的命令和參數並將命令中的抽象要求,轉換爲與設備相關的低層操作序列;
②檢查用戶I/O請求的合法性,瞭解I/O設備的工作狀態,傳遞與I/O設備操作有關的參數,設置設備的工作方式;
③發出I/O命令,如果設備空閒,便立即啓動I/O設備,完成指定的I/O操作;如果設備忙碌,則將請求者掛在設備隊列上等待;
④及時響應由設備控制器發來的中斷請求,並根據其中斷類型,調用相應的中斷處理程序進行處理。
4.2 設備驅動程序的特點
(1)驅動程序是與設備無關的軟件和設備控制器之間通信和轉換的程序。
(2)驅動程序,與設備控制器和I/O設備的硬件特性,緊密相關。
(3)驅動程序與I/O設備所採用的I/O控制方式緊密相關。
(4)由於驅動程序與硬件緊密相關,因而其中的一部分必須用彙編語言編寫。
(5)驅動程序應允許可重入,一個正在運行的驅動程序常會在一次調用完成前被再次調用。
4.3 設備處理方式
具體分類
(1)爲每一類設備設置一個進程,專門用於執行這類設備的I/O操作。這種方式比較適合於較大的系統;
(2)在整個系統中設置一個I/O進程,專門用於執行系統中所有各類設備的I/O操作。也可以設置一個輸入進程和一個輸出進程,分別處理系統中的輸入或輸出操作;
(3)不設置專門的設備處理進程,而只爲各類設備設置相應的設備驅動程序,供用戶或系統進程調用。這種方式目前用得較多。
4.4 驅動程序處理過程
I/O設備與控制器間的通信轉換程序
瞭解抽象命令,瞭解控制器內部的寄存器結構
與硬件密切相關,每類設備配備一種驅動程序
功能:接受解釋指令(有通道的系統,自動通道程序)、相關判斷、發送設備命令、響應中斷
特點,控制方式不同程序不同,部分固化進硬件,代碼可重入。
4.5. I/O控制方式
程序I/O方式
中斷驅動I/O方式
直接存儲器訪問DMA(字節—塊)
I/O通道控制方式(組織傳送的獨立)
宗旨:減少主機對I/O控制的干預,將CPU從繁雜的I/O控制事物中解脫出來。
5.與設備無關的I/O軟件
設備獨立性的基本含義:
指應用程序中所使用的設備,不侷限於使用某個具體的物理設備,也稱爲設備無關性。
爲了實現設備獨立性,在設備驅動程序之上設置一層軟件,稱爲與設備無關的I/O軟件,或設備獨立性軟件。
設備無關的軟件是I/O系統最高層軟件,但它和其下的設備驅動程序之間的界限,將隨操作系統和設備的不同而有所差異。
5.1 設備分配中的數據結構
記錄相應設備或控制器的狀態,及對設備或控制器進行控制所需的信息。所需數據結構:
設備控制表
控制器控制表
通道控制表
系統設備(總)表
5.2 設備分配需考慮的因素
設備固有屬性:獨佔、共享、獨佔但可虛擬。根據屬性採取互斥、次序調度、虛擬等不同分配策略。
設備分配算法(對不同進程的設備請求序列,如何進行選擇),常採用兩種:
FCFS
優先級高者優先
設備分配的安全性:進程開始I/O後就阻塞直到I/O完成。不“請求和保持”(安全的);允許連續I/O請求,是不安全的,此類分配方式需進行安全性檢查。
設備獨立性
用戶IO請求中使用邏輯名申請某類設備,實際物理名稱是系統根據設備類型分析分配後才確定的。
5.3 獨佔設備的分配過程
基本分配步驟(一個有通道的例子):
1.分配設備:
根據請求設備名,查找SDT,找到DCT;
狀態、安全性等因素都可能導致本申請進程阻塞,掛入DCT等待隊列中。
2.分配控制器
通過1步分配設備後,從DCT找到COCT;
檢查COCT狀態字,若忙碌,進程PCB掛到其等待隊列
3.分配通道
COCT找到CHCT
判斷狀態,…
當上述三步都通過後,纔可啓動設備進行數據傳輸