操作系統(tǒng):第7章 設(shè)備管理_第1頁
操作系統(tǒng):第7章 設(shè)備管理_第2頁
操作系統(tǒng):第7章 設(shè)備管理_第3頁
操作系統(tǒng):第7章 設(shè)備管理_第4頁
操作系統(tǒng):第7章 設(shè)備管理_第5頁
已閱讀5頁,還剩90頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第7 章 設(shè)備管理 設(shè)備管理是操作系統(tǒng)的重要組成部分之一,它管理和控制I/O設(shè)備。由于I/O設(shè)備種類繁多,與計算機(jī)連接方式復(fù)雜而多樣,因而設(shè)備管理就是一個相當(dāng)龐大復(fù)雜的功能模塊。本章主要討論設(shè)備管理的基本概念,包括中斷、通道、緩沖、設(shè)備分配和I/O控制,以及最常用的存儲設(shè)備磁盤的驅(qū)動調(diào)度等。7.1 設(shè)備管理概述7.2 磁盤的驅(qū)動調(diào)度7.3 中斷技術(shù)7.4通道技術(shù)7.5 緩沖技術(shù)7.6 設(shè)備分配7.7 虛擬設(shè)備7.8 I/O進(jìn)程控制7.9 設(shè)備驅(qū)動程序7.10 本章小節(jié)7.1 設(shè)備管理概述 在計算機(jī)系統(tǒng)中,除了CPU和內(nèi)存之外,其他的大部分硬設(shè)備稱為外部設(shè)備。它包括常用的輸入輸出設(shè)備、外存設(shè)備以

2、及終端設(shè)備等。本節(jié)先從系統(tǒng)管理的角度將各種設(shè)備進(jìn)行簡單的分類,再介紹設(shè)備管理的主要功能與任務(wù),最后簡單地提到數(shù)據(jù)的傳送方式。7.1.1 設(shè)備的類別外部設(shè)備可以從不同角度進(jìn)行分類:按設(shè)備的使用特性分,可分為存儲設(shè)備、輸入輸出設(shè)備、終端設(shè)備以及脫機(jī)設(shè)備等。按設(shè)備的從屬關(guān)系,可把設(shè)備劃分為系統(tǒng)設(shè)備和用戶設(shè)備。此外在有的系統(tǒng)中還按信息組織方式來劃分設(shè)備。把外部設(shè)備劃分為字符設(shè)備和塊設(shè)備。脫機(jī)設(shè)備鍵盤打印機(jī)顯示器圖形輸入/ 輸出設(shè)備圖像輸入/ 輸出設(shè)備繪圖儀聲音輸入/ 輸出設(shè)備網(wǎng)絡(luò)通信板其他輸入/ 輸出設(shè)備外 部 設(shè) 備磁帶磁盤軟盤硬盤其他 (磁鼓、光盤等)存儲設(shè)備會話型批處理型智能終端通用終端專用終端

3、虛終端終端設(shè)備按使用特性對外部設(shè)備的分類 7.1.2 設(shè)備管理的功能和任務(wù) 設(shè)備管理是對計算機(jī)輸入輸出系統(tǒng)的管理。對設(shè)備管理的目的在于簡化設(shè)備管理程序。由于設(shè)備管理程序是和硬件打交道的,因此,不同的設(shè)備硬件對應(yīng)于不同的管理程序。設(shè)備管理的主要任務(wù)是: (1)選擇和分配輸入輸出設(shè)備以便進(jìn)行數(shù)據(jù)傳輸操作; (2)控制輸入輸出設(shè)備和CPU(或內(nèi)存)之間交換數(shù)據(jù); (3)為用戶提供一個友好的透明接口; (4)提高設(shè)備和設(shè)備之間、CPU和設(shè)備之間,以及進(jìn)程和進(jìn)程之間的并行操作度,以提高操作系統(tǒng)的效率。設(shè)備管理程序的功能:(1)提供和進(jìn)程管理系統(tǒng)的接口。(2)進(jìn)行設(shè)備分配。(3)實現(xiàn)設(shè)備和設(shè)備、設(shè)備和CP

4、U等之間的并行操作,這需要有相應(yīng)的硬件支持。(4)進(jìn)行緩沖區(qū)管理。7.1.3 數(shù)據(jù)傳送控制方式外圍設(shè)備和內(nèi)存之間的常用數(shù)據(jù)傳送方式有4種,即:(1)程序直接控制方式;(2)中斷控制方式:(3)DMA方式,(4)通道方式。選擇和衡量控制方式遵循如下幾條原則:(1)數(shù)據(jù)傳送速度足夠高,能滿足用戶的需要但又不丟失數(shù)據(jù);(2)系統(tǒng)開銷小,所需的處理控制程序少;(3)能充分發(fā)揮硬件資源的能力,使得IO設(shè)備盡量忙,而CPU等待時間少。7.2 磁盤的驅(qū)動調(diào)度 磁盤的驅(qū)動方式不同,從磁盤上獲得信息的時間也不同,影響信息獲得的時間還有數(shù)據(jù)在磁盤上的分布。7.2.1磁盤的結(jié)構(gòu) 磁盤機(jī)是一種高速、大容量、旋轉(zhuǎn)型的存

5、儲設(shè)備,它能把信息記錄在盤片上,也能把盤片上的信息讀出。每個盤片有正反兩面,若干張盤片可以組成一個磁盤組。 每個盤面有一個讀寫磁頭,把所有的讀寫磁頭按從上到下的次序從0開始進(jìn)行編號,稱為“磁頭號”。 每個盤面上有許多磁道,從0開始按由外向里的次序順序編號,把盤面上的磁道號稱為“柱面號” 。 在磁盤初始化時把每個盤面劃分成相等數(shù)量的扇區(qū),按磁盤旋轉(zhuǎn)的反向從0開始給各扇區(qū)編號,稱為“扇區(qū)號”。 每個扇區(qū)的各磁道上均可存放相等數(shù)量的字符,我們稱它為“塊”,塊是信息讀寫的最小單位。要確定一個塊所在的位置必須給出三個參數(shù):柱面號、磁頭號、扇區(qū)號。磁盤的結(jié)構(gòu)如下圖所示。 啟動磁盤執(zhí)行輸入輸出操作時,要把移

6、動臂移動到指定的柱面,再等待指定的扇區(qū)旋轉(zhuǎn)到磁頭位置下,然后讓指定的磁頭進(jìn)行讀寫,完成信息傳送。因此,執(zhí)行一次輸入輸出所花的時間有:尋找時間磁頭在移動臂帶動下移動到指定柱面所花的時間。延遲時間指定扇區(qū)旋轉(zhuǎn)到磁頭下所需的時間。傳送時間由磁頭進(jìn)行讀寫完成信息傳送的時間。 傳送信息所花的時間是硬件設(shè)計就固定的,而尋找時間和延遲時間是與信息在磁盤上的位置有關(guān) 。 各磁盤塊的編號按柱面順序(從0號柱面開始),每個柱面按磁道順序,每個磁道又按扇區(qū)順序進(jìn)行排序。假定用T表示每個柱面上的磁道數(shù),用S表示每個盤面上的扇區(qū)數(shù),則第i柱面,j磁頭,k扇區(qū)所對應(yīng)的塊號b可有如下公式確定: b=k+S*(j+i*T)

7、在上述的假定下,每個柱面上有S*T個磁盤塊,為了計算第P塊在磁盤上的位置,可以令D=S*T,設(shè)M=PD,N=P mod D。于是,第P塊在磁盤上的位置為:柱面號=M磁頭號=NS扇區(qū)號=N mod S7.2.2 磁盤的驅(qū)動調(diào)度 為了使尋找時間和延遲時間盡可能小,系統(tǒng)往往采用一定的調(diào)度策略來決定各等待訪問者的執(zhí)行次序,這項工作稱磁盤的“驅(qū)動調(diào)度”,采用的調(diào)度算法稱“驅(qū)動調(diào)度算法”。對磁盤來說,驅(qū)動調(diào)度有“移臂調(diào)度”和“旋轉(zhuǎn)調(diào)度”兩部分組成。一、移臂調(diào)度 根據(jù)訪問者指定的柱面位置來決定執(zhí)行次序的調(diào)度稱“移臂調(diào)度“,移臂調(diào)度的目的是盡可能地減少輸入輸出操作中的尋找時間。常用的移臂調(diào)度算法有先來先服務(wù)算

8、法、最短尋找時間優(yōu)先算法、電梯調(diào)度算法和單向掃描算法。1.先來先服務(wù)調(diào)度算法 “先來先服務(wù)”調(diào)度算法是最簡單的移臂調(diào)度算法,它不考慮訪問者要求訪問的物理位置,而只是考慮訪問者提出訪問請求的先后次序。在例子中假設(shè)柱面的編號從0到199。例如,如果現(xiàn)在讀寫磁頭正在53號柱面上執(zhí)行輸入輸出操作,而等待訪問者依次要訪問的柱面為98,183,37,122,14,124,65,67。那么,當(dāng)53號柱面上的操作結(jié)束后,訪問柱面的次序為98,183,37,122,14,124,65,67。 采用先來先服務(wù)算法決定等待訪問者執(zhí)行輸入輸出操作的次序時,移動臂將來回地移動,讀寫磁頭總共移動了640個柱面的距離。先來

9、先服務(wù)算法花費的尋找時間較長,因而執(zhí)行輸入輸出操作的總時間也很長。 2.最短尋找時間優(yōu)先調(diào)度算法 “最短尋找時間優(yōu)先”調(diào)度算法總是從等待訪問者中挑選尋找時間最短的那個請求先執(zhí)行,而不管訪問者到來的先后次序。例如,如果現(xiàn)在讀寫磁頭正在53號柱面上執(zhí)行輸入輸出操作,而等待訪問者依次要訪問的柱面為98,183,37,122,14,124,65,67。那么,現(xiàn)在當(dāng)53號柱面的操作結(jié)束后,訪問次序為65、67、37、14,98,122,124,183。 采用最短尋找時間優(yōu)先算法決定等待訪問者執(zhí)行輸入輸出操作的次序時,讀寫磁頭總共移動了236個柱面的距離。與先來先服務(wù)算法比較,大幅度地減少了尋找時間。因而

10、縮短了為各訪問者服務(wù)的平均時間,也就提高了系統(tǒng)效率。3. 電梯調(diào)度算法 “電梯調(diào)度”算法總是從移動臂當(dāng)前位置開始沿著臂的移動方向去選擇離當(dāng)前移動臂最近的那個柱面的訪問者,如果沿臂的移動方向無請求訪問時,就改變臂的移動方向再選擇。 例如,如果現(xiàn)在讀寫磁頭正在53號柱面上執(zhí)行輸入輸出操作,而等待訪問者依次要訪問的柱面為98,183,37,122,14,124,65,67。由于該算法是與移動臂的方向有關(guān),所以,應(yīng)分兩種情況來討論。(1)移動臂是向外移的。當(dāng)前正在53號柱面執(zhí)行操作的讀寫磁頭是移動臂由里向外(向0號柱面方向)帶到53號柱面的位置,因此,當(dāng)訪問53號柱面的操作結(jié)束后,依次訪問的次序為37

11、、14,65,67,98,122,124,183。讀寫磁頭共移動了208個柱面的距離。(2)移動臂是向里移的。當(dāng)前正在53號柱面執(zhí)行操作的讀寫磁頭是移動臂由外向里(向柱面號增大方向)帶到53號柱面的位置,因此,當(dāng)訪問53號柱面的操作結(jié)束后,依次訪問的次序為65、67,98,122,124,183、37,14柱面的訪問者服務(wù)。讀寫磁頭共移動了299個柱面的距離。 “電梯調(diào)度”與“最短尋找時間優(yōu)先”的比較: 相同:都是盡量減少移動臂移動時所化的時間; 不同:“最短尋找時間優(yōu)先”不考慮臂的移動方向; “電梯調(diào)度”考慮臂的移動方向。 優(yōu)點:電梯調(diào)度算法是一種簡單、實用且高效的調(diào)度算法。 缺點:由于移動

12、臂改變方向是機(jī)械動作,速度相對較慢。 在實現(xiàn)時除了要記住讀寫磁頭的當(dāng)前位置外,還必須記住移動臂的移動方向。4.單向掃描調(diào)度算法 “單向掃描”調(diào)度算法也不管等待訪問者的先后次序,總是從0號柱面開始向里掃描,按照各訪問者所要訪問的柱面位置的次序去選擇訪問者。移動臂到達(dá)最后一個柱面后,立即帶動讀寫磁頭快速返回到0號柱面,返回時不為任何的等待訪問者服務(wù),返回后可再次進(jìn)行掃描。例如,如果現(xiàn)在讀寫磁頭正在53號柱面上執(zhí)行輸入輸出操作,而等待訪問者依次要訪問的柱面為98,183,37,122,14,124,65,67。執(zhí)行次序為65,67,98,122,124,183、14,37。除了移動臂由里向外返回(從

13、199返回到0)所用的時間外,讀寫磁頭還需移動183個柱面的距離。調(diào)度算法比較:除了“先來先服務(wù)”調(diào)度算法外,其余三種調(diào)度算法都是根據(jù)欲訪問的柱面位置來進(jìn)行調(diào)度的。在調(diào)度過程中可能有新的請求訪問者加入,這些新的請求訪問者加入時,如果讀寫磁頭已經(jīng)超過了它們所要訪問的柱面位置,則只能在以后的調(diào)度中被選擇執(zhí)行。 在多道程序設(shè)計系統(tǒng)中,在等待訪問磁盤的若干請求訪問者中,有些請求訪問者可能要求訪問的柱面號相同,但各自要求訪問同一柱面上的不同磁道,或訪問同一柱面同一磁道上不同扇區(qū)。所以,在進(jìn)行移臂調(diào)度時,按照某種算法把移動臂定位到某個柱面后,應(yīng)讓等待訪問這個柱面的各個訪問者的輸入輸出操作都完成后再改變移動

14、臂的位置。二、旋轉(zhuǎn)調(diào)度 當(dāng)移動臂定位后,有多個訪問者等待訪問該柱面時,決定這些等待訪問者的執(zhí)行次序是從減少輸入輸出操作總時間為目標(biāo)考慮。根據(jù)延遲時間來決定執(zhí)行次序的調(diào)度稱為“旋轉(zhuǎn)調(diào)度”。進(jìn)行旋轉(zhuǎn)調(diào)度時應(yīng)分析下列情況:(1)若干等待訪問者請求訪問同一磁道上的不同扇區(qū)。(2)若干等待訪問者請求訪問不同磁道上的不同扇區(qū)。(3)若干等待訪問者請求訪問不同磁道上相同扇區(qū)。 對于前兩種情況,旋轉(zhuǎn)調(diào)度總是讓首先到達(dá)讀寫磁頭位置下的扇區(qū)先進(jìn)行傳送操作。對于第三種情況,這些扇區(qū)同時到達(dá)讀寫磁頭位置下,旋轉(zhuǎn)調(diào)度可任意選擇一個讀寫頭進(jìn)行傳送操作。例如,有4個訪問5號柱面的請求訪問者,它們的訪問要求如下表所示。對它們

15、進(jìn)行旋轉(zhuǎn)調(diào)度后,它們的執(zhí)行次序可能是,或,。請求次序柱面號磁頭號扇區(qū)號541515545528三、信息的優(yōu)化分布 信息在磁道上的排列方式也會影響輸入輸出操作的時間。例如,某系統(tǒng)對磁盤初始化時把每條盤面分成8個扇區(qū),今有8條邏輯記錄被存放在同一條磁道上供處理程序使用,處理程序要求順序處理這8條記錄,每次請求從磁盤上讀一條記錄,然后對讀出的記錄要花5毫秒的時間進(jìn)行處理,以后再讀下一條記錄進(jìn)行處理,直至8條記錄都處理結(jié)束。假定磁盤轉(zhuǎn)速為20毫秒周,現(xiàn)把這8條邏輯記錄依次存放在磁道上,如下圖 (a)所示。 顯然,讀一條記錄要花2.5毫秒的時間。當(dāng)花了2.5毫秒的時間讀出第1條記錄并花5毫秒時間進(jìn)行處理

16、后,讀寫磁頭已經(jīng)在第4條記錄的位置,為了順序處理第2條記錄,必須等待磁盤把第2條記錄旋轉(zhuǎn)到讀寫磁頭位置下面,即要有15毫秒的延遲時間。于是,處理這8條記錄所要花費的時間為 : 8*(2.5十5)十7*15=165(ms)。 (a) (b) 如果我們把這8條邏輯記錄在磁道上的位置重新安排一下, (b)是這8條邏輯記錄的最優(yōu)分布。處理這8個記錄所要花費的時間為: 8*(2.5+5)=60(ms)。 可見記錄的優(yōu)化分布有利于減少延遲時間,從而縮短了輸入輸出操作的時間。7.3 中斷技術(shù) 在外圍設(shè)備和內(nèi)存之間的常用的4種數(shù)據(jù)傳送方式中,除了程序直接控制方式之外,無論是中斷控制方式,DMA方式還是通道控制

17、方式,都不得不需要在設(shè)備和CPU之間進(jìn)行通信,由設(shè)備向CPU發(fā)送中斷信號之后,CPU接收相應(yīng)的中斷信號進(jìn)行處理。這幾種方式的區(qū)別是中斷處理的次數(shù)、數(shù)據(jù)傳送方式以及控制指令的執(zhí)行方式等。中斷在設(shè)備管理中占有重要的地位。7.3.1 中斷及其基本概念 中斷(Interrupt)是指計算機(jī)在執(zhí)行期間,系統(tǒng)內(nèi)發(fā)生非尋常的急需處理事件,使得CPU暫時中斷當(dāng)前正在執(zhí)行的程序而轉(zhuǎn)去執(zhí)行相應(yīng)的事件處理程序,待處理完畢后又返回原來被中斷處繼續(xù)執(zhí)行或執(zhí)行優(yōu)先級高的新進(jìn)程。 引起中斷發(fā)生的事件被稱為中斷源。中斷源向CPU發(fā)出的請求中斷處理信號稱為中斷請求,而CPU收到中斷請求后轉(zhuǎn)相應(yīng)的事件處理程序稱為中斷響應(yīng)。在有些

18、情況下,盡管中斷源發(fā)出了中斷請求,但CPU內(nèi)部的處理機(jī)狀態(tài)字PSW的中斷允許位已被清除,從而不允許CPU響應(yīng)中斷。這種情況稱為禁止中斷。CPU禁止中斷后只有等到PSW的中斷允許位被重新設(shè)置后才能接收中斷。禁止中斷也稱為關(guān)中斷,PSW的中斷允許位的設(shè)置也被稱為開中斷。中斷請求、關(guān)中斷、開中斷等都是由硬件實現(xiàn)的。開中斷和關(guān)中斷是為了保證某些程序執(zhí)行的原子性。中斷屏蔽是指在中斷請求產(chǎn)生后,系統(tǒng)用軟件方式有選擇地封鎖部分中斷而允許其余部分的中斷仍能得到響應(yīng)。 中斷屏蔽是通過每一類中斷源設(shè)置一個中斷屏蔽觸發(fā)器來屏蔽它們的中斷請求而實現(xiàn)的。7.3.2 中斷處理過程 一旦CPU響應(yīng)中斷,轉(zhuǎn)入中斷處理程序,系

19、統(tǒng)就開始進(jìn)行中斷處理。中斷處理過程如下:(1)CPU檢查響應(yīng)中斷的條件是否滿足,CPU響應(yīng)中斷的條件是:有來自于中斷源的中斷請求,CPU允許中斷。 (2)如果CPU響應(yīng)中斷,則CPU關(guān)中斷,使其進(jìn)入不可再次響應(yīng)中斷狀態(tài)。(3)保存被中斷進(jìn)程現(xiàn)場。 (4)分析中斷原因,調(diào)用中斷處理子程序。(5)執(zhí)行中斷處理子程序。 (6)退出中斷,恢復(fù)被中斷進(jìn)程的現(xiàn)場或調(diào)度新進(jìn)程所占據(jù)處理機(jī)。(7)開中斷,CPU繼續(xù)執(zhí)行。7.3.3 中斷優(yōu)先級與多重中斷一、中斷的分類及中斷優(yōu)先級 根據(jù)系統(tǒng)對中斷處理的需要,操作系統(tǒng)一般對中斷進(jìn)行分類并對不同的中斷賦予不同的處理優(yōu)先級,以便在不同的中斷同時發(fā)生時,按輕重緩急進(jìn)行處

20、理。 根據(jù)中斷產(chǎn)生的條件,可把中斷分為外中斷和內(nèi)中斷。 外中斷是指來自處理機(jī)和內(nèi)存外部的中斷,包括I/O設(shè)備發(fā)出的I/O中斷、外部信號中斷(例如用戶鍵入的ESC鍵)、各種定時器引起的時鐘中斷以及程序中設(shè)置的斷點等引起的調(diào)試中斷等。外中斷在狹義上一般被稱為中斷。 內(nèi)中斷主要指在處理機(jī)和內(nèi)存內(nèi)部產(chǎn)生的中斷。內(nèi)中斷一般稱為陷阱(trap)。它包括程序運算引起的各種錯誤,如地址非法、校驗錯、用戶程序執(zhí)行特權(quán)指令、分時系統(tǒng)中的時間片中斷以及從用戶態(tài)到核心態(tài)的切換等都是陷阱的例子。 各中斷源的優(yōu)先級在系統(tǒng)設(shè)計時給定,在系統(tǒng)運行時是固定的。而陷阱的優(yōu)先級則根據(jù)執(zhí)行情況由系統(tǒng)程序動態(tài)設(shè)定。 除了在優(yōu)先級的設(shè)置

21、方面有區(qū)別之外,中斷和陷阱還有如下區(qū)別:(1)陷阱通常由處理機(jī)正在執(zhí)行的現(xiàn)行指令性引起,而中斷則是由與現(xiàn)行指令無關(guān)的中斷源引起的。(2)陷阱的處理程序提供的服務(wù)為當(dāng)前進(jìn)程所用,而中斷處理程序提供的服務(wù)則不是為了當(dāng)前進(jìn)程的。(3) CPU在執(zhí)行完一條指令之后,下一條指令開始之前響應(yīng)中斷,而在一條指令執(zhí)行中也可以響應(yīng)陷阱。 中斷和陷阱都可以看作是硬中斷,因為這些中斷和陷阱要通過硬件產(chǎn)生相應(yīng)的中斷請求。 軟中斷是通信進(jìn)程之間用來模擬硬中斷的一種信號通信方式。 軟中斷與硬中斷相同的地方是:其中斷源發(fā)中斷請求或軟中斷信號后,CPU或接收進(jìn)程在適當(dāng)?shù)臅r機(jī)自動進(jìn)行中斷處理或完成軟中斷信號所對應(yīng)的功能。這里用

22、“適當(dāng)?shù)臅r機(jī)”幾個字是表示接收軟中斷信號的進(jìn)程不一定正好在接收時占有處理機(jī),而相應(yīng)的處理機(jī)必須等到接收進(jìn)程得到處理機(jī)之后才能進(jìn)行。二、多重中斷 系統(tǒng)既然按中斷源的優(yōu)先級來對中斷請求做出響應(yīng),那么肯定會出現(xiàn)在執(zhí)行某一中斷處理程序時又有更高一級的中斷請求出現(xiàn)的情況。這就需要暫停當(dāng)前的中斷處理程序,轉(zhuǎn)去進(jìn)行新的中斷處理。這種重疊中斷的現(xiàn)象稱為多重中斷,又稱為中斷嵌套。一般情況下,在處理某級中的某個中斷時,與它同級的或比它低級的中斷請求均被屏蔽,不予響應(yīng),只有在處理完后再去響應(yīng)和處理它們。而比它優(yōu)先級高的中斷請求卻能中斷它的處理。7.4 通道技術(shù) 中斷可以使設(shè)備與設(shè)備、設(shè)備與CPU之間實現(xiàn)并行處理,但

23、并行程度不高,為了提高并行度引入了通道。7.4.1 通道的引入 雖然中斷的引入改善了CPU的利用率,基本具有了使輸入輸出設(shè)備和處理機(jī)能更好地并行工作的條件。但是IO操作畢竟還是直接由CPU控制的。為把CPU從這種繁忙的事務(wù)中解脫出來,使IO設(shè)備管理不再依賴CPU,通道技術(shù)應(yīng)運而生。一、通道的概念及其功能 “通道”是一種硬件設(shè)施,本質(zhì)上是一臺專門用來管理IO的小型處理機(jī),它根據(jù)來自CPU的IO操作指令,以獨立于CPU的方式執(zhí)行有關(guān)的通道程序,承擔(dān)起IO操作的組織、管理、數(shù)據(jù)傳送以及結(jié)束處理等工作。只有在結(jié)束了CPU委托的IO任務(wù)之后才發(fā)出中斷信號,請求CPU。 通道的基本功能是執(zhí)行通道指令、組織

24、外圍設(shè)備和內(nèi)存進(jìn)行數(shù)據(jù)傳輸,按I/O指令要求啟動外圍設(shè)備,向CPU發(fā)出中斷等,具體有以下五項功能:(1)接受CPU的I/O指令,按指令要求與指定的外圍設(shè)備進(jìn)行通訊;(2)從內(nèi)存中取出屬于該通道程序的指令,經(jīng)譯碼后向設(shè)備控制器和設(shè)備發(fā)出各種命令;(3)組織外圍設(shè)備和內(nèi)存之間進(jìn)行數(shù)據(jù)傳輸,并根據(jù)需要提供數(shù)據(jù)中間緩沖的空間,以及提供數(shù)據(jù)存入內(nèi)存的地址和傳送的數(shù)據(jù)量;(4)從外圍設(shè)備得到設(shè)備的狀態(tài)信息,形成并保存通道本身的狀態(tài)信息,根據(jù)要求將這些狀態(tài)送到內(nèi)存的指定單元,供CPU使用;(5)將外圍設(shè)備的中斷請求和通道本身的中斷請求,按次序及時報告CPU。二、通道的連接 通道的出現(xiàn)使CPU基本上擺脫了IO

25、的處理事務(wù),充分保證了CPU與外設(shè)操作的并行進(jìn)行,從而使整個計算機(jī)系統(tǒng)的效率有可能大大提高。 系統(tǒng)引入了通道之后,整個輸入輸出系統(tǒng)結(jié)構(gòu)呈現(xiàn)如下圖所示的四級連接、三級控制。設(shè)備1設(shè)備2設(shè)備3設(shè)備4控制器1控制器2通道1通道2CPU設(shè)備5設(shè)備6設(shè)備7設(shè)備8控制器3控制器4 通道控制器和設(shè)備之間的連接,還可以采用下圖的多通路連接方案。使每臺設(shè)備與主機(jī)的連接有多條道路。 將兩圖連接方式做一比較,不難看出采用后一圖的多通路連接方式,四臺設(shè)備中的任意二臺都可同時啟動,效率高,具有靈活性。設(shè)備1設(shè)備2設(shè)備3設(shè)備4控制器1控制器2通道1通道2CPU7.4.2 通道類型按信息交換的方式和連接設(shè)備的不同,通道可分

26、為四類。1.字節(jié)多路通道 它是為連接大量慢速或中速外部設(shè)備的,如軟盤輸入輸出機(jī)、紙帶輸入輸出機(jī)。 按字節(jié)交叉方式工作,即為一臺設(shè)備傳送一個字節(jié)后,便立即騰出字節(jié)多路通道轉(zhuǎn)去為另一臺設(shè)備傳送一個字節(jié)。 由于字節(jié)通道的速度較高,最大信息流通量每秒可達(dá)幾十K字節(jié),而所連接的又主要是低速設(shè)備,因此完全能以這種交叉方式來同時為多臺慢速設(shè)備服務(wù)。2.選擇通道 選擇通道的數(shù)據(jù)傳送是按成組方式進(jìn)行的,即每次傳送一批數(shù)據(jù),故傳送速度很高。 它主要用于連接磁帶、磁鼓和磁盤等高速外存儲設(shè)備。 特點是以CPU委托的IO操作做為一次服務(wù)的對象,所以它在一段時間內(nèi)只能為一個設(shè)備工作,完成了這一IO請求后,再轉(zhuǎn)去為另一臺設(shè)

27、備服務(wù)。 選擇通道是一種獨占型通道。因此這種方式的通道利用率是較低的。 3.數(shù)組多路通道 數(shù)組多路通道是結(jié)合了選擇通道傳送效率高,字節(jié)多路通道能進(jìn)行分時并行操作的優(yōu)點而形成的又一種通道方式,它具有很高的數(shù)據(jù)傳送速率,又可獲得令人滿意的通道利用率,被廣泛地用來連接高、中速外部設(shè)備。 數(shù)組多路通道可同時連接多臺外部設(shè)備,數(shù)據(jù)傳送按成組方式進(jìn)行,幾個通道程序分時并行工作。卡片輸入機(jī)卡片輸入機(jī)打印機(jī)2打印機(jī)1處理機(jī)存儲器字節(jié)多路通道選擇通道數(shù)組多路通道磁盤磁帶IBM370系統(tǒng)的結(jié)構(gòu)的示意圖 4.通道適配器 在某些系統(tǒng)中,還常配有通道適配器,如磁盤文件適配器、控制臺適配器等。 通道適配器是將通道與某種設(shè)

28、備控制器結(jié)合在一起的專用性質(zhì)的通道。它用于某些特定的設(shè)備相連接,這些設(shè)備一般是系統(tǒng)常用的或必備的。它的邏輯設(shè)計是針對專用設(shè)備,適配器和設(shè)備之間只有專用接口線。 由于通道適配器不具有通用性,是通道和設(shè)備控制器結(jié)合在一起形成的,因此它的性能價格比要比一般通道的高。又因為它所連接的設(shè)備大部分是系統(tǒng)必用的,所以它的專用性并不影響它的廣泛使用。7.4.3 通道指令和通道程序一、通道指令 由于通道專門用于IO的處理機(jī),有自己的指令系統(tǒng),被稱為通道指令或通道命令字(CCW),一般有如下三組基本的命令: (1)數(shù)據(jù)傳輸讀、反讀、寫、斷定(讀設(shè)備狀態(tài)); (2)設(shè)備控制換頁,磁帶反繞等; (3)轉(zhuǎn)移通道程序內(nèi)部

29、的控制轉(zhuǎn)移, 通道命令由操作碼、數(shù)據(jù)地址、特征位和交換字節(jié)個數(shù)等組成,IBM系統(tǒng)的通道命令格式為:操作碼數(shù)據(jù)地址特征位不用傳送字節(jié)個數(shù)0 7 31 36 37 47 48 63 (1)操作碼表示要執(zhí)行的命令;(2)數(shù)據(jù)地址規(guī)定了本命令所訪問的數(shù)據(jù)區(qū)的起始地址;(3)特征位進(jìn)一步限定本命令的含義,給出連接方式或命令特點;(4)傳送字節(jié)個數(shù)規(guī)定了數(shù)據(jù)區(qū)的字節(jié)數(shù)。數(shù)據(jù)地址和傳送字節(jié)個數(shù)主要用于數(shù)據(jù)傳輸型命令。二、通道程序 中央處理器啟動通道工作時,應(yīng)把要求通道“做什么和怎么做”告訴通道。為了使操作系統(tǒng)能用同樣的手段來使用這些種類繁多、特性各異的外圍設(shè)備,計算機(jī)硬件提供“通道指令”(也稱通道控制字CC

30、W),操作系統(tǒng)用一組通道指令來規(guī)定通道執(zhí)行一次輸入輸出操作應(yīng)做的工作,這一組通道指令就組成了一個“通道程序”。 通道被啟動后,就依次執(zhí)行預(yù)定的通道程序中的一條條通道指令,從而實現(xiàn)對外圍設(shè)備的操作控制。 通道與CPU共用一個內(nèi)存儲器,通道程序是存放在主存里的,其起始地址被送入通道地址字寄存器(CAW)。 要啟動外圍設(shè)備按指定的要求工作,首先要把這指定的要求用通道程序表示出來。在編制通道程序時應(yīng)根據(jù)系統(tǒng)提供的通道命令格式和通道命令碼來進(jìn)行。例7.1用戶把自己組織好的一行信息已經(jīng)存放在主存儲器L單元開始的區(qū)域中,該行信息為“Operating System”.連空格在內(nèi)共16個字符。用戶要求把該行信

31、息從打印機(jī)打印輸出,要求打印在新的一頁第4行位置。 為了使打印機(jī)能按要求打印,可組織一個含有3條通道命令的通道程序,把組織好的通道程序存放在主存儲器K單元開始的區(qū)域中,設(shè)計的通道程序如下表所示。主存地址 命令碼 數(shù)據(jù)主存地址 標(biāo)志碼 傳送字節(jié)個數(shù) K 07 000000 60 0001 K+8 EF 000000 60 0001 K+16 F9 L 00 0010其中命令碼07表示“對折頁線”操作(即走紙到新的一頁開始),命令碼EF表示“走紙3行”的操作(即使打印針在第4行位置),命令碼F9表示“打印一行信息”的操作。第一,二兩條通道命令是屬設(shè)備控制類命令,傳送字節(jié)個數(shù)應(yīng)填一個非“0”數(shù),在這

32、里填了“1”,標(biāo)志碼是非“0”字符,表示有后繼的通道命令,這兩條命令不需要進(jìn)行數(shù)據(jù)傳輸,也沒有控制信息,因此,數(shù)據(jù)主存地址為“0”,表示該項缺省。最后一條通道命令指出了把L單元開始的信息打印輸出,共16個字符(16的二進(jìn)制表示為10),標(biāo)志碼為“0”,表示控制打印機(jī)執(zhí)行的操作到此結(jié)束。例7.2 用戶要求把磁帶上的第一塊(塊長為512個字節(jié))信息讀入到主存儲器A單元開始的區(qū)域。 為了使磁帶機(jī)能讀出第一塊信息,需組織一個含有兩條通道命令的通道程序,把組織好的通道程序存放在T單元開始的區(qū)域中,通道程序設(shè)計如下表所示。主存地址 命令碼 數(shù)據(jù)主存地址 標(biāo)志碼 傳送字節(jié)個數(shù) T 07 000000 60

33、0001 T+8 02 A 00 0100 對磁帶機(jī)來說,命令碼07表示磁帶“反繞到始點”的操作,命令碼02表示“讀”操作。第一條通道命令控制磁帶返回始點,第二條通道命令把磁帶上一塊長度為512個字節(jié)(512的二進(jìn)制表示為0100)的信息讀入主存儲器A單元開始的區(qū)域。7.4.4 通道的工作過程一、通道地址字(channel address word 縮寫為CAW) 用來存放通道程序首地址的主存固定單元稱為“通道地址字”(CAW)。通道被啟動后從CAW中取內(nèi)容即第一條通道命令(CCW)的地址送入CAWR(通道地址寄存器)中記錄下來,通道按指示的地址取通道的第一條指令送通道指令寄存器(CCWR)中

34、,并修改CAWR的內(nèi)容使其指向下一條通道指令,以后就可從CAWR指示的內(nèi)存單元取通道命令送入CCWR中,解釋執(zhí)行。二、通道狀態(tài)字(channel status word 縮寫為CSW) 通道在執(zhí)行通道程序時把通道和設(shè)備執(zhí)行操作的情況隨時記錄下來,匯集在一個“通道狀態(tài)字”中,IBM系統(tǒng)中的通道狀態(tài)字也采用雙機(jī)器字表示,格式如下:0 7 8 31 32 39 40 47 48 63 通道命令地址 設(shè)備狀態(tài) 通道狀態(tài) 剩余字節(jié)個數(shù)各字段的含義為:(1)通道命令地址。通道從CAW中取到通道程序中的第一條命令的存放地址,并把該地址存入CSW中。以后CSW中通道命令地址隨CAWR內(nèi)容的改變而改變,即通道命

35、令地址指向后繼通道命令的地址。(2)設(shè)備狀態(tài)。把設(shè)備控制器和設(shè)備能識別到的情況記錄在“設(shè)備狀態(tài)”字節(jié)中。例如,忙,控制器結(jié)束,通道結(jié)束,設(shè)備出錯,設(shè)備特殊等狀態(tài)。(3)通道狀態(tài)。通道識別到的情況,例如,接口錯,控制錯,數(shù)據(jù)錯和通道程序錯等,都記錄在“通道狀態(tài)”字節(jié)中。(4)剩余字節(jié)個數(shù)。指最后一次執(zhí)行的那條通道命令在操作結(jié)束后還剩余多少字節(jié)未傳輸。三、通道的工作過程 通道與CPU共用一個內(nèi)存儲器,通道程序是存放在主存里的,其起始地址被送入通道地址字寄存器(CAWR)。CPU發(fā)啟動IO指令,通道接收后,就按如下步驟工作:(1)根據(jù)CAW中地址到內(nèi)存取一條通道命令存入通道控制字寄存器(CCW)中,

36、同時修改CAW中內(nèi)容,以指向下一條通道命令; (2)通道對CCW中的命令進(jìn)行解釋并執(zhí)行,進(jìn)行一個實際的IO操作; (3)轉(zhuǎn)向(1),繼續(xù)執(zhí)行下一條通道命令,直至通道程序結(jié)束運行轉(zhuǎn)(4); (4)發(fā)出中斷信號,通知中央處理機(jī)本次IO任務(wù)已經(jīng)完成。7.5 緩沖技術(shù) 中斷和通道提高了設(shè)備與設(shè)備、設(shè)備與CPU的并行處理能力,但CPU和外設(shè)之間的速度差異問題沒有解決,為此引入緩沖來解決該問題。7.5.1 緩沖的引人引入緩沖的原因主要有三個:1.為了匹配外設(shè)與CPU之間的處理速度。2.為了減少中斷次數(shù)和中斷處理時間。3.為了解決DMA或通道方式時的瓶頸問題。緩沖的實現(xiàn)方法有兩種:采用專用硬件緩沖器,例如I

37、O控制器中的數(shù)據(jù)緩沖寄存器。在內(nèi)存劃出一個具有n個單元的專用緩沖區(qū),又稱軟件緩沖。7.5.2 緩沖的種類 根據(jù)系統(tǒng)設(shè)置的緩沖器個數(shù),可把緩沖技術(shù)4種。 單緩沖是在設(shè)備和處理機(jī)之間設(shè)置一個緩沖器。單緩沖能匹配設(shè)備和處理機(jī)的處理速度,但是,設(shè)備和設(shè)備之間不能通過單緩沖達(dá)到并行操作。 雙緩沖是解決兩臺外設(shè)之間的并行操作問題的辦法。兩個緩沖器中,一個作為數(shù)據(jù)輸入緩沖器(區(qū)),另一個作為數(shù)據(jù)輸出緩沖器(區(qū))。 它不能用于實際系統(tǒng)中的并行操作。另外,雙緩沖也很難匹配設(shè)備和處理機(jī)的處理速度。 多緩沖是把多個緩沖區(qū)連接起來組成兩部分,一部分專門用于輸入,另一部分專門用于輸出的緩沖結(jié)構(gòu)。 緩沖池則是把多個緩沖區(qū)

38、連接起來統(tǒng)一管理,既可用于輸入又可用于輸出的緩沖結(jié)構(gòu)。7.5.3 緩沖池的管理一、緩沖池的結(jié)構(gòu)緩沖池由多個緩沖區(qū)組成。一個緩沖區(qū)有兩部分組成:一部分是用來標(biāo)識該緩沖區(qū)和用于管理的緩沖首部,另一部分是用于存放數(shù)據(jù)的緩沖體。緩沖首部包括設(shè)備號、設(shè)備上的數(shù)據(jù)塊號(塊設(shè)備時)、互斥標(biāo)識位以及緩沖隊列連接指針和緩沖器號等。系統(tǒng)把各種緩沖區(qū)按其使用狀況連成三種隊列:(1)空白緩沖隊列em,隊首指針為F(em),隊尾指針為L(em);(2)裝滿輸入數(shù)據(jù)的輸入緩沖隊列in,隊首指針為F(in),隊尾指針為L(in);(3)裝滿輸出數(shù)據(jù)的輸出緩沖隊列out,隊首指針為F(out),隊尾指針為L(out)。隊列構(gòu)

39、成如下圖所示。out隊列em隊列in隊列F(em)L(em)F(in)L(in)緩沖區(qū)1緩沖區(qū)m緩沖區(qū)1緩沖區(qū)m緩沖區(qū)1緩沖區(qū)nF(out)L(out) 建立三種緩沖隊列之后,系統(tǒng)(或用戶進(jìn)程)從這三種隊列中申請和取出緩沖區(qū),并用得到的緩沖區(qū)進(jìn)行存數(shù)、取數(shù)操作;在存數(shù)、取數(shù)操作結(jié)束后,再將緩沖區(qū)放入相應(yīng)的隊列。這些緩沖區(qū)被稱為工作緩沖區(qū)。在緩沖池中,有4種工作緩沖區(qū),即: (1)用于收容設(shè)備輸入數(shù)據(jù)的收容輸入緩沖區(qū)hin; (2)用于提取設(shè)備輸入數(shù)據(jù)的提取輸入緩沖區(qū)sin; (3)用于收容CPU輸出數(shù)據(jù)的收容輸出緩沖區(qū)hout; (4)用于提取CPU輸出數(shù)據(jù)的提取輸出緩沖區(qū)sout。 緩沖池的

40、工作緩沖區(qū)如下圖所示。收容輸出I/O設(shè)備提取輸出收容輸入提取輸入緩沖池CPUhin緩沖區(qū)1sin緩沖區(qū)msout緩沖區(qū)nhout緩沖區(qū)x二、緩沖池的管理對緩沖區(qū)的管理由如下幾個操作組成:(1)從三種緩沖區(qū)隊列中按一定的選取規(guī)則取出一個緩沖區(qū)的過程。(2)把緩沖區(qū)按一定的規(guī)則插入相應(yīng)的緩沖區(qū)隊列的過程。 (3)供進(jìn)程申請緩沖區(qū)用的過程; 供操作(1)使用。(4)供進(jìn)程將緩沖區(qū)放入相應(yīng)緩沖區(qū)隊列的過程;供操作(2)使用。我們以外設(shè)輸入數(shù)據(jù)送到輸入緩沖區(qū)為例,說明使用這幾個操作緩沖池的工作過程。首先從空白緩沖區(qū)隊列(em)中按一定的選取規(guī)則取出一個空閑緩沖區(qū),把輸入的數(shù)據(jù)放入該空閑緩沖區(qū)中。然后把裝

41、滿數(shù)據(jù)的緩沖區(qū)按一定的規(guī)則插入相應(yīng)的輸入緩沖隊列(in)。7.6 設(shè)備分配 由于設(shè)備、控制器和通道資源的有限性,不是每一個進(jìn)程隨時隨地都能得到這些資源。進(jìn)程必須首先向設(shè)備管理程序提出資源申請,然后,由設(shè)備分配程序根據(jù)相應(yīng)的分配算法為進(jìn)程分配資源。7.7.1 設(shè)備的獨立性一、設(shè)備的絕對號和相對號 為了對設(shè)備進(jìn)行管理,計算機(jī)系統(tǒng)為每個設(shè)備給定個編號,這個確定的編號稱為設(shè)備的“絕對號”。 一般情況下用戶不直接使用設(shè)備的絕對號。用戶可以向系統(tǒng)說明所要使用的設(shè)備類型,由系統(tǒng)根據(jù)該類設(shè)備的分配情況來決定。用戶可以把自己要求使用的若干臺同類設(shè)備給出編號,由用戶在程序中定義的設(shè)備編號稱設(shè)備的“相對號”。用戶總

42、是按“設(shè)備類、相對號”來提出使用設(shè)備的要求。系統(tǒng)為用戶分配了具體設(shè)備后,建立“絕對號”與“設(shè)備類、相對號”的對應(yīng)關(guān)系。二、設(shè)備的獨立性 作業(yè)或進(jìn)程申請設(shè)備時,指定設(shè)備的方式可以有兩種:指定設(shè)備的絕對號,用此種方法指定設(shè)備如果指定的這臺設(shè)備已經(jīng)被其他作業(yè)或進(jìn)程占用或者有故障時,則作業(yè)或進(jìn)程的申請要求就得不到滿足。指定設(shè)備類、相對號。這種方式使設(shè)備分配的適應(yīng)性好、靈活性強(qiáng),這是因為:(1)系統(tǒng)只要從指定的那一類設(shè)備中找出“好的且尚未分配的”設(shè)備來進(jìn)行分配。(2) 萬一分配給用戶的設(shè)備在使用中出了故障,系統(tǒng)可以從同類設(shè)備中找另一臺“好的且尚未分配的”設(shè)備來替換。 在程序中使用由“設(shè)備類、相對號”定義

43、的邏輯設(shè)備。用戶編制程序時使用的設(shè)備與實際使用哪臺設(shè)備無關(guān)。我們把這種特性稱為“設(shè)備的獨立性”。7.7.2 設(shè)備分配的原則 設(shè)備分配的原則是根據(jù)設(shè)備特性、用戶要求和系統(tǒng)配置情況決定的。 設(shè)備分配的總原則是既要充分發(fā)揮設(shè)備的使用效率,盡可能的讓設(shè)備忙,但又要避免由于不合理的分配方法造成進(jìn)程死鎖(詳見第8章);另外還要做到把用戶程序和具體物理設(shè)備隔離開來,分配程序?qū)⒃谙到y(tǒng)把邏輯設(shè)備轉(zhuǎn)換成物理設(shè)備之后,再根據(jù)要求的物理設(shè)備號進(jìn)行分配。設(shè)備分配方式有兩種:靜態(tài)分配方式是在用戶作業(yè)或進(jìn)程開始執(zhí)行之前,由系統(tǒng)一次分配該作業(yè)或進(jìn)程所要求的全部設(shè)備、控制器和通道等。靜態(tài)分配方式不會出現(xiàn)死鎖,但設(shè)備的使用效率低

44、。不符合設(shè)備分配的總原則。動態(tài)分配方式在作業(yè)或進(jìn)程執(zhí)行過程中根據(jù)執(zhí)行需要進(jìn)行。一旦用完之后,便立即釋放。動態(tài)分配方式有利于提高設(shè)備的利用率,但如果分配算法使用不當(dāng),則有可能造成進(jìn)程死鎖。 7.7.3 設(shè)備分配策略 動態(tài)設(shè)備分配常用的分配策略有先請求先分配、優(yōu)先級高者先分配策略等。(1)先請求先分配系統(tǒng)按提出IO請求的先后順序,將請求命令排成隊列,隊首指向被請求設(shè)備的DCT(設(shè)備控制表)。當(dāng)該設(shè)備空閑時,系統(tǒng)從該設(shè)備的請求隊列的隊首取下一個IO請求消息,將設(shè)備分配給發(fā)出這個請求消息的進(jìn)程。(2)優(yōu)先級高者先分配優(yōu)先級高者指發(fā)出IO請求命令的進(jìn)程的優(yōu)先級高。對于相同優(yōu)先級的進(jìn)程來說,則按先請求先分

45、配策略分配。7.7.4 設(shè)備分配所使用的數(shù)據(jù)結(jié)構(gòu)和分配算法數(shù)據(jù)結(jié)構(gòu):(一)設(shè)備控制表DCT(Device Control Table) 設(shè)備控制表DCT反映設(shè)備的特性、設(shè)備和I/O控制器的連接情況。系統(tǒng)中的每個設(shè)備都必需有一張DCT。(二)系統(tǒng)設(shè)備表SDT(System Device Table)系統(tǒng)設(shè)備表SDT整個系統(tǒng)一張,它記錄已被連接到系統(tǒng)中的所有物理設(shè)備的情況,并為每個物理設(shè)備設(shè)一表項。(三)控制器控制表COCT(COntroler Control Table) COCT也是每個控制器一張。 (四)通道控制表CHCT(CHannel Control Table)該表只在通道控制方式的系

46、統(tǒng)中存在,也是每個通道一張。設(shè)備類型設(shè)備標(biāo)識設(shè)備狀態(tài)COCT指針設(shè)備等待隊列首設(shè)備等待隊列尾通道標(biāo)識通道狀態(tài)通道等待隊列首通道等待隊列尾設(shè)備類型設(shè)備標(biāo)識獲得設(shè)備的進(jìn)程DCT指針控制器標(biāo)識控制器狀態(tài)CHCT指針控制器等待隊列首控制器等待隊列尾DCTCHCTCOCTSCT表目1表目i 數(shù)據(jù)結(jié)構(gòu)及其關(guān)系 否啟動I/O否通道分配給進(jìn)程P控制器分配給進(jìn)程P搜索COCH找到CHCT指針通道忙?是進(jìn)程P等待通道是搜索DCT找到COCH指針該設(shè)備分配給進(jìn)程P是否進(jìn)程P來的I/O請求安全嗎?搜索SDT找到DCT指針否進(jìn)程P被選中?否進(jìn)程P等待該設(shè)備空閑查DCT,該設(shè)備忙?是進(jìn)程P按分配策略入I/O等待隊列按分配

47、策略選取占據(jù)該設(shè)備的進(jìn)程檢查該設(shè)備分配給進(jìn)程P的安全性控制器忙?是進(jìn)程P等待控制器二設(shè)備分配算法7.7 虛擬設(shè)備 操作系統(tǒng)利用共享設(shè)備來模擬獨占設(shè)備的工作,當(dāng)系統(tǒng)只有一臺輸入設(shè)備和一臺輸出設(shè)備的情況下,可允許兩個或兩個以上的作業(yè)并行執(zhí)行,并且每個作業(yè)都感覺到獲得了供自己獨占使用的輸入設(shè)備和輸出設(shè)備。我們說,操作系統(tǒng)采用的這種技術(shù)為用戶提供了“虛擬設(shè)備”。7.7.1 虛擬設(shè)備的引入 我們已經(jīng)知道像輸入機(jī)、打印機(jī)等獨占使用的設(shè)備采用靜態(tài)分配方式,既不能充分利用設(shè)備又不利于提高系統(tǒng)效率,所以,現(xiàn)代操作系統(tǒng)中都提供虛擬設(shè)備來解決這些問題。用一類物理設(shè)備模擬另一類物理設(shè)備的技術(shù),使各作業(yè)在執(zhí)行期間只使用

48、虛擬的獨占設(shè)備而不直接使用物理的獨占設(shè)備。因此,每個作業(yè)也不必獨占輸入機(jī)和打印機(jī)。這種技術(shù)使獨占使用的設(shè)備變成了可共享的設(shè)備,設(shè)備的利用率和系統(tǒng)效率都能得到提高。7.7.2 虛擬設(shè)備的實現(xiàn)一、基本條件 對硬件來說,必須配置大容量的磁盤,要有中斷裝置和通道,具有中央處理器與通道的并行工作的能力。對操作系統(tǒng)來說,應(yīng)采用多道程序設(shè)計技術(shù)。二、實現(xiàn)原理 虛擬設(shè)備的實現(xiàn)原理如下: 把一批作業(yè)的全部信息通過輸入設(shè)備預(yù)先傳送到磁盤上。在多道程序設(shè)計的系統(tǒng)中,可從磁盤上選擇若干個作業(yè)同時裝入主存儲器,并讓它們同時執(zhí)行。由于作業(yè)的信息已全部在磁盤上,故作業(yè)執(zhí)行時不必啟動輸入機(jī)讀信息,而可以從共享的磁盤上讀取各自

49、的信息。把作業(yè)產(chǎn)生的結(jié)果也暫時存放在磁盤上而不直接啟動打印機(jī)輸出。直到一個作業(yè)得到全部結(jié)果而執(zhí)行結(jié)束時,才把該作業(yè)的結(jié)果從打印機(jī)輸出。三、實現(xiàn)技術(shù)1.輸入井和輸出井 為了實現(xiàn)虛擬設(shè)備必須在磁盤上劃出稱為“井”的專用存儲空間,用以存放作業(yè)的初始信息和作業(yè)的執(zhí)行結(jié)果。 “井”又分成兩部分:“輸入井”和“輸出井”?!拜斎刖敝写娣抛鳂I(yè)的初始信息,“輸出井”中存放作業(yè)的執(zhí)行結(jié)果。2.斯普林(SPOOL)系統(tǒng) 操作系統(tǒng)中實現(xiàn)虛擬設(shè)備的功能模塊是在計算機(jī)控制下通過聯(lián)機(jī)的外圍設(shè)備同時操作 (simultaneous peripheral operation on line縮寫為SPOOL)來實現(xiàn)其功能的,所

50、以,也把它稱為斯普林(SPOOL)系統(tǒng)。斯普林系統(tǒng)由三部分程序組成:(1) 預(yù)輸入程序。預(yù)輸入程序的任務(wù)是把作業(yè)流中的每個作業(yè)的初始信息傳送到“輸入井”保存以備作業(yè)執(zhí)行時使用。(2)井管理程序。操作系統(tǒng)根據(jù)作業(yè)的請求調(diào)出“井管理程序”工作,轉(zhuǎn)換成從“輸入井”讀信息(或把結(jié)果寫入“輸出井”)。對系統(tǒng)來說,從“井”中存取信息可以縮短信息的傳輸時間,從而加快作業(yè)的執(zhí)行。從“井”中存取信息可以同時滿足多個用戶的讀寫要求,從而使每個用戶都感到有供自己獨立使用的輸入機(jī)(或打印機(jī))且速度與磁盤一樣快?!熬芾沓绦颉边€可以分成“井管理讀程序”和“井管理寫程序”兩個功能。(3)緩輸出程序。緩輸出程序負(fù)責(zé)查看“輸

51、出井”中是否有待輸出的結(jié)果信息,若有,則啟動打印機(jī)把作業(yè)的結(jié)果文件打印輸出。3.數(shù)據(jù)結(jié)構(gòu) 為了能正確地管理進(jìn)入系統(tǒng)的作業(yè)和存取“輸入井”和“輸出井”中的信息,SPOOL系統(tǒng)應(yīng)設(shè)計好作業(yè)表、預(yù)輸入表和緩輸出表。(1)作業(yè)表。SPOOL系統(tǒng)設(shè)置一張作業(yè)表,用來登記進(jìn)入“輸入井”的各個作業(yè),其格式如下:作業(yè)名作業(yè)狀態(tài)文件數(shù)其他預(yù)輸入表位置緩輸出表位置輸入井中的作業(yè)可有四種狀態(tài):輸入狀態(tài):預(yù)輸入程序啟動了輸入機(jī)正在把該作業(yè)的信息傳輸?shù)健拜斎刖?。收容狀態(tài):該作業(yè)的信息已經(jīng)存放在“輸入井”中,但尚未被選中執(zhí)行。執(zhí)行狀態(tài):作業(yè)已被選中并裝入主存儲器開始執(zhí)行。完成狀態(tài):作業(yè)已執(zhí)行結(jié)束,其執(zhí)行結(jié)果在“輸出井”

52、中等待打印輸出。(2)預(yù)輸入表。每個作業(yè)有一張預(yù)輸入表,用來登記該作業(yè)初始信息的各個文件。格式如 下:文件名設(shè)備類長度其他文件存放始址(3)緩輸出表。對每個作業(yè)設(shè)置一張緩輸出表,用來登記該作業(yè)產(chǎn)生的結(jié)果文件。格式如下:文件名設(shè)備類長度其他文件存放始址4.功能實現(xiàn) 作業(yè)的提交: 當(dāng)用戶提交了一批作業(yè)后,操作員鍵入“預(yù)輸入命令”啟動預(yù)輸入程序工作。 預(yù)輸入程序查看作業(yè)表中是否有空登記項,若有空登記項則再檢查“輸入井”中是否有滿足需要的空閑空間,如果有空閑空間則可接納新的作業(yè)進(jìn)入“輸入井”。 啟動輸入機(jī)讀出并分析作業(yè)的標(biāo)識信息,登記入作業(yè)表,置 “輸入狀態(tài)“。 接著依次讀出作業(yè)的文件信息,尋找“輸入

53、井”中的空閑空間存放這些信息,直到該作業(yè)信息全部輸入,把作業(yè)狀態(tài)修改成“收容狀態(tài)”,將預(yù)輸入表的位置填入作業(yè)表。 當(dāng)作業(yè)流中還有后繼作業(yè)時,預(yù)輸入程序繼續(xù)工作,只要能接納新作業(yè),就按上述過程把作業(yè)信息存入“輸入井” 。 作業(yè)的執(zhí)行: 當(dāng)主存儲器中可以裝入作業(yè)時,就從“輸入井”中選擇處于“收容狀態(tài)”的作業(yè)執(zhí)行,被選中的作業(yè)其狀態(tài)應(yīng)改為“執(zhí)行狀態(tài)”。 作業(yè)執(zhí)行過程中要求啟動輸入機(jī)讀文件時,系統(tǒng)調(diào)出“井管理讀程序”工作,根據(jù)作業(yè)名先找到該作業(yè)的預(yù)輸入表,再根據(jù)文件名可從預(yù)輸入表中得到文件存放的起始位置,沿著鏈接指針可依次讀出存放在“輸入井”中的文件信息。 作業(yè)執(zhí)行中要求啟動打印機(jī)輸出結(jié)果時,調(diào)出“井

54、管理寫程序”工作。根據(jù)作業(yè)名找到緩輸出表,同時查找“輸出井”中的空閑空間,把結(jié)果信息組織成鏈接文件存入“輸出井”,并在緩輸出表中登記。 作業(yè)完成: 當(dāng)處理器空閑時緩輸出程序可以占用處理器,緩輸出程序查看作業(yè)表,找出處于完成狀態(tài)的作業(yè),再查看相應(yīng)的緩輸出表得到結(jié)果文件的存放位置,讀出文件信息并把它們轉(zhuǎn)換成符合打印要求的格式,然后啟動打印機(jī)將其打印輸出。 操作系統(tǒng)采用多道程序設(shè)計技術(shù),合理分配處理器,實現(xiàn)聯(lián)機(jī)的外圍設(shè)備同時操作。作業(yè)執(zhí)行時從磁盤上讀寫信息來代替從輸入機(jī)和打印機(jī)的讀寫操作,不僅使多個作業(yè)可以同時執(zhí)行,而且加快了作業(yè)的執(zhí)行速度,提高了單位時間內(nèi)處理作業(yè)的能力。在作業(yè)執(zhí)行的同時還可利用輸

55、入機(jī)繼續(xù)預(yù)輸入作業(yè)信息和利用打印機(jī)輸出結(jié)果。這種聯(lián)機(jī)同時操作極大地提高了獨占設(shè)備的利用率,也使計算機(jī)系統(tǒng)的各種資源被充分利用。7.8 I/O進(jìn)程控制7.8.1 I/O控制 引入I/O控制主要是為了解決系統(tǒng)在何時分配設(shè)備、在何時申請緩沖、由哪個進(jìn)程進(jìn)行中斷響應(yīng)、誰啟動設(shè)備和誰設(shè)置I/O控制器中有關(guān)寄存器的值等問題。 通常把從用戶進(jìn)程的輸入輸出請求開始,該用戶進(jìn)程分配設(shè)備和啟動有關(guān)設(shè)備進(jìn)行I/O操作,以及在I/O操作完成之后響應(yīng)中斷,進(jìn)行善后處理為止的整個系統(tǒng)控制過程稱為I/O控制過程。7.8.2 I/O控制的功能I/O控制的功能如下圖所示。I/O控制啟動I/O命令設(shè)備驅(qū)動程序或通道程序外設(shè)中斷請

56、求用戶進(jìn)程I/O請求中斷響應(yīng)I/O請求處理設(shè)備分配程序緩沖區(qū)管理分析中斷原因喚醒中斷處理程序 分析中斷原因模塊收集和分析調(diào)用I/O控制過程的原因。 I/O請求處理把用戶進(jìn)程的I/O請求變換為設(shè)備管理程序所能接受的信息。 在設(shè)備分配程序為I/O請求分配了相應(yīng)的設(shè)備、控制器和通道之后,I/O控制模塊還將啟動緩沖管理模塊為此次I/O傳送申請必要的緩沖區(qū),以保證I/O傳送的順利進(jìn)行。 在數(shù)據(jù)傳送結(jié)束后,外設(shè)發(fā)出中斷請求,I/O控制過程將調(diào)用中斷處理程序和做出中斷響應(yīng)。 另外還要檢查是否有等待設(shè)備的I/O請求命令,如有則要通知I/O控制過程進(jìn)行下一I/O傳送。7.8.3 I/O控制的實現(xiàn)I/O控制過程在

57、系統(tǒng)中有三種實現(xiàn)方式:(1)作為請求I/O操作的進(jìn)程的一部分實現(xiàn)。(2)作為當(dāng)前進(jìn)程的一部分實現(xiàn)。(3)I/O控制由專門的系統(tǒng)進(jìn)程I/O進(jìn)程完成。在用戶進(jìn)程發(fā)出請求命令之后,系統(tǒng)調(diào)度進(jìn)程執(zhí)行,控制操作。同樣在外設(shè)發(fā)出中斷請求之后,進(jìn)程也被調(diào)度執(zhí)行以響應(yīng)中斷。 I/O進(jìn)程包括請求模塊、設(shè)備分配模塊、緩沖區(qū)管理模塊、中斷原因分析模塊、中斷處理模塊以及設(shè)備驅(qū)動程序模塊。其實現(xiàn)方式也可分為三種: (1) 每一類設(shè)備設(shè)置一個I/O進(jìn)程且只能在系統(tǒng)態(tài)下執(zhí)行,它專門執(zhí)行這類設(shè)備的I/O操作。比如,為所有的交互式終端設(shè)置一個交互式終端進(jìn)程,又如,為同一類型的打印機(jī)設(shè)置一打印進(jìn)程; (2) 在整個系統(tǒng)中設(shè)置一個

58、IO進(jìn)程,專門負(fù)責(zé)對系統(tǒng)中所有各類設(shè)備的I/O操作。也可以設(shè)置一個輸入進(jìn)程和一個輸出進(jìn)程,分別處理系統(tǒng)中所有各類設(shè)備的輸入或輸出操作。(3) 每一類設(shè)備設(shè)置一個I/O進(jìn)程,既能在系統(tǒng)態(tài)下執(zhí)行又能在用戶態(tài)下執(zhí)行,即為各類設(shè)備設(shè)置相應(yīng)的設(shè)備處理程序(模塊),供用戶進(jìn)程或系統(tǒng)進(jìn)程調(diào)用。7.9 設(shè)備驅(qū)動程序 設(shè)備驅(qū)動程序通常又稱為設(shè)備處理程序,它是IO進(jìn)程與設(shè)備控制器之間的通信程序。又由于它常以進(jìn)程的形式存在,故以后就統(tǒng)稱為設(shè)備驅(qū)動進(jìn)程。 主要任務(wù):接收上層軟件發(fā)來的抽象要求,如read 或write命令,再把它轉(zhuǎn)換為具體要求后,發(fā)送給設(shè)備控制器,啟動設(shè)備去執(zhí)行;此外,它也將由設(shè)備控制器發(fā)來的信號傳送

59、給上層軟件。設(shè)備驅(qū)動程序與硬件密切相關(guān)。7.9.1設(shè)備驅(qū)動程序的功能和特點一、設(shè)備驅(qū)動程序的功能 設(shè)備驅(qū)動程序的主要功能如下: (1)將接收到的抽象要求轉(zhuǎn)換為具體要求。 (2)檢查用戶IO請求的合法性,了解IO設(shè)備的狀態(tài)、傳遞有關(guān)參數(shù),設(shè)置設(shè)備的工作方式。 (3)發(fā)出I/O命令,啟動分配到的IO設(shè)備,完成指定的I/O操作。 (4)及時響應(yīng)由控制器或通道發(fā)來的中斷請求,并根據(jù)其中斷類型調(diào)用相應(yīng)的中斷處理程序進(jìn)行處理。 (5)對于設(shè)置有通道的計算機(jī)系統(tǒng),驅(qū)動程序還能根據(jù)用戶的IO請求,自動地構(gòu)成通道程序。二、設(shè)備驅(qū)動程序的特點 設(shè)備驅(qū)動程序與一般的應(yīng)用程序及系統(tǒng)程序之間,存在下列的明顯差異: (1

60、)驅(qū)動程序主要是在請求IO的進(jìn)程與設(shè)備控制器之間的一個通信程序。 (2)驅(qū)動程序與IO設(shè)備的特性緊密相關(guān)。 (3)驅(qū)動程序與I/O控制方式緊密相關(guān)。 (4)由于驅(qū)動程序與硬件緊密相關(guān)。7.9.2 設(shè)備驅(qū)動程序的處理過程 不同類型的設(shè)備應(yīng)有不同的設(shè)備驅(qū)動程序,但大體上它們都可分成兩部分:驅(qū)動I/O設(shè)備工作的驅(qū)動程序和設(shè)備中斷處理程序。 設(shè)備驅(qū)動程序的主要任務(wù)是啟動指定設(shè)備。但在啟動之前還必須完成必要的準(zhǔn)備工作。其處理過程如下:1.將抽象要求轉(zhuǎn)換為具體要求2.檢查I/O請求的合法性3.讀出和檢查設(shè)備的狀態(tài)4.傳送必要的參數(shù)5.方式的設(shè)置 6.啟動IO設(shè)備 在完成上述各項準(zhǔn)備工作后,驅(qū)動程序可以向控

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論