第六章---裝置管理
阿新 • • 發佈:2018-11-28
- 裝置驅動程式
裝置驅動程式——最瞭解裝置控制器的人
裝置驅動程式是I/O系統的高層與裝置控制器之間的通訊程式,其主要任務:
-
- 接收上層軟體發來的抽象I/O要求,如read、write等命令;
- 再把它轉化為具體要求,傳送給裝置控制器,啟動裝置去執行。
- 反方向,它也將由裝置控制器發來的訊號,傳送給上層軟體。
1.驅動程式的功能
- (1)接收由與裝置無關的軟體發來的命令和引數,並將命令中的抽象要求,轉換為與裝置相關的低層操作序列;
- (2)檢查使用者I/O請求的合法性,瞭解I/O裝置的工作狀態,傳遞與I/O裝置操作有關的引數,設定裝置的工作方式;
- (3)發出I/O命令,如果裝置空閒,便立即啟動I/O裝置,完成指定的I/O操作;如果裝置忙碌,則將請求者掛在裝置佇列上等待;
- (4)及時響應由裝置控制器發來的中斷請求,並根據其中斷型別,呼叫相應的中斷處理程式進行處理。
2.裝置驅動程式的特點
- (1)驅動程式是與裝置無關的軟體和裝置控制器之間通訊和轉換的程式。
- (2)驅動程式,與裝置控制器和I/O裝置的硬體特性,緊密相關。
- (3)驅動程式與I/O裝置所採用的I/O控制方式緊密相關。
- (4)由於驅動程式與硬體緊密相關,因而其中的一部分必須用匯編語言編寫。
- (5)驅動程式應允許可重入,一個正在執行的驅動程式常會在一次呼叫完成前被再次呼叫。
3.裝置處理方式
- 具體分類
- (1)為每一類裝置設定一個程序,專門用於執行這類裝置的I/O操作。這種方式比較適合於較大的系統;
- (2)在整個系統中設定一個I/O程序,專門用於執行系統中所有各類裝置的I/O操作。也可以設定一個輸入程序和一個輸出程序,分別處理系統中的輸入或輸出操作;
- (3)不設定專門的裝置處理程序,而只為各類裝置設定相應的裝置驅動程式,供使用者或系統程序呼叫。這種方式目前用得較多。
一次I/O由“驅動程式+中斷程式”一塊處理完成
- 驅動程式的處理過程
- 中斷處理程式的處理過程
- 閱讀課本說明,畫流程圖。
- I/O控制方式
- 程式I/O方式
- 中斷驅動I/O方式
- 直接儲存器訪問DMA(位元組—塊)
- I/O通道控制方式(組織傳送的獨立)
- 宗旨:減少主機對I/O控制的干預,將CPU從繁雜的I/O控制事物中解脫出來。
1)程式I/O方式
cpu對I/O裝置的控制採取程式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裝置並行工作。從而提高了整個系統的資源利用率及吞吐量。
- 但cpu真的不需要干預麼?
- 中斷方式比程式I/O方式更有效
- 但仍以字(節)為單位進行I/O,每當完成一個字(節),控制器便要請求一次中斷。
- CPU雖然可與I/O並行,但效率不高,存在頻繁的中斷干擾。
- 改進:
- CPU下指令通知控制器完成一塊資料的I/O,控制器完成後才發中斷,而不是每個位元組都要向CPU發中斷;
- 多位元組傳輸入記憶體過程不需要CPU搬運,由控制器控制完成(所以稱直接儲存器訪問)——DMA(Direct Memory Access)控制方式引入
3)直接儲存器訪問DMA 方式
①該方式的特點是:
- 資料傳輸的基本單位是資料塊;
- 所傳送的資料是從裝置直接送入記憶體的,或者直接從記憶體進裝置;不需要CPU操作。
- CPU干預進一步減少:僅在傳送一個或多個數據塊的開始和結束時,才需CPU干預,整塊資料的傳送是在控制器的控制下完成的。
可見DMA方式又是成百倍的減少了CPU對I/O的干預,進一步提高了CPU與I/O裝置的並行操作程度。
②DMA控制器的組成
- DMA控制器由三部分組成:
- 主機與DMA控制器的介面;
- DMA控制器與塊裝置的介面;
- I/O控制邏輯。
如下頁圖。
DMA控制器中的暫存器
- 為實現主機與控制器之間塊資料的直接交換,必須設定如下四類暫存器:
- 資料暫存器DR:暫存裝置到記憶體或從記憶體到裝置的資料。
- 記憶體地址暫存器MAR:它存放把資料從裝置傳送到記憶體的起始的目標地址或記憶體原地址。
- 資料計數器DC:存放本次CPU要讀或寫的字(節)數。
- 命令/狀態暫存器CR:用於接收從CPU發來的I/O命令或有關控制和狀態資訊。
③DMA工作過程
- CPU先向磁碟控制器傳送一條讀命令。
- 該命令被送到命令暫存器CR中。
- 同時傳送資料讀入到記憶體的起始地址,該地址被送入MAR中;
- 要讀資料的字數則送入資料計數器DC中;
- 將磁碟中的資料原地址直接送入DMA控制器的I/O控制邏輯上,按裝置狀態啟動磁頭到相應位置。
- 啟動DMA控制器控制邏輯開始進行資料傳送
- DMA控制器讀入一個數據到資料暫存器DR中,然後傳到記憶體MAR地址中;
- 接著MAR+1,DC-1,判斷DC是否為0,如否,繼續,反之控制器發中斷請求,傳送完畢。
4)I/O通道控制方式
- DMA適用於讀一個連續的資料塊;
- 如一次讀多個數據塊到記憶體不同區域,須由CPU分別傳送多條I/O指令、進行多次DMA中斷處理。
- 再進一步減少CPU的干預(減少中斷), 引入通道。
- 實現對一組資料塊的讀(寫)及有關的控制和管理為單位的干預。
- 此時,CPU只需發一條I/O指令,給出通道程式的首地址及要訪問裝置即可。
- * CPU、通道和I/O裝置三者的並行操作通道是一種通過執行通道程式管理I/O操作的控制器,它使主機(CPU和記憶體)與I/O操作之間達到更高的並行程度。由於它的任務是管理實現輸入/輸出操作,提供一種傳送通道,所以將這種部件稱作“通道”。
,提高整系統資源利用率。
µ通道程式
- 通道 通過執行通道程式,與裝置控制器共同實現對I/O裝置的控制。
- 通道程式由一系列通道指令構成。
CPU指令àà裝置驅動程式解讀à通道程式àà通道
- 通道指令一般包含下列資訊:
- 操作碼。規定指令所執行的操作。
- 記憶體地址。
- 計數。表示本指令所要操作的位元組數。
- 通道程式結束位。用以表示程式是否結束。
- 記錄結束標誌。表示該指令是否與下條指令有關。
- 與裝置無關的I/O軟體
- 裝置獨立性的基本含義:
- 指應用程式中所使用的裝置,不侷限於使用某個具體的物理裝置,也稱為裝置無關性。
- 為了實現裝置獨立性,在裝置驅動程式之上設定一層軟體,稱為與裝置無關的I/O軟體,或裝置獨立性軟體。
- 裝置無關的軟體是I/O系統最高層軟體,但它和其下的裝置驅動程式之間的界限,將隨作業系統和裝置的不同而有所差異。
【µ裝置獨立性(無關性)】
—— Device Independence
- 使用者程式設計時所用的裝置名(邏輯上的)與實際物理裝置無關;
好處:
- 裝置分配時的靈活性
3個物理裝置(如印表機),程式中申請一臺印表機,執行時不拘泥必須是某臺(如第2個)印表機
- 易於實現I/O重定向
指用於I/O操作的裝置可以更換(重定向),而不必改變應用程式。 程式除錯、執行中的“列印”,可通過修改邏輯裝置表的顯示終端,實現不同時候的不同的裝置使用。
邏輯裝置名到物理裝置名的對映
裝置分配。
- 多道環境下,系統中裝置是所有程序共享的。要防止無序競爭,提高外設資源的利用率。需由OS進行統一、合理的裝置分配。
1)資料結構
2)裝置分配需考慮的因素
3)裝置的分配過程
- 裝置分配中的資料結構
- 記錄相應裝置或控制器的狀態,及對裝置或控制器進行控制所需的資訊。所需資料結構:
- 裝置控制表
- 控制器控制表
- 通道控制表
- 系統裝置(總)表
- 裝置控制表(DCT)
- 系統為每一裝置都配置一張
- 記錄本裝置的情況。
2)裝置分配需考慮的因素
- 裝置固有屬性:獨佔、共享、獨佔但可虛擬。根據屬性採取互斥、次序排程、虛擬等不同分配策略。
- 裝置分配演算法(對不同程序的裝置請求序列,如何進行選擇),常採用兩種:
- FCFS
- 優先順序高者優先
- 裝置分配的安全性:程序開始I/O後就阻塞直到I/O完成。不“請求和保持”(安全的);允許連續I/O請求,是不安全的,此類分配方式需進行安全性檢查。
- 裝置獨立性
- 使用者IO請求中使用邏輯名申請某類裝置,實際物理名稱是系統根據裝置型別分析分配後才確定的。
3)獨佔裝置的分配過程
- 基本分配步驟(一個有通道的例子):
- 分配裝置:
- 根據請求裝置名,查詢SDT,找到DCT;
- 狀態、安全性等因素都可能導致本申請程序阻塞,掛入DCT等待佇列中。
- 分配控制器
- 通過1步分配裝置後,從DCT找到COCT;
- 檢查COCT狀態字,若忙碌,程序PCB掛到其等待佇列
- 分配通道
- COCT找到CHCT
- 判斷狀態,…
當上述三步都通過後,才可啟動裝置進行資料傳輸
- 裝置分配程式的改進細節
- 增加裝置的獨立性
- 程序使用邏輯裝置名提出I/O請求。
- 系統從SDT中依次找下去,直到找到一個該類裝置中空閒可用的進行分配。
- 考慮多通路情況
- 控制器、通道也是反覆查詢,直到找到一條通路。