I/O系統的組成
包括:
需要用于輸入、輸出和存儲信息的設備;
需要相應的設備控制器;
控制器與CPU連接的高速總線;
有的大中型計算機系統,配置I/O通道;
I/O軟件的層次結構及層功能
用戶層軟件//產生I/O請求、格式化I/O、Spooling
設備獨立性軟件//映射、保護、分塊、緩沖、分配
設備驅動程序//設置設備寄存器,檢查狀態
中斷處理程序//
硬件//執行I/O操作
設備管理
管理對象:
I/O設備和相應的設備控制器(I/O系統組成)
基本任務:
完成用戶提出的I/O請求
提高I/O速率,改善I/O設備的利用率
為更高層進程方便使用設備提供手段
I/O系統的基本功能
###主要功能:
隱藏物理設備細節,方便用戶
用戶使用抽象的I/O命令即可
實現設備無關性,方便用戶
用戶可用抽象的邏輯設備名來使用設備,同時也提高了OS的可移植性和易適應性。
提高處理機和設備的并行性,提高利用率:緩沖區管理
對I/O設備進行控制:控制方式、設備分配、設備處理
確保對設備正確共享:虛擬設備及設備獨立性等
錯誤處理
I/O系統的層次結構
層次結構:系統中的設備管理模塊分為若干個層次
層間操作:下層為上層提供服務,并完成輸入輸出功能中的某些子功能,并屏蔽功能實現的細節
I/O軟件的分層
用戶層軟件
實現與用戶交互的接口,用戶可直接調用在用戶層提供的、與I/O操作有關的庫函數,對設備進行操作。
設備獨立軟件
用于實現用戶程序與設備驅動器的統一接口、設備命名,設備的保護以及設備的分配與釋放等,同時為設備管理和數據傳送提供必要的存儲空間
設備驅動程序
與硬件直接相關,用于具體實現系統對設備發出的操作指令,驅動I/O設備工作的驅動程序
中斷處理程序
用于保存被中斷進程的CPU環境,轉入相應的中斷處理程序進行處理,處理完后再恢復被中斷進程的線程后,返回到被中斷進程。
I/O軟件系統的層次
中斷處理程序
處于I/O系統的底層,直接與硬件進行交互
設備驅動程序
處于次底層,是進程和控制器之間的通信程序
功能:將上層發來的抽象I/O請求,轉換為對I/O設備的具體命令和參數,轉化為對I/O設備具體命令和參數,并把它裝入到設備控制其中的命令和參數寄存器中。
設備獨立性軟件
包括設備命名,設備分配,數據緩沖等軟件
I/O 系統接口
塊設備
數據的存取和傳輸都是以數據塊為單位的設備
基本特征是傳輸率較高、可尋址。磁盤設備的I/O常采用DMA方式。
特點
隱藏了磁盤的二維結構,塊設備接口隱藏了磁盤地址是二維結構的情況。每個扇區的地址需要用磁道號和扇區號來表示。
將抽象命令映射為底層操作,塊設備接口將上層發來的抽象命令,映射為設備能識別的較低層具體操作。
字符設備
數據的存取和傳輸是以字符為單位的設備,如鍵盤打印機等。基本特征是傳輸速率較底、不可尋址常采用中斷驅動方式。
get和put操作
由于字符設備是不可尋址的,因而對它只能采用順序存取方式。獲取或輸出字符的方式是采用get和put操作
in-control
因字符設備的類型非常多,且差異甚大,系統以統一的方式提供了一種通用的in-control指令來處理他們。
網絡通信接口
通過某種方式把計算機鏈接到網絡上
操作系統必須提供相應的網絡軟件和網絡痛心接口。使得計算機能通過網絡與網絡上其他計算機進行通信。或上網瀏覽。
I/O通道
I/O通道設備的引入
設備控制器已大大減少CPU對I/O的干預
(如承擔了選擇設備,數據轉換、緩沖等功能)
但當主機的外設很多時,CPU的負擔仍然很重。
在CPU和設備控制器之間增設一個硬件機構:“通道”
設置通道后
CPU只需向通道發送一條I/O指令即可不再干預后續操作。
通道形成通道程序,執行I/O操作,完成后向CPU發中斷信號。
主要目的:
建立更獨立的I/O操作,解放CPU。
數據傳送的獨立
I/0操作的組織、管理及結束處理也盡量獨立。
實際上I/O通道是一種特殊的處理機:
指令類型單一,只用于I/O操作;
通道沒有內存,它與CPU共享內存
通道類型
根據其控制的外圍設備的不同類型,信息交換方式也可分為以下三種類型:
字節多路通道
數組選擇通道
數組多路通道
字節多路通道
一個通道常通過多個子通道連接多個設備控制器
多個設備,通過非分配型子通道以字節為單位交叉輪流使用主通道傳輸自己的數據。
數組選擇通道
針對高速設備:分配型子通道
設備利用子通道占用通道后,一段時間內一直獨占,直至設備傳送完畢釋放。
利用率低。
數組多路通道
結合上述兩種方式。
含多個非分配型子通道。數據傳送則按數組方式進行。
中斷
中斷和陷入
中斷:CPU對I/O設備發來的中斷信號的一種響應,中斷是由外部設備引起的,又稱外中斷。
陷入:由CPU內部事件所引起的中斷,通常把這類中斷稱為內中斷或陷入(trap)。
中斷和陷入的主要區別:是信號的來源。
對多中斷源的處理方式
屏蔽(禁止)中斷:
所有中斷都將按順序依次處理。
當處理機正在處理一個中斷時,將屏蔽掉所有新到的中斷,讓它們等待,直到處理機已完成本次中斷的處理后,處理機再去檢查并處理。
優點是簡單,但不能用于對實時性要求較高的中斷請求。
嵌套中斷:
中斷優先級:系統根據不同中斷信號源,對服務要求的緊急程度的不同,它們分別規定不同的優先級。
當同時有多個不同優先級的中斷請求時,CPU優先響應最高優先級的中斷請求;
高優先級的中斷請求,可以搶占正在運行低優先級中斷的處理機,該方式類似于基于優先級的搶占式進程調度
中斷處理程序
主要工作
進行進程上下文的切換
對處理中斷信號源進行測試
讀取設備狀態
修改進程狀態
中斷處理流程
測定是否有未響應的中斷信號
保護被中斷進程的CPU環境
轉入相應的設備處理程序
中斷處理
恢復CPU的現場
設備驅動程序
設備驅動程序是I/O系統的高層與設備控制器之間的通信程序,主要任務是:
接收上層軟件發來的抽象I/O要求如read、write等命令
再把它轉化為具體要求,發送給設備控制器,啟動設備去執行。
反方向,它也將由設備控制器發來的信號傳送給上層軟件
驅動程序的功能
(1)接收由與設備無關的軟件發來的命令和參數,并將命令中的抽象要求,轉化為與設備相關的低層操作序列
(2)檢查用戶I/O請求的合法性,了解I/O設備的工作狀態,傳遞與IO設備操作有關的參數,設置設備的工作方式
(3)發出IO命令,如果設備空閑,便立即啟動IO設備,完成指定的IO操作,如果設備忙碌則獎請求者掛在設備隊列上等待
(4)及時響應由設備控制器發來的中斷請求,并根據其中斷類型,調用相應的中斷處理程序進行處理。
設備驅動程序的特點
(1)驅動程序是與設備無關的軟件和設備控制器之間通信和轉換的程序
(2)驅動程序,與設備控制器和IO設備的硬件特性緊密相關
(3)驅動程序與IO設備所采用的IO控制方式緊密相關。
(4)由于驅動程序與硬件緊密相關,因而其中的一部分必須用匯編編寫
(5)驅動程序應允許可重入,一個正在運行的驅動程序會在一次調用完成前被再次調用。
設備處理方式
具體分類
(1)為每一類設備設置一個進程,專門用于執行這類設備的IO操作,這種方式比較適合于較大的系統
(2)在整個系統中設置一個IO進程,專門用于執行系統中所有各類設備的IO操作也可以設置一個輸入進程合一個輸出進程,分別處理系統中的輸入和輸出操作
(3)不設置專們的設備處理進程而只為各類設備設置相應的設備驅動程序,供用戶或系統進程調用。這種方式目前用得較多。
驅動程序處理過程
I/O設備與控制器間的通信轉換程序
了解抽象命令,了解控制器內部的寄存器結構
與硬件密切相關,每類設備配備一種驅動程序
功能:接受解釋指令(有通道的系統,自動通道程序)、相關判斷、發送設備命令、響應中斷
特點,控制方式不同程序不同,部分固化進硬件,代碼可重入。
IO控制方式
分為
程序IO方式
中斷驅動方式
直接存儲器訪問DMA
IO通道控制方式
宗旨:減少主機對IO控制的干預,將CPU從繁雜的IO控制事務中解脫出來
程序IO方式
cpu對I/O設備的控制采取程序I/O方式,或稱忙—等待方式
向控制器發送一條I/O指令;啟動輸入設備輸入數據;把狀態寄存器busy=1。
然后不斷測試標志。為1:表示輸入機尚未輸完一個字,CPU繼續對該標志測試;直到為0:數據已輸入控制器數據寄存器中。
CPU取控制器中的數據送入內存單元,完成一個字的I/O 。
高速CPU空閑等待低速I/O設備,致使CPU極大浪費。
中斷驅動IO方式
CPU向相應的設備控制器發出一條I/O命令
然后立即返回繼續執行任務。
設備控制器按照命令的要求去控制指定I/O設備。
這時CPU與I/O設備并行操作。
I/O設備輸入數據中,無需CPU干預,因而可使CPU與I/O設備并行工作。從而提高了整個系統的資源利用率及吞吐量。
中斷方式比程序I/O方式更有效
但仍以字(節)為單位進行I/O,每當完成一個字(節),控制器便要請求一次中斷。
CPU雖然可與I/O并行,但效率不高,存在頻繁的中斷干擾。
改進:
CPU下指令通知控制器完成一塊數據的I/O,控制器完成后才發中斷,而不是每個字節都要向CPU發中斷;
多字節傳輸入內存過程不需要CPU搬運,由控制器控制完成(所以稱直接存儲器訪問)——DMA(Direct Memory Access)控制方式引入
直接存儲器訪問DMA方式
該方式的特點是:
數據傳輸的基本單位是數據塊;
所傳送的數據是從設備直接送入內存的,或者直接從內存進設備;不需要CPU操作。
CPU干預進一步減少:僅在傳送一個或多個數據塊的開始和結束時,才需CPU干預,整塊數據的傳送是在控制器的控制下完成的。
可見DMA方式又是成百倍的減少了CPU對I/O的干預,進一步提高了CPU與I/O設備的并行操作程度。
DMA控制器的組成
DMA控制器由三部分組成:
主機與DMA控制器的接口;
DMA控制器與塊設備的接口;
I/O控制邏輯。
IO通道控制方式
DMA適用于讀一個連續的數據塊;
如一次讀多個數據塊到內存不同區域,須由CPU分別發送多條I/O指令、進行多次DMA中斷處理。
再進一步減少CPU的干預(減少中斷), 引入通道。
實現對一組數據塊的讀(寫)及有關的控制和管理為單位的干預。
此時,CPU只需發一條I/O指令,給出通道程序的首地址及要訪問設備即可。
CPU、通道和I/O設備三者的并行操作,提高整系統資源利用率。
設備獨立性的基本含義:
指應用程序中所使用的設備,不局限于使用某個具體的物理設備,也稱為設備無關性。
為了實現設備獨立性,在設備驅動程序之上設置一層軟件,稱為與設備無關的I/O軟件,或設備獨立性軟件。
設備無關的軟件是I/O系統最高層軟件,但它和其下的設備驅動程序之間的界限,將隨操作系統和設備的不同而有所差異。
獨占設備的分配過程
分配設備:
根據請求設備名,查找SDT,找到DCT;
狀態、安全性等因素都可能導致本申請進程阻塞,掛入DCT等待隊列中。
分配控制器
通過1步分配設備后,從DCT找到COCT;
檢查COCT狀態字,若忙碌,進程PCB掛到其等待隊列
分配通道
COCT找到CHCT
判斷狀態,…
當上述三步都通過后,才可啟動設備進行數據傳輸