第六章----裝置管理
阿新 • • 發佈:2018-11-28
I/O系統的組成
包括:
需要用於輸入、輸出和儲存資訊的裝置;
需要相應的裝置控制器;
控制器與CPU連線的高速匯流排;
有的大中型計算機系統,配置I/O通道;
關於裝置管理
- 管理物件:
- I/O裝置和相應的裝置控制器(I/O系統組成)
- 基本任務:
- 完成使用者提出的I/O請求,
- 提高I/O速率、改善I/O裝置的利用率。
- 為更高層程序方便使用裝置提供手段
第6章 裝置管理
- I/O系統的功能、模型和介面
- I/O裝置和裝置控制器
- 中斷機構和中斷處理程式
- 裝置驅動程式
- 與裝置無關的I/O軟體
- 使用者層的I/O軟體
- 緩衝區管理
- 磁碟儲存器的效能和排程
知識點
- I/O系統的組成
- I/O系統的軟體層次
- 中斷處理過程
- I/O控制方式
- 緩衝管理、裝置分配、裝置處理
- 磁碟排程
1. I/O系統的基本功能及模型
1)主要功能:
-
- 隱藏物理裝置細節,方便使用者
使用者使用抽象的I/O命令即可
-
- 實現裝置無關性,方便使用者
使用者可用抽象的邏輯裝置名來使用裝置,同時也提高了OS的可移植性和易適應性。
-
- 提高處理機和裝置的並行性,提高利用率:緩衝區管理
- 對I/O裝置進行控制:控制方式、裝置分配、裝置處理
- 確保對裝置正確共享:虛擬裝置及裝置獨立性等
- 錯誤處理
2)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系統的組成
包括:
需要用於輸入、輸出和儲存資訊的裝置;
需要相應的裝置控制器;
控制器與CPU連線的高速匯流排;
有的大中型計算機系統,配置I/O通道;
1)I/O裝置的型別
I/O裝置的型別繁多,從OS的觀點,按其重要的效能指標進行分類如下:
- 按傳輸速率分類:
- 低速、中速、高速(鍵盤、印表機、磁碟)
- 使用:儲存裝置、輸入輸出裝置
- 按資訊交換的單位分類:
- 塊裝置:有結構、速率高、可定址、DMA方式控制
- 字元裝置:無結構、速率低、不可定址、中斷方式控制
- 按裝置的共享屬性分類:
- 獨佔:印表機
- 共享:一個時刻上仍然是隻被一個程序佔用。可定址、可隨機訪問的色後備。磁碟。
- 虛擬:使一臺獨佔裝置變換為若干臺邏輯裝置,供給若干使用者“同時使用”。
I/O裝置中的介面
- 與控制器的介面有三種類型的訊號
- 資料訊號線(進出資料轉換、緩衝後傳送)
- 控制訊號線(讀\寫\移動磁頭等控制)
- 狀態訊號線
2)裝置控制器
- 裝置並不直接與CPU通訊
- 計算機中的一個實體——“裝置控制器”負責控制一個或多個I/O裝置,以實現I/O裝置和計算機之間的資料交換。
- 控制器是CPU與I/O裝置之間的介面,作為中間人接收從CPU發來的命令,並去控制I/O裝置工作,以使處理機脫離繁雜的裝置控制事務。
- 常作成介面卡插入計算機
- 可編址,不同類
- 控制一個裝置時只有一個地址,若連線多個裝置則含有多個裝置地址
- 管理的複雜性因不同裝置而異,分為字元裝置控制器、塊裝置控制器。
- ①基本功能
- 接收和識別CPU命令(控制暫存器:存放命令和引數)
- 標識和報告裝置的狀態(狀態暫存器)
- 資料交換(資料暫存器)
- 地址識別(控制器識別裝置地址、暫存器地址。地址譯碼器)
- 資料緩衝(協調I/O與CPU的速度差距)
- 差錯控制
- ②組成
- 裝置控制器與處理機的介面
- 裝置控制器與裝置的介面
- I/O邏輯
µI/O邏輯
- 通過一組控制線與處理機互動
- CPU要啟動一個裝置時,
- 將啟動命令傳送給控制器;
- 同時通過地址線把地址傳送給控制器
- 控制器的I/O邏輯對收到的地址和命令進行譯碼,再根據所譯出的命令選擇裝置進行控制。
- 驅動程式把抽象的I/O命令轉換成一系列具體的命令、引數等資料;如何將上述資料裝入裝置控制器的相應暫存器?從而觸發I/O邏輯運作,實施對裝置的控制。
①利用特定的I/O指令
-
- 早期計算機中:每個控制暫存器分配一個I/O埠,用8或16位整數標記;設定一些特定I/O指令。
- CPU暫存器 —> 控制器暫存器
- io-store cpu-reg,dev-no,dev-reg
- CPU暫存器 —>記憶體
- store cpu-reg,k
- 缺點:訪問記憶體和裝置需要兩種不同指令
②記憶體映像I/O
-
- 統一了對記憶體和對控制器的訪問的方法,簡化了I/O的程式設計。
- 編址不區分記憶體單元地址和裝置控制器中的暫存器地址,都採用k。
- 當k值處於0—n-1範圍時,被認為是記憶體地址
- 若k大於等於n時,被認為是某個控制器的暫存器地址。
③處理機與裝置控制器間
- 實現CPU與裝置控制器之間的通訊。
- 共有三類訊號線:
- 資料線:資料線通常與兩類暫存器相連線,第一類是資料暫存器;第二類是控制/狀態暫存器。
- 地址線
- 控制線
* 微機I/O系統中的匯流排結構
- 如圖所示,計算機系統中的各部件,如CPU、儲存器以及各種I/O裝置之間的聯絡,都是通過匯流排來實現的。
- 匯流排的效能用匯流排的“時鐘頻率”、“頻寬”和相應的匯流排“傳輸速率”等指標來衡量。
3)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共享記憶體
②通道型別
- 根據其控制的外圍裝置的不同型別,資訊交換方式也可分為以下三種類型:
- 位元組多路通道
- 陣列選擇通道
- 陣列多路通道
③“瓶頸”問題
由於通道價格昂貴,致使數量較少,使它成為I/O系統的瓶頸,進而造成系統吞吐量的下降。如下例所示:
- 位元組多路通道
- 一個通道常通過多個子通道連線多個裝置控制器
- 多個裝置,通過非分配型子通道以位元組為單位交叉輪流使用主通道傳輸自己的資料。(圖5-3)
- 主通道掃描子通道速率足夠快,子通道上的裝置速率又不太高時,一般不丟失資訊。
- 適用於並行、低速裝置
- 陣列選擇通道
- 針對高速裝置:分配型子通道
- 裝置利用子通道佔用通道後,一段時間內一直獨佔,直至裝置傳送完畢釋放。
- 利用率低。
- 陣列多路通道
- 結合上述兩種方式。
- 含多個非分配型子通道。資料傳送則按陣列方式進行。
- 解決“瓶頸”問題最有效的辦法便是增加裝置到主機間的通路而不增加通道,如下圖所示:
- 中斷機構和中斷處理程式
中斷在作業系統中有特殊而重要的地位,沒有它就不可能實現多道程式。
中斷是I/O系統最低的一層,也是裝置管理的基礎。
- 中斷簡介
- ⑴中斷和陷入
- 中斷:CPU對I/O裝置發來的中斷訊號的一種響應,中斷是由外部裝置引起的,又稱外中斷。
- 陷入:由CPU內部事件所引起的中斷,通常把這類中斷稱為內中斷或陷入(trap)。
- 中斷和陷入的主要區別:是訊號的來源。
- ⑵中斷向量表
- 中斷向量表:為每種裝置配以相應的中斷處理程式,並把該程式的入口地址,放在中斷向量表的一個表項中,併為每一個裝置的中斷請求,規定一箇中斷號,它直接對應於中斷向量表的一個表項中。
- ⑶對多中斷源的處理方式
①遮蔽(禁止)中斷:
-
- 所有中斷都將按順序依次處理。
- 當處理機正在處理一箇中斷時,將遮蔽掉所有新到的中斷,讓它們等待,直到處理機已完成本次中斷的處理後,處理機再去檢查並處理。
- 優點是簡單,但不能用於對實時性要求較高的中斷請求。
- ②巢狀中斷:
- 中斷優先順序:系統根據不同中斷訊號源,對服務要求的緊急程度的不同,它們分別規定不同的優先順序。
- 當同時有多個不同優先順序的中斷請求時,CPU優先響應最高優先順序的中斷請求;
- 高優先順序的中斷請求,可以搶佔正在執行低優先順序中斷的處理機,該方式類似於基於優先順序的搶佔式程序排程。
- 中斷處理程式
- 主要工作
- ①進行程序上下文的切換
- ②對處理中斷訊號源進行測試
- ③讀取裝置狀態
- ④修改程序狀態
- 中斷處理流程
- 測定是否有未響應的中斷訊號
- 保護被中斷程序的CPU環境
- 轉入相應的裝置處理程式
- 中斷處理
- 恢復CPU的現場