




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)際操作系統(tǒng)OperatingSystem教學(xué)目的 通過(guò)對(duì)本章地講解是學(xué)生理解并掌握設(shè)備管理的功能、I/O控制方式、緩沖區(qū)管理、設(shè)備管理,以及磁盤存儲(chǔ)管理。 本章重點(diǎn):輸入輸出控制方式緩沖區(qū)的管理設(shè)備分配和設(shè)備處理磁盤調(diào)度虛擬設(shè)備本章難點(diǎn): 對(duì)通道的理解Spooling技術(shù)。第5章 設(shè)備管理 5.1 I/O系統(tǒng)5.2 I/O控制方式5.3 緩沖管理5.4 設(shè)備分配5.5 I/O軟件5.1 I/O系統(tǒng)1.基本概念I(lǐng)/O系統(tǒng):在操作系統(tǒng)中負(fù)責(zé)管理輸入輸出設(shè)備的部分稱為I/O系統(tǒng)。I/O系統(tǒng)的基本功能:是為數(shù)據(jù)傳輸選擇輸入輸出設(shè)備;在選定的輸入輸出設(shè)備和CPU(或主存)之間交換數(shù)據(jù)。操作系統(tǒng)內(nèi)核通過(guò)
2、設(shè)備驅(qū)動(dòng)程序與外部設(shè)備進(jìn)行交互。驅(qū)動(dòng)程序是設(shè)備與內(nèi)核其他部分之間的唯一接口。文件系統(tǒng)是對(duì)設(shè)備操作的組織與抽象,而設(shè)備操作則是對(duì)文件操作的最終實(shí)現(xiàn)。 設(shè)備分類 按信息組織方式按信息組織方式字符設(shè)備(字符設(shè)備(character devicecharacter device) 塊設(shè)備(塊設(shè)備(block deviceblock device) 有結(jié)構(gòu),可尋址有結(jié)構(gòu),可尋址 按設(shè)備使用的可共享性按設(shè)備使用的可共享性 獨(dú)占設(shè)備獨(dú)占設(shè)備 共享設(shè)備共享設(shè)備 虛擬設(shè)備虛擬設(shè)備 按設(shè)備的使用特性按設(shè)備的使用特性存儲(chǔ)設(shè)備存儲(chǔ)設(shè)備輸入輸入/ /輸出設(shè)備輸出設(shè)備 5.1.1 I/O 5.1.1 I/O體系結(jié)構(gòu)體系結(jié)
3、構(gòu) 在計(jì)算機(jī)系統(tǒng)中,數(shù)據(jù)信息是通過(guò)數(shù)據(jù)通道在在計(jì)算機(jī)系統(tǒng)中,數(shù)據(jù)信息是通過(guò)數(shù)據(jù)通道在CPUCPU、RAM RAM 和和I/OI/O設(shè)備之間流動(dòng)的。這些數(shù)據(jù)通道又稱設(shè)備之間流動(dòng)的。這些數(shù)據(jù)通道又稱為總線。為總線??偩€ 數(shù)據(jù)總線:指用來(lái)并行傳送數(shù)據(jù)的一組線。數(shù)據(jù)總線:指用來(lái)并行傳送數(shù)據(jù)的一組線。 地址總線:指用來(lái)并行傳送地址的一組線。地址總線:指用來(lái)并行傳送地址的一組線。 控制總線:指用來(lái)并行傳送控制信息的一組線??刂瓶偩€:指用來(lái)并行傳送控制信息的一組線。 1.總線I/OI/O總線是用來(lái)連接總線是用來(lái)連接CPUCPU和和I/OI/O設(shè)備的總線。每個(gè)設(shè)備的總線。每個(gè)I/OI/O設(shè)備都依設(shè)備都依次連接
4、到次連接到I/OI/O總線上,這種連接使用了有總線上,這種連接使用了有3 3個(gè)元素的硬件構(gòu)個(gè)元素的硬件構(gòu)件層次:件層次:I/OI/O端口、端口、I/OI/O接口和設(shè)備控制器。接口和設(shè)備控制器。 5.1.1 I/O 5.1.1 I/O體系結(jié)構(gòu)體系結(jié)構(gòu)CPUCPUI/OI/O總線總線I/OI/O端口端口I/OI/O接口接口I/OI/O控制器控制器I/OI/O端口端口I/OI/O設(shè)備設(shè)備圖圖5.1 PC5.1 PC的的I/OI/O體系結(jié)構(gòu)體系結(jié)構(gòu)總線 (1)I/O端口(I/O port),即為連接到I/O總線上的設(shè)備的I/O地址。 例IBM PC 體系結(jié)構(gòu)中的I/O地址空間,一共有65536個(gè)8位的
5、I/O端口。CPU在執(zhí)行指令時(shí),使用地址總線選擇所請(qǐng)求的I/O端口,使用數(shù)據(jù)總線在CPU寄存器和I/O端口之間傳送數(shù)據(jù)。若I/O端口能被映射到內(nèi)存物理地址空間,CPU和I/O設(shè)備之間的通信就可以通過(guò)使用對(duì)內(nèi)存進(jìn)行操作的匯編語(yǔ)言指令(如,mov、and、or等等)來(lái)實(shí)現(xiàn)?,F(xiàn)代的硬件設(shè)備傾向于把I/O端口映射到內(nèi)存物理地址空間。 為了實(shí)現(xiàn)起來(lái)方便,操作系統(tǒng)設(shè)計(jì)者把每個(gè)設(shè)備的I/O端口都組織成一組專用寄存器:控制寄存器、狀態(tài)寄存器、輸入寄存器、輸出寄存器。 (2)I/O接口起翻譯器的作用:把I/O端口中的值轉(zhuǎn)換成設(shè)備所需要的命令和數(shù)據(jù);檢測(cè)設(shè)備狀態(tài)的變化,并對(duì)設(shè)備狀態(tài)寄存器(某一I/O端口)進(jìn)行相應(yīng)
6、地更新。I/O接口通過(guò)一條IRQ線連接到可編程中斷控制器上,以使它代表相應(yīng)的設(shè)備發(fā)出中斷請(qǐng)求。有兩種類型的接口:專用I/O接口和通用I/O接口。 專用I/O接口:專用于特定的硬件設(shè)備。有時(shí)專用I/O接口與設(shè)備控制器處于同一塊卡中。 通用I/O接口:是用于連接外部設(shè)備的。并口可用于連接打印機(jī)、可移動(dòng)磁盤、掃描儀、備份設(shè)備、其他計(jì)算機(jī)等等。 (3)設(shè)備控制器的主要作用:對(duì)從I/O接口接收到的高級(jí)命令進(jìn)行解釋,并通過(guò)向設(shè)備發(fā)送適當(dāng)?shù)碾娦盘?hào)序列強(qiáng)制設(shè)備執(zhí)行特定的操作;對(duì)從設(shè)備接收到的電信號(hào)進(jìn)行轉(zhuǎn)換和適當(dāng)?shù)亟忉?,并通過(guò)I/O接口修改狀態(tài)寄存器的值。復(fù)雜的設(shè)備通常需要設(shè)備控制器來(lái)驅(qū)動(dòng),而較簡(jiǎn)單的設(shè)備可以沒(méi)
7、有設(shè)備控制器,如可編程中斷控制器、可編程間隔定時(shí)器。所有的PC機(jī)都包含DMAC(Direct Memory Access Controller)輔助處理器。DMA(直接內(nèi)存訪問(wèn))作為一種輸入輸出方式,主要用來(lái)連接高速外圍設(shè)備,如磁盤、磁帶等,控制數(shù)據(jù)在RAM和I/O設(shè)備之間傳送。5.1.2 I/O系統(tǒng)的功能 1.概述 在計(jì)算機(jī)系統(tǒng)中,I/O設(shè)備是人機(jī)對(duì)話的界面和接口,而計(jì)算機(jī)系統(tǒng)的I/O設(shè)備種類繁多,千差萬(wàn)別。另外,CPU性能高,而I/O設(shè)備性能低,屬于低速設(shè)備,因此I/O設(shè)備的性能常常成為系統(tǒng)性能的瓶頸。 用戶對(duì)I/O設(shè)備的使用要求是方便、高效、安全和正確。I/O系統(tǒng)的功能也就應(yīng)該在計(jì)算機(jī)硬
8、件結(jié)構(gòu)提供的既定設(shè)備范圍及其連接模式下,完成用戶對(duì)I/O設(shè)備的使用要求。系統(tǒng)的功能(1)方便性:為了讓用戶能方便使用I/O設(shè)備,提供簡(jiǎn)便易用的對(duì)邏輯設(shè)備進(jìn)行邏輯操作的抽象接口;實(shí)現(xiàn)抽象接口到物理接口的轉(zhuǎn)化,即將高級(jí)邏輯操作轉(zhuǎn)化為低級(jí)物理操作。抽象接口除了掩蔽硬件細(xì)節(jié)外還要掩蔽依賴于硬件的軟件技術(shù)細(xì)節(jié)。設(shè)備抽象接口是由設(shè)備管理功能接口和文件系統(tǒng)功能接口共同提供的,更準(zhǔn)確地說(shuō),設(shè)備抽象接口包含在文件系統(tǒng)統(tǒng)一接口中。抽象接口使廣義的設(shè)備獨(dú)立性成為可能,向用戶展示一個(gè)大大簡(jiǎn)化了的計(jì)算環(huán)境觀點(diǎn),同時(shí),抽象接口也是提高效率技術(shù)的前提。廣義的I/O設(shè)備獨(dú)立性是指整個(gè)設(shè)備管理功能的抽象接口,程序不關(guān)心物理設(shè)備
9、的操作和組織細(xì)節(jié),而只看到具有邏輯名稱和邏輯性質(zhì)的邏輯設(shè)備和邏輯操作,不關(guān)心具體I/O設(shè)備是哪一個(gè)具體設(shè)備或是哪一個(gè)文件,設(shè)備改變而程序不變,不必修改,也不必重新編譯。用戶不必關(guān)心設(shè)備的改變,這一事實(shí)所帶來(lái)的問(wèn)題應(yīng)該由操作系統(tǒng)來(lái)管理。所使用的設(shè)備的變化對(duì)程序是透明的。塊設(shè)備的設(shè)備獨(dú)立性是由文件系統(tǒng)的文件目錄概念提供的。(2)效率:非系統(tǒng)用戶關(guān)心其程序的運(yùn)行效率,系統(tǒng)用戶關(guān)心系統(tǒng)的利用率;非系統(tǒng)用戶不希望程序等待設(shè)備,系統(tǒng)用戶不希望設(shè)備等待程序。在現(xiàn)代操作系統(tǒng)中,已引入了大量的技術(shù)以提高設(shè)備與CPU的效率,例如中斷、緩沖、DMA、通道等。因此,操作系統(tǒng)設(shè)備管理的一個(gè)主要功能是采用各種純軟件或與硬
10、件配合的軟件技術(shù)來(lái)提高設(shè)備效率和與此相關(guān)的系統(tǒng)效率,提供物理I/O設(shè)備的共享并優(yōu)化這些設(shè)備的使用,同時(shí)借助抽象接口使得這些優(yōu)化技術(shù)得以在內(nèi)部實(shí)施而對(duì)用戶透明。(3)保護(hù):用戶希望能安全正確地使用設(shè)備,即希望由設(shè)備傳送或管理的數(shù)據(jù)應(yīng)該是安全的,不被破壞和泄密。 另外,對(duì)設(shè)備擁有所有權(quán)的用戶希望設(shè)備不能被破壞。 系統(tǒng)如何阻止用戶訪問(wèn)他們無(wú)權(quán)訪問(wèn)的設(shè)備呢?微機(jī)系統(tǒng)多半不設(shè)保護(hù),任何進(jìn)程能做它想做的任何事情。在大多數(shù)主機(jī)系統(tǒng)中,用戶進(jìn)程對(duì)I/O設(shè)備的訪問(wèn)完全被禁止。在UNIX系統(tǒng)中,對(duì)應(yīng)于I/O設(shè)備的特別文件受一般的rwx位保護(hù)。系統(tǒng)管理員據(jù)此為每臺(tái)設(shè)備確定適當(dāng)?shù)氖跈?quán)。計(jì)算機(jī)系統(tǒng)對(duì)I/O設(shè)備的控制方式
11、有:程序輪詢方式程序中斷方式DMA(直接存儲(chǔ)器訪問(wèn))控制方式通道控制方式。 5.2 I/O5.2 I/O控制方式控制方式【輸入/輸出控制-程序直接控制方式】 程序直接控制方式是指由程序直接控制內(nèi)存或CPU和外圍設(shè)備之間進(jìn)行信息傳送的方式。通常又稱為“忙等”方式或循環(huán)測(cè)試方式。 在數(shù)據(jù)傳送過(guò)程中,必不可少的一個(gè)硬件設(shè)備是I/O控制器,它是操作系統(tǒng)軟件和硬件設(shè)備之間的接口,它接收CPU的命令,并控制I/O設(shè)備進(jìn)行實(shí)際的操作。CPUCPU執(zhí)行執(zhí)行A A進(jìn)程進(jìn)程外設(shè)外設(shè)I/OI/O控制器控制器發(fā)命令發(fā)命令傳數(shù)據(jù)傳數(shù)據(jù)圖5.2 程序直接控制方式程序直接控制方式下輸出數(shù)據(jù)時(shí)的工作過(guò)程。 把一個(gè)啟動(dòng)位為“1
12、”的控制字寫入該設(shè)備的控制狀態(tài)寄存器。 將需輸出數(shù)據(jù)送到數(shù)據(jù)緩沖寄存器。測(cè)試控制狀態(tài)寄存器中的“完成位”,若為0,轉(zhuǎn) ,否則轉(zhuǎn)。 輸出設(shè)備將數(shù)據(jù)緩沖寄存器中的數(shù)據(jù)取走進(jìn)行實(shí)際的輸出。程序直接控制方式優(yōu)缺點(diǎn)程序直接控制方式優(yōu)缺點(diǎn) 在程序在程序I/OI/O方式中,由于方式中,由于CPUCPU的高速性和的高速性和I/OI/O設(shè)備的設(shè)備的低速性,低速性, 致使致使CPUCPU的絕大部分時(shí)間都處于等待的絕大部分時(shí)間都處于等待I/OI/O設(shè)備完成數(shù)據(jù)設(shè)備完成數(shù)據(jù)I/OI/O的循環(huán)測(cè)試中,的循環(huán)測(cè)試中, 造成對(duì)造成對(duì)CPUCPU的極的極大浪費(fèi)。大浪費(fèi)。該方式優(yōu)點(diǎn):簡(jiǎn)單,易于理解。該方式優(yōu)點(diǎn):簡(jiǎn)單,易于理解。
13、 圖5.3 程序I/O方式流程圖 【輸入/輸出控制-中斷控制方式】 (1)進(jìn)程需要數(shù)據(jù)時(shí),將允許啟動(dòng)和允許中斷的控制字寫入設(shè)備控制狀態(tài)寄存器中,啟動(dòng)該設(shè)備進(jìn)行輸入操作。 (2)該進(jìn)程放棄處理機(jī),等待輸入的完成。操作系統(tǒng)進(jìn)程調(diào)度程序調(diào)度其他就緒進(jìn)程占用處理機(jī)。 (3)當(dāng)輸入完成時(shí),輸入設(shè)備通過(guò)中斷請(qǐng)求線向CPU發(fā)出中斷請(qǐng)求信號(hào)。CPU在接收到中斷信號(hào)之后,轉(zhuǎn)向中斷處理程序。 (4)中斷處理程序首先保護(hù)現(xiàn)場(chǎng),然后把輸入緩沖寄存器中的數(shù)據(jù)傳送到某一特定單元中去,同時(shí)將等待輸入完成的那個(gè)進(jìn)程喚醒,進(jìn)入就緒狀態(tài),最后恢復(fù)現(xiàn)場(chǎng),并返回到被中斷的進(jìn)程繼續(xù)執(zhí)行。 (5)在以后的某一時(shí)刻,操作系統(tǒng)進(jìn)程調(diào)度程序選
14、中提出的請(qǐng)求并得到獲取數(shù)據(jù)的進(jìn)程,該進(jìn)程從約定的內(nèi)存特定單元中取出數(shù)據(jù)繼續(xù)工作。 在在I/OI/O設(shè)備輸入每個(gè)數(shù)據(jù)的過(guò)程中,由于無(wú)須設(shè)備輸入每個(gè)數(shù)據(jù)的過(guò)程中,由于無(wú)須CPUCPU干預(yù),干預(yù),因而可使因而可使CPUCPU與與I/OI/O設(shè)備并行工作。僅當(dāng)輸完一個(gè)數(shù)據(jù)時(shí),才設(shè)備并行工作。僅當(dāng)輸完一個(gè)數(shù)據(jù)時(shí),才需需CPUCPU花費(fèi)極短的時(shí)間去做些中斷處理。可見,這樣可使花費(fèi)極短的時(shí)間去做些中斷處理。可見,這樣可使CPUCPU和和I/OI/O設(shè)備都處于忙碌狀態(tài),從而提高了整個(gè)系統(tǒng)的資源利用設(shè)備都處于忙碌狀態(tài),從而提高了整個(gè)系統(tǒng)的資源利用率及吞吐量。率及吞吐量。例如,從終端輸入一個(gè)字符的時(shí)間約為例如,從
15、終端輸入一個(gè)字符的時(shí)間約為100 ms100 ms, 而將字符送而將字符送入終端緩沖區(qū)的時(shí)間小于入終端緩沖區(qū)的時(shí)間小于 0.1 ms0.1 ms。 若采用程序若采用程序I/OI/O方式,方式,CPUCPU約有約有 99.9 ms99.9 ms的時(shí)間處于忙的時(shí)間處于忙等待中。等待中。 采用中斷驅(qū)動(dòng)方采用中斷驅(qū)動(dòng)方式后,式后,CPUCPU可利用這可利用這 99.9 ms99.9 ms的時(shí)間去做其它事情,而僅用的時(shí)間去做其它事情,而僅用 0.1 ms0.1 ms的時(shí)間來(lái)處理由控制器發(fā)來(lái)的中斷請(qǐng)求。的時(shí)間來(lái)處理由控制器發(fā)來(lái)的中斷請(qǐng)求。 可見,中斷可見,中斷驅(qū)動(dòng)方式可以成百倍地提高驅(qū)動(dòng)方式可以成百倍地提
16、高CPUCPU的利用率。的利用率。 圖 中斷方式流程圖 DMA方式又稱直接存儲(chǔ)器訪問(wèn)(Direct Memory Access)方式。其基本思想是在外設(shè)和主存之間開辟直接的數(shù)據(jù)交換通路。DMA方式的特點(diǎn)是: (1)數(shù)據(jù)傳送的基本單位是數(shù)據(jù)塊。 (2)所傳送的數(shù)據(jù)是從設(shè)備送內(nèi)存,或者相反。 (3)僅在傳送一個(gè)或多個(gè)數(shù)據(jù)塊的開始和結(jié)束時(shí),才需中斷CPU,請(qǐng)求干預(yù),整塊數(shù)據(jù)的傳送是在DMA控制器控制下完成的。 可見,DMA方式較之中斷驅(qū)動(dòng)方式,又是成百倍地減少了CPU對(duì)I/O的干預(yù),進(jìn)一步提高了CPU與I/O設(shè)備的并行操作程度?!据斎胼斎? /輸出控制輸出控制- - DMA方式方式】圖圖5.5 DM
17、A控制器與其他部件的關(guān)系控制器與其他部件的關(guān)系DMA控制器的組成控制器的組成 圖 5.6 DMA控制器的組成 DRMARDCCRI/O控制邏輯主機(jī)控制器接口 控制器與塊設(shè)備接口count內(nèi)存CPU命令系統(tǒng)總線DMA控制器 為了實(shí)現(xiàn)在主機(jī)與控制器之間成塊數(shù)據(jù)的直接交換,為了實(shí)現(xiàn)在主機(jī)與控制器之間成塊數(shù)據(jù)的直接交換, 必須必須在在DMADMA控制器中設(shè)置如下四類寄存器:控制器中設(shè)置如下四類寄存器: (1) (1) 命令命令/ /狀態(tài)寄存器狀態(tài)寄存器CRCR。用于接收從。用于接收從CPUCPU發(fā)來(lái)的發(fā)來(lái)的I/OI/O命令或命令或有關(guān)控制信息,有關(guān)控制信息, 或設(shè)備的狀態(tài)?;蛟O(shè)備的狀態(tài)。 (2) (2
18、) 內(nèi)存地址寄存器內(nèi)存地址寄存器MARMAR。在輸入時(shí),它存放把數(shù)據(jù)從設(shè)備。在輸入時(shí),它存放把數(shù)據(jù)從設(shè)備傳送到內(nèi)存的起始目標(biāo)地址;在輸出時(shí),它存放由內(nèi)存到設(shè)備傳送到內(nèi)存的起始目標(biāo)地址;在輸出時(shí),它存放由內(nèi)存到設(shè)備的內(nèi)存源地址。的內(nèi)存源地址。 (3) (3) 數(shù)據(jù)寄存器數(shù)據(jù)寄存器DRDR。用于暫存從設(shè)備到內(nèi)存,或從內(nèi)存到。用于暫存從設(shè)備到內(nèi)存,或從內(nèi)存到設(shè)備的數(shù)據(jù)。設(shè)備的數(shù)據(jù)。 (4) (4) 數(shù)據(jù)計(jì)數(shù)器數(shù)據(jù)計(jì)數(shù)器DCDC。 存放本次存放本次CPUCPU要讀或?qū)懙淖忠x或?qū)懙淖? (節(jié)節(jié)) )數(shù)。數(shù)。 DMA工作過(guò)程工作過(guò)程 圖 5.7 DMA方式的工作流程 MAR設(shè)置 A R 和 D C 初值
19、啟動(dòng) D MA傳送命令挪用存儲(chǔ)器周期傳送數(shù)據(jù)字存儲(chǔ)器地址增1字計(jì)數(shù)寄存器減1D C 0?請(qǐng)求中斷在繼續(xù)執(zhí)行用戶程序的同時(shí),準(zhǔn)備又一次傳送否是MAR【輸入/輸出控制- 通道控制方式】 I/OI/O通道方式是通道方式是DMADMA方式的發(fā)展,它可進(jìn)一步減少方式的發(fā)展,它可進(jìn)一步減少CPUCPU的干預(yù),的干預(yù),即把對(duì)一個(gè)數(shù)據(jù)塊的讀即把對(duì)一個(gè)數(shù)據(jù)塊的讀( (或?qū)懟驅(qū)? )為單位的干預(yù),減少為對(duì)一組為單位的干預(yù),減少為對(duì)一組數(shù)據(jù)塊的讀數(shù)據(jù)塊的讀( (或?qū)懟驅(qū)? )及有關(guān)的控制和管理為單位的干預(yù)。及有關(guān)的控制和管理為單位的干預(yù)。 同同時(shí),又可實(shí)現(xiàn)時(shí),又可實(shí)現(xiàn)CPUCPU、通道和、通道和I/OI/O設(shè)備三者
20、的并行操作,從而更設(shè)備三者的并行操作,從而更有效地提高整個(gè)系統(tǒng)的資源利用率。有效地提高整個(gè)系統(tǒng)的資源利用率。例如,當(dāng)例如,當(dāng)CPUCPU要完成一組相關(guān)的讀要完成一組相關(guān)的讀( (或?qū)懟驅(qū)? )操作及有關(guān)控制時(shí),操作及有關(guān)控制時(shí),只需向只需向I/OI/O通道發(fā)送一條通道發(fā)送一條I/OI/O指令,以給出其所要執(zhí)行的通道指令,以給出其所要執(zhí)行的通道程序的首址和要訪問(wèn)的程序的首址和要訪問(wèn)的I/OI/O設(shè)備,通道接到該指令后,通過(guò)設(shè)備,通道接到該指令后,通過(guò)執(zhí)行通道程序便可完成執(zhí)行通道程序便可完成CPUCPU指定的指定的I/OI/O任務(wù)。任務(wù)。 通道是專門負(fù)責(zé)輸入/輸出的硬件I/O處理器圖5.8 通道方
21、式的數(shù)據(jù)傳送結(jié)構(gòu) 通道控制部件:通道地址字CAW:記錄下一條通道指令存放的地址。通道命令字CCW:保存正在運(yùn)行的通道指令。通道狀態(tài)字CSW:記載通道、控制器、設(shè)備的狀態(tài)。通道數(shù)據(jù)字CDW:暫存內(nèi)存和設(shè)備之間I/O傳輸?shù)臄?shù)據(jù)。 按CAW取通道指令送入CCW中 CAW+1 CAW 是通道結(jié)束命令?是向主機(jī)發(fā)向主機(jī)發(fā) 中斷中斷否否 執(zhí)行此命令執(zhí)行此命令圖5.9 通道程序執(zhí)行過(guò)程通道控制方式的數(shù)據(jù)傳輸過(guò)程如下: (1)當(dāng)進(jìn)程要求設(shè)備輸入時(shí),CPU發(fā)指令指明I/O操作、設(shè)備號(hào)和對(duì)應(yīng)通道。(2)對(duì)應(yīng)通道收到CPU發(fā)來(lái)的啟動(dòng)指令后,讀出內(nèi)存中的通道指令程序、設(shè)置對(duì)應(yīng)設(shè)備的控制狀態(tài)寄存器的初值。(3)設(shè)備按通
22、道指令的要求,把數(shù)據(jù)送往內(nèi)存指定區(qū)域。(4)若傳送結(jié)束,I/O控制器通過(guò)中斷請(qǐng)求線發(fā)中斷信號(hào)請(qǐng)求CPU做中斷處理。(5)中斷處理結(jié)束后,CPU返回到被中斷進(jìn)程處繼續(xù)執(zhí)行。(6)當(dāng)進(jìn)程調(diào)度程序選中這個(gè)已得到數(shù)據(jù)的進(jìn)程后,才能進(jìn)行加工處理。 在現(xiàn)代OS中,幾乎所有的I/O設(shè)備在與處理機(jī)(內(nèi)存)交換數(shù)據(jù)時(shí),都使用了緩沖區(qū)。緩沖就是在通信問(wèn)題中為了通信雙方的速度匹配而引入的一個(gè)中間層次,這個(gè)層次的速度比通信雙方中較慢的一方快,而與較快的一方更匹配。1 1、引入緩沖的主要目的有以下幾點(diǎn)、引入緩沖的主要目的有以下幾點(diǎn): :&緩和處理機(jī)和緩和處理機(jī)和I/OI/O設(shè)備間速度不匹配的矛盾設(shè)備間速度不匹配的矛盾&
23、減少對(duì)減少對(duì)CPUCPU的中斷次數(shù)的中斷次數(shù)&提高提高CPUCPU和和I/OI/O設(shè)備之間的并行性設(shè)備之間的并行性5.3 5.3 緩沖管理緩沖管理單緩沖單緩沖雙緩沖雙緩沖循環(huán)緩沖循環(huán)緩沖緩沖池緩沖池純硬件緩沖區(qū)純硬件緩沖區(qū)軟件緩沖區(qū)軟件緩沖區(qū)( (設(shè)在內(nèi)存系統(tǒng)空設(shè)在內(nèi)存系統(tǒng)空間中間中) )緩沖區(qū)緩沖區(qū)實(shí)現(xiàn)實(shí)現(xiàn)CacheCache設(shè)備緩沖區(qū)設(shè)備緩沖區(qū)I/OI/O緩沖緩沖區(qū)個(gè)數(shù)區(qū)個(gè)數(shù)&按照緩沖所在的位置分,緩沖區(qū)可分為:按照緩沖所在的位置分,緩沖區(qū)可分為: CACHECACHE;I/OI/O設(shè)備或控制器內(nèi)部的純硬件緩沖區(qū),如打印設(shè)備或控制器內(nèi)部的純硬件緩沖區(qū),如打印機(jī)內(nèi)部的硬件緩沖區(qū);機(jī)內(nèi)部的硬件
24、緩沖區(qū);I/OI/O在內(nèi)存開設(shè)的緩沖區(qū),如在內(nèi)存開設(shè)的緩沖區(qū),如OSOS在內(nèi)存開設(shè)的在內(nèi)存開設(shè)的I/OI/O緩沖區(qū)和緩沖區(qū)和文件系統(tǒng)緩沖區(qū);文件系統(tǒng)緩沖區(qū);脫機(jī)與假脫機(jī)技術(shù)實(shí)質(zhì)上也屬于緩沖技術(shù),它是為慢速脫機(jī)與假脫機(jī)技術(shù)實(shí)質(zhì)上也屬于緩沖技術(shù),它是為慢速I/OI/O設(shè)備在外存開設(shè)的緩沖區(qū)。設(shè)備在外存開設(shè)的緩沖區(qū)。 2 2、緩沖區(qū)分類:、緩沖區(qū)分類:緩沖技術(shù)-單緩沖 單緩沖是操作系統(tǒng)提供的最簡(jiǎn)單的一種緩沖形式。單緩沖是指在設(shè)備和處理機(jī)之間設(shè)置一個(gè)緩沖。設(shè)備和處理機(jī)交換數(shù)據(jù)時(shí),先把被交換數(shù)據(jù)寫入緩沖區(qū),之后需要數(shù)據(jù)的設(shè)備或處理機(jī)再?gòu)木彌_區(qū)取走數(shù)據(jù)。設(shè)備和處理機(jī)對(duì)緩沖區(qū)的操作是串行的。單緩沖工作示意如
25、下圖 工作區(qū)處理 (C)緩沖區(qū)傳送 (M)輸入 (T)I/O 設(shè)備(a)T1M1C1T2M2C2T3M3C3T4t(b)用戶進(jìn)程圖5.10 單緩沖工作示意圖緩沖技術(shù)-雙緩沖 雙緩沖方式和單緩沖方式相比,雖然雙緩沖方式能進(jìn)一步提高CPU和外設(shè)的并行程度,并能使輸入設(shè)備和輸出設(shè)備并行工作,但是在實(shí)際系統(tǒng)中很少采用這一方式,這是因?yàn)樵谟?jì)算機(jī)系統(tǒng)中的外設(shè)很多,又有大量的輸入和輸出,同時(shí)雙緩沖很難匹配設(shè)備和CPU的處理速度。因此現(xiàn)代計(jì)算機(jī)系統(tǒng)中一般使用環(huán)形緩沖或緩沖池結(jié)構(gòu)。雙緩沖是指在應(yīng)用程序進(jìn)程發(fā)出雙緩沖是指在應(yīng)用程序進(jìn)程發(fā)出I/OI/O請(qǐng)求時(shí),在內(nèi)請(qǐng)求時(shí),在內(nèi)存為之分配兩個(gè)緩沖區(qū),以便加快存為之分配
26、兩個(gè)緩沖區(qū),以便加快I/OI/O速度并提速度并提高設(shè)備利用率。高設(shè)備利用率。工作區(qū)用戶進(jìn)程緩沖區(qū)1緩沖區(qū)2I/O 設(shè)備T1(緩沖1)M1C1M2C2M3C3T2(緩沖2)T3(緩沖3)M4C4T4(緩沖4)(a)(b)圖 5.11 雙緩沖工作示意圖 緩沖技術(shù)-環(huán)形緩沖循環(huán)緩沖是指引入多個(gè)緩沖區(qū)并將之組織成環(huán)形。用作輸入循環(huán)緩沖是指引入多個(gè)緩沖區(qū)并將之組織成環(huán)形。用作輸入的循環(huán)緩沖,輸入進(jìn)程不斷地向環(huán)形緩沖中的下一個(gè)空緩的循環(huán)緩沖,輸入進(jìn)程不斷地向環(huán)形緩沖中的下一個(gè)空緩沖輸入數(shù)據(jù),計(jì)算進(jìn)程不斷地從中取走數(shù)據(jù)并計(jì)算。循環(huán)沖輸入數(shù)據(jù),計(jì)算進(jìn)程不斷地從中取走數(shù)據(jù)并計(jì)算。循環(huán)緩沖也僅適用于某個(gè)特定的輸入
27、輸出進(jìn)程和計(jì)算進(jìn)程,屬緩沖也僅適用于某個(gè)特定的輸入輸出進(jìn)程和計(jì)算進(jìn)程,屬于專用緩沖。于專用緩沖。RGGGRG165423NextiNextgRGGGRC165423NextiNextgcurrent計(jì)算進(jìn)程下一個(gè)可計(jì)算進(jìn)程下一個(gè)可用的緩沖區(qū)指針用的緩沖區(qū)指針輸入進(jìn)程下次可輸入進(jìn)程下次可用緩沖區(qū)指針用緩沖區(qū)指針計(jì)算進(jìn)程正在計(jì)算進(jìn)程正在使用緩沖區(qū)使用緩沖區(qū)指針指針圖5.12 循環(huán)緩沖示意圖緩沖技術(shù)- 緩沖池現(xiàn)代的操作系統(tǒng)通常將多個(gè)緩沖區(qū)組織成緩沖池,供多個(gè)進(jìn)程在I/O操作時(shí)共享,以提高緩沖區(qū)的利用率。在緩沖池中,可能有的緩沖區(qū)為空,有的緩沖區(qū)裝滿輸入數(shù)據(jù),有的緩沖區(qū)裝滿輸出數(shù)據(jù)。為了便于管理,操作
28、系統(tǒng)內(nèi)核可將相同類型的緩沖區(qū)鏈接在一起,從而形成多個(gè)緩沖隊(duì)列 。圖圖5.13 緩沖區(qū)隊(duì)列緩沖區(qū)緩沖區(qū)隊(duì)列緩沖區(qū)緩沖池的組成緩沖池的組成空閑緩沖區(qū)、裝輸入數(shù)據(jù)的緩沖區(qū)和裝輸出數(shù)空閑緩沖區(qū)、裝輸入數(shù)據(jù)的緩沖區(qū)和裝輸出數(shù)據(jù)的緩沖區(qū)。據(jù)的緩沖區(qū)。圖圖5.14 緩沖池的緩沖池的工作緩沖區(qū)工作緩沖區(qū)緩沖池的工作方式 緩沖區(qū)可以在收容輸入、提取輸入、收容輸出和提取輸出四種方式下工作。hinsoutsinhout收容輸入提取輸出用戶程序提取輸入收容輸出緩沖池對(duì)緩沖池的操作由如下幾個(gè)過(guò)程組成:1、從緩沖區(qū)隊(duì)列中取出一個(gè)緩沖區(qū)的過(guò)程Takebuf(type)。2、把緩沖區(qū)插入到相應(yīng)的緩沖隊(duì)列的過(guò)程Addbuf(t
29、ype,number)。3、進(jìn)程申請(qǐng)緩沖區(qū)用的過(guò)程Getbuf(type,number)。4、進(jìn)程將緩沖區(qū)插入到相應(yīng)緩沖區(qū)隊(duì)列的過(guò)程Putbuf(type,workbuf)。Type: 緩沖隊(duì)列類型 number: 緩沖區(qū)號(hào) workbuf: 工作緩沖區(qū)類型圖圖4-4 Getbuf4-4 Getbuf與與PutbufPutbuf流程圖流程圖Getbuf(type):P(S2(type)P(S1(type)按照type在相應(yīng)隊(duì)列上取隊(duì)首緩沖區(qū)V(S1(type)Putbuf(type,num):P(S1(type)V(S1(type)V(S2(type)按照type將num號(hào)緩沖區(qū)掛到對(duì)應(yīng)緩沖隊(duì)
30、列圖 設(shè)備分配技術(shù)設(shè)備依據(jù)使用特性可分為共享設(shè)備技術(shù)、獨(dú)占設(shè)備技術(shù)和虛擬設(shè)備技術(shù)。共享設(shè)備技術(shù)適用于可共享設(shè)備,獨(dú)占設(shè)備技術(shù)適用于可共享設(shè)備和獨(dú)占設(shè)備,虛擬設(shè)備技術(shù)適用于獨(dú)占設(shè)備。具體內(nèi)容如下: 獨(dú)占設(shè)備技術(shù):對(duì)獨(dú)享設(shè)備,系統(tǒng)一般采用靜態(tài)分配方式。即在一個(gè)作業(yè)執(zhí)行前,將它所需要使用的這類設(shè)備分配給它,當(dāng)作業(yè)結(jié)束撤離時(shí),才將分配給它的獨(dú)享設(shè)備收回。 獨(dú)占設(shè)備每次只能分配給一個(gè)進(jìn)程使用,這種使用特性隱含著死鎖的必要條件,所以在考慮獨(dú)占設(shè)備的分配時(shí),一定要結(jié)合有關(guān)防止和避免死鎖的安全算法。5.4 5.4 設(shè)備分配設(shè)備分配共享設(shè)備技術(shù):對(duì)共享設(shè)備的分配一般采用動(dòng)態(tài)分配這一方式 。在解決設(shè)備與CPU的速
31、度匹配問(wèn)題上,為了使設(shè)備和CPU的利用率達(dá)到最大程度,系統(tǒng)希望根據(jù)每個(gè)設(shè)備的特征來(lái)全局調(diào)度設(shè)備的操作。 常見的設(shè)備分配方法有兩種1.先來(lái)先服務(wù)2.優(yōu)先級(jí)高者優(yōu)先虛擬設(shè)備技術(shù):系統(tǒng)中的獨(dú)占設(shè)備是有限的,往往不能滿足諸多進(jìn)程的要求,會(huì)引起大量進(jìn)程由于等待某些獨(dú)占設(shè)備而阻塞。另一方面,申請(qǐng)到獨(dú)占設(shè)備的進(jìn)程在其整個(gè)運(yùn)行期間雖然占有設(shè)備,利用率卻常常很低,設(shè)備經(jīng)常處于空閑狀態(tài)。解決的辦法,就是用共享設(shè)備操作來(lái)模擬獨(dú)占設(shè)備的操作,以提高系統(tǒng)效率和設(shè)備利用率。這種技術(shù)就稱為虛擬設(shè)備技術(shù),實(shí)現(xiàn)這一技術(shù)的軟、硬件系統(tǒng)被稱為假脫機(jī)(Simultaneous Peripheral Operation On Line
32、, SPOOL)系統(tǒng),又叫SPOOLing系統(tǒng). 脫機(jī)輸入輸出技術(shù)為了解決人機(jī)矛盾及CPU和I/O設(shè)備間速度不匹配的矛盾,50年代末出現(xiàn)了該技術(shù)。事先將裝有用戶程序和數(shù)據(jù)的紙帶(卡片)裝入紙帶輸入機(jī),在一臺(tái)外圍機(jī)的控制下把紙帶上的數(shù)據(jù)(程序)輸入到磁帶上。當(dāng)CPU需要這些數(shù)據(jù)時(shí)再?gòu)拇艓细咚俚恼{(diào)入內(nèi)存。類似的,當(dāng)CPU需要輸出時(shí)可由CPU直接高速的把數(shù)據(jù)從內(nèi)存送到磁帶上,然后再在另一臺(tái)外圍機(jī)的控制下,將磁帶上的結(jié)果通過(guò)相應(yīng)的輸出設(shè)備輸出。輸入設(shè)備輸入設(shè)備外圍機(jī)外圍機(jī)磁盤磁盤磁盤磁盤磁盤磁盤外圍機(jī)外圍機(jī)主機(jī)主機(jī)磁盤磁盤輸出設(shè)備輸出設(shè)備由于程序和數(shù)據(jù)的輸入和輸出都是在外圍機(jī)的控制下完成的,由于程序
33、和數(shù)據(jù)的輸入和輸出都是在外圍機(jī)的控制下完成的,或者說(shuō)他們是在脫離主機(jī)的情況下進(jìn)行的,所以稱為脫機(jī)輸入或者說(shuō)他們是在脫離主機(jī)的情況下進(jìn)行的,所以稱為脫機(jī)輸入輸出方式。輸出方式。圖圖5.16 脫機(jī)脫機(jī)I/O示意圖示意圖SPOOLing系統(tǒng)的組成: (1)輸入井和輸出井:這是在磁盤上開辟出來(lái)的兩個(gè)存儲(chǔ)區(qū)域。輸入井模擬脫機(jī)輸入時(shí)的磁盤,用于收容I/O設(shè)備輸入的數(shù)據(jù)。輸出井模擬脫機(jī)輸出時(shí)的磁盤,用于收容用戶程序的輸出數(shù)據(jù)。(2)輸入緩沖區(qū)和輸出緩沖區(qū):這是在內(nèi)存中開辟的兩個(gè)緩沖取區(qū)。輸入緩沖區(qū)用于暫存由輸入設(shè)備送來(lái)的數(shù)據(jù),以后再傳送到輸入井。輸出緩沖區(qū)用于暫存從輸出井送來(lái)的數(shù)據(jù),以后再傳送到輸出設(shè)備。
34、(3)輸入進(jìn)程和輸出進(jìn)程:輸入進(jìn)程模擬脫機(jī)輸入時(shí)的外圍控制機(jī),將用戶要求的數(shù)據(jù)從輸入機(jī)通過(guò)輸入緩沖區(qū)再送到輸入井。當(dāng)CPU需要輸入數(shù)據(jù)時(shí),直接從輸入井讀如內(nèi)存。輸出進(jìn)程模擬脫機(jī)輸出時(shí)的外圍控制機(jī),把用戶要求輸出的數(shù)據(jù),先從內(nèi)存送到輸入井,待輸出設(shè)備空閑時(shí),再將輸出井中的數(shù)據(jù)經(jīng)過(guò)輸出緩沖區(qū)送到輸出設(shè)備上。 SPOOLing系統(tǒng)的組成如圖所示。該系統(tǒng)必須有高速塊設(shè)備的支持,該高速塊設(shè)備通常是指磁盤。SPOOLing技術(shù)需要在磁盤上開辟兩個(gè)大的存儲(chǔ)空間,分別用作輸入井和輸出井。輸入井模擬脫機(jī)輸入時(shí)的磁盤,收容從輸入設(shè)備輸入的數(shù)據(jù)。 內(nèi)存內(nèi)存輸入進(jìn)程輸入進(jìn)程輸出進(jìn)程輸出進(jìn)程輸入緩沖區(qū)輸入緩沖區(qū)輸出緩沖
35、區(qū)輸出緩沖區(qū)磁盤磁盤輸入井輸入井輸出井輸出井輸入設(shè)備輸入設(shè)備輸出設(shè)備輸出設(shè)備圖圖5.17 SPOOLing5.17 SPOOLing系統(tǒng)的組成系統(tǒng)的組成例如:共享打印機(jī)請(qǐng)求打印隊(duì)列這是由若干張請(qǐng)求打印表所形成的隊(duì)列,系統(tǒng)為每個(gè)請(qǐng)求打印的進(jìn)程建立一張請(qǐng)求打印表。參見P190OS&設(shè)備分配設(shè)備分配 在計(jì)算機(jī)系統(tǒng)中,在計(jì)算機(jī)系統(tǒng)中,I/OI/O設(shè)備的數(shù)量是有限的。在多道程設(shè)備的數(shù)量是有限的。在多道程序環(huán)境中,用戶不能自行使用系統(tǒng)中的設(shè)備。進(jìn)程首先需序環(huán)境中,用戶不能自行使用系統(tǒng)中的設(shè)備。進(jìn)程首先需要向設(shè)備管理程序提出申請(qǐng),然后由設(shè)備分配程序按照一要向設(shè)備管理程序提出申請(qǐng),然后由設(shè)備分配程序按照一定的
36、分配算法給進(jìn)程分配必要的資源。如果進(jìn)程的申請(qǐng)沒(méi)定的分配算法給進(jìn)程分配必要的資源。如果進(jìn)程的申請(qǐng)沒(méi)有成功,就要在資源的等待隊(duì)列中排隊(duì)等待,直到獲得所有成功,就要在資源的等待隊(duì)列中排隊(duì)等待,直到獲得所需的資源。需的資源。 (1 1)設(shè)備管理的數(shù)據(jù)結(jié)構(gòu))設(shè)備管理的數(shù)據(jù)結(jié)構(gòu): :操作系統(tǒng)為了實(shí)現(xiàn)對(duì)設(shè)備的操作系統(tǒng)為了實(shí)現(xiàn)對(duì)設(shè)備的管理和分配,需要對(duì)每臺(tái)設(shè)備的情況進(jìn)行登記,即對(duì)所管管理和分配,需要對(duì)每臺(tái)設(shè)備的情況進(jìn)行登記,即對(duì)所管理的對(duì)象建立相應(yīng)的數(shù)據(jù)結(jié)構(gòu),如設(shè)備控制表(理的對(duì)象建立相應(yīng)的數(shù)據(jù)結(jié)構(gòu),如設(shè)備控制表(DCTDCT)、控)、控制器控制表(制器控制表(COCTCOCT)、通道控制表()、通道控制表(
37、CHCTCHCT)和系統(tǒng)設(shè)備表)和系統(tǒng)設(shè)備表(SDTSDT)。圖)。圖5-185-18給出了這些表的數(shù)據(jù)結(jié)構(gòu)。給出了這些表的數(shù)據(jù)結(jié)構(gòu)。 圖圖5.18 5.18 設(shè)備管理的數(shù)據(jù)結(jié)構(gòu)設(shè)備管理的數(shù)據(jù)結(jié)構(gòu)SDTSDT表項(xiàng)表項(xiàng)1 1表項(xiàng)表項(xiàng)i i設(shè)備類設(shè)備類設(shè)備標(biāo)識(shí)設(shè)備標(biāo)識(shí)驅(qū)動(dòng)程序入口驅(qū)動(dòng)程序入口DCTDCT指針指針DCTDCT設(shè)備類型設(shè)備類型設(shè)備狀態(tài)設(shè)備狀態(tài)COCTCOCT指針指針設(shè)備等待隊(duì)列設(shè)備等待隊(duì)列COCTCOCT控制器標(biāo)識(shí)控制器標(biāo)識(shí)控制器狀態(tài)控制器狀態(tài)CHCTCHCT指針指針控制器等待隊(duì)列控制器等待隊(duì)列CHCTCHCT通道標(biāo)識(shí)通道標(biāo)識(shí)通道狀態(tài)通道狀態(tài)COCTCOCT指針指針通道等待隊(duì)列通道等待
38、隊(duì)列設(shè)備、控制器、通道的等待隊(duì)列是由等待分配資源的進(jìn)程控制塊組成的,其組織方式可以按照先來(lái)先服(FCFS)的順序,也可以按照優(yōu)先級(jí)順序。 (2)設(shè)備分配的原則:提高設(shè)備的利用率;避免不合理的分配方式造成的系統(tǒng)死鎖或系統(tǒng)工作紊亂。與進(jìn)程的調(diào)度相似,設(shè)備的分配也需要一定的策略,通常采用先來(lái)先服務(wù)(FCFS)和優(yōu)先級(jí)高者優(yōu)先等。獨(dú)占設(shè)備每次只能分配給一個(gè)進(jìn)程使用。虛擬設(shè)備的分配同共享設(shè)備。設(shè)備分配設(shè)備分配 靜態(tài)分配靜態(tài)分配 : :動(dòng)態(tài)分配動(dòng)態(tài)分配 : :在用戶級(jí)進(jìn)行的,執(zhí)行之前,由系統(tǒng)一次在用戶級(jí)進(jìn)行的,執(zhí)行之前,由系統(tǒng)一次分配給該程序所需要的全部資源,分配之分配給該程序所需要的全部資源,分配之后,
39、資源就一直為該程序所占用,直到執(zhí)后,資源就一直為該程序所占用,直到執(zhí)行完。該法無(wú)死鎖。行完。該法無(wú)死鎖。 在進(jìn)程執(zhí)行過(guò)程中根據(jù)執(zhí)行需要進(jìn)行設(shè)備在進(jìn)程執(zhí)行過(guò)程中根據(jù)執(zhí)行需要進(jìn)行設(shè)備分配。當(dāng)進(jìn)程需要設(shè)備時(shí),通過(guò)系統(tǒng)調(diào)用分配。當(dāng)進(jìn)程需要設(shè)備時(shí),通過(guò)系統(tǒng)調(diào)用命令向系統(tǒng)提出設(shè)備請(qǐng)求,由系統(tǒng)按照事命令向系統(tǒng)提出設(shè)備請(qǐng)求,由系統(tǒng)按照事先規(guī)定的策略給進(jìn)程分配所需要的設(shè)備。先規(guī)定的策略給進(jìn)程分配所需要的設(shè)備。一旦用完,便立即釋放。一旦用完,便立即釋放。I/O軟件被組織成為一系列的層,即采用層次結(jié)構(gòu)。I/O軟件一般分為四層:中斷處理程序,設(shè)備驅(qū)動(dòng)程序,獨(dú)立于設(shè)備的系統(tǒng)軟件以及用戶空間的I/O軟件。從功能上看,設(shè)備
40、無(wú)關(guān)層是I/O管理的主要部分;從代碼量上看,驅(qū)動(dòng)層是I/O管理的主要部分。各層之間的界面并不是死的,各層之間的確切界面是依賴于具體系統(tǒng)的。 I/O軟件設(shè)計(jì)的一個(gè)關(guān)鍵目標(biāo)是設(shè)備獨(dú)立性。除了直接與設(shè)備打交道的低層軟件之外,其他部分的軟件不依賴于硬件。I/O軟件獨(dú)立于設(shè)備,當(dāng)I/O設(shè)備更新時(shí),沒(méi)有必要重新編寫全部設(shè)備軟件。在一些操作系統(tǒng)中,只要安裝了相應(yīng)的設(shè)備驅(qū)動(dòng)程序,就可以很方便地安裝好新的I/O設(shè)備。甚至不必重新編譯就能將設(shè)備管理程序移到別處執(zhí)行。 5.5 I/O軟件I/O設(shè)備管理軟件一般分為四層:中斷處理程序,設(shè)備驅(qū)動(dòng)程序,與設(shè)備無(wú)關(guān)的系統(tǒng)軟件以及用戶空間的I/O軟件。其中低層與硬件相關(guān),把硬
41、件與較高層次的軟件隔離開來(lái)。而最高層軟件則向用戶提供一個(gè)友好的、統(tǒng)一的接口。 圖總結(jié)了圖總結(jié)了I/OI/O系統(tǒng)軟件的層次。圖中的箭頭給出了系統(tǒng)軟件的層次。圖中的箭頭給出了I/OI/O部分的控部分的控制流。制流。 用戶空間軟件用戶空間軟件獨(dú)立于設(shè)備的系統(tǒng)軟件(設(shè)備獨(dú)立性軟件)獨(dú)立于設(shè)備的系統(tǒng)軟件(設(shè)備獨(dú)立性軟件)設(shè)備驅(qū)動(dòng)程序設(shè)備驅(qū)動(dòng)程序中斷處理程序中斷處理程序硬件硬件 圖圖5.19 I/O5.19 I/O系統(tǒng)的分層及各層的主要功能系統(tǒng)的分層及各層的主要功能 I/O I/O請(qǐng)求請(qǐng)求 I/O I/O回答回答5.5.1 中斷處理程序 1.1.中斷和中斷的分類中斷和中斷的分類 中斷是指計(jì)算機(jī)在執(zhí)行期間,
42、系統(tǒng)內(nèi)發(fā)生任何非尋中斷是指計(jì)算機(jī)在執(zhí)行期間,系統(tǒng)內(nèi)發(fā)生任何非尋常的或非預(yù)期的急需處理事件,使得常的或非預(yù)期的急需處理事件,使得CPUCPU暫時(shí)中斷當(dāng)前暫時(shí)中斷當(dāng)前的執(zhí)行程序而轉(zhuǎn)去執(zhí)行相應(yīng)的事件處理程序,待處理的執(zhí)行程序而轉(zhuǎn)去執(zhí)行相應(yīng)的事件處理程序,待處理完畢后又返回原來(lái)被中斷處繼續(xù)執(zhí)行或調(diào)度新的進(jìn)程完畢后又返回原來(lái)被中斷處繼續(xù)執(zhí)行或調(diào)度新的進(jìn)程執(zhí)行。執(zhí)行。 開中斷和關(guān)中斷是為了保證某段程序執(zhí)行的原子性。開中斷和關(guān)中斷是為了保證某段程序執(zhí)行的原子性。中斷又分為外中斷和內(nèi)中斷。外中斷是指來(lái)自處理器中斷又分為外中斷和內(nèi)中斷。外中斷是指來(lái)自處理器和內(nèi)存之外的中斷,如和內(nèi)存之外的中斷,如I/OI/O設(shè)備
43、發(fā)出的設(shè)備發(fā)出的I/OI/O中斷等。內(nèi)中斷等。內(nèi)中斷是指在處理器和內(nèi)存內(nèi)部產(chǎn)生的中斷,又稱為陷中斷是指在處理器和內(nèi)存內(nèi)部產(chǎn)生的中斷,又稱為陷阱(阱(traptrap)。)。2.處理器與I/O設(shè)備之間數(shù)據(jù)傳輸 I/O I/O系統(tǒng)采用了中斷方式來(lái)控制系統(tǒng)采用了中斷方式來(lái)控制I/OI/O設(shè)備和內(nèi)存與設(shè)備和內(nèi)存與CPUCPU之之間的數(shù)據(jù)傳送。在硬件結(jié)構(gòu)上,這種方式要求間的數(shù)據(jù)傳送。在硬件結(jié)構(gòu)上,這種方式要求CPUCPU與與I/OI/O設(shè)備設(shè)備(或控制器)之間有相應(yīng)的中斷請(qǐng)求線,而且在(或控制器)之間有相應(yīng)的中斷請(qǐng)求線,而且在I/OI/O設(shè)備控設(shè)備控制器的控制狀態(tài)寄存器上有相應(yīng)的中斷允許位。制器的控制狀
44、態(tài)寄存器上有相應(yīng)的中斷允許位。 在中斷方式下,在中斷方式下,CPUCPU與與I/OI/O設(shè)備之間數(shù)據(jù)傳輸?shù)牟襟E:設(shè)備之間數(shù)據(jù)傳輸?shù)牟襟E:(1 1)某個(gè)進(jìn)程需要數(shù)據(jù)時(shí),處理器發(fā)出指令啟動(dòng))某個(gè)進(jìn)程需要數(shù)據(jù)時(shí),處理器發(fā)出指令啟動(dòng)I/OI/O設(shè)備準(zhǔn)設(shè)備準(zhǔn)備數(shù)據(jù)。同時(shí),該指令還打開備數(shù)據(jù)。同時(shí),該指令還打開I/OI/O設(shè)備控制狀態(tài)寄存器中的設(shè)備控制狀態(tài)寄存器中的中斷允許位,以便在需要時(shí),中斷程序可以被調(diào)度執(zhí)行。中斷允許位,以便在需要時(shí),中斷程序可以被調(diào)度執(zhí)行。(2)該進(jìn)程放棄處理器,等待相關(guān)I/O操作完成,此時(shí)進(jìn)程調(diào)度程序會(huì)調(diào)度其他就緒進(jìn)程使用處理器。另一種方式是該進(jìn)程在能夠運(yùn)行的情況下將繼續(xù)運(yùn)行,直
45、到中斷信號(hào)來(lái)臨。 (3)當(dāng)I/O操作完成時(shí),I/O設(shè)備控制器通過(guò)中斷請(qǐng)求線向處理器發(fā)出中斷信號(hào)。處理器收到中斷信號(hào)后,轉(zhuǎn)向預(yù)先設(shè)計(jì)好的中斷處理程序?qū)?shù)據(jù)傳送工作進(jìn)行相應(yīng)的處理。(4)得到數(shù)據(jù)的進(jìn)程,轉(zhuǎn)入就緒狀態(tài)。在隨后的某個(gè)時(shí)刻,進(jìn)程調(diào)度程序會(huì)選中該進(jìn)程繼續(xù)工作。3.中斷處理過(guò)程 I/O設(shè)備完成了I/O操作后,控制器便向CPU發(fā)出一中斷請(qǐng)求,CPU響應(yīng)中斷后便轉(zhuǎn)向中斷處理程序。無(wú)論是哪種I/O設(shè)備,其中斷處理程序的處理過(guò)程大體相同,其步驟如下: (1)CPU響應(yīng)中斷后,則關(guān)中斷,使其進(jìn)入不可再次響應(yīng)中斷的狀態(tài)。(2)當(dāng)中斷處理程序開始執(zhí)行時(shí),用信號(hào)或信號(hào)量機(jī)制,將處于阻塞狀態(tài)的設(shè)備驅(qū)動(dòng)程序進(jìn)程
46、喚醒。(3)保護(hù)被中斷進(jìn)程的執(zhí)行現(xiàn)場(chǎng)。即將當(dāng)前處理機(jī)狀態(tài)字PSW、程序計(jì)數(shù)器PC以及被中斷進(jìn)程的CPU現(xiàn)場(chǎng)(包含所有的CPU寄存器)等都保存到中斷棧中。 (4)分析中斷原因,調(diào)用相應(yīng)的設(shè)備中斷處理程序。由處理器對(duì)各個(gè)中斷源進(jìn)行測(cè)試,以確定引起本次中斷的I/O設(shè)備,并發(fā)送應(yīng)答信號(hào)給發(fā)中斷請(qǐng)求信號(hào)的進(jìn)程,使之消除該中斷請(qǐng)求信號(hào),然后將中斷處理程序的入口地址裝入到程序計(jì)數(shù)器中,使處理機(jī)轉(zhuǎn)向中斷處理程序。(5)執(zhí)行中斷處理程序。該程序從設(shè)備控制器中讀出設(shè)備狀態(tài)。若是正常完成中斷,則驅(qū)動(dòng)程序進(jìn)程便可做結(jié)束處理;若還有命令,可再向控制器發(fā)送新的命令。若是異常中斷,則根據(jù)發(fā)生異常的原因做相應(yīng)處理。(6)恢復(fù)
47、被中斷進(jìn)程的現(xiàn)場(chǎng)或調(diào)度新進(jìn)程占據(jù)處理器。(7)開中斷,CPU繼續(xù)執(zhí)行。 5.5.2 5.5.2 設(shè)備驅(qū)動(dòng)程序設(shè)備驅(qū)動(dòng)程序1.1.設(shè)備驅(qū)動(dòng)程序的特點(diǎn)設(shè)備驅(qū)動(dòng)程序的特點(diǎn)(1 1)設(shè)備驅(qū)動(dòng)程序是在請(qǐng)求)設(shè)備驅(qū)動(dòng)程序是在請(qǐng)求I/OI/O的進(jìn)程和設(shè)備控制器之間的一的進(jìn)程和設(shè)備控制器之間的一個(gè)通信程序。它把進(jìn)程的個(gè)通信程序。它把進(jìn)程的I/OI/O請(qǐng)求傳送給設(shè)備控制器,然后把設(shè)請(qǐng)求傳送給設(shè)備控制器,然后把設(shè)備控制器中所記錄的設(shè)備狀態(tài)、備控制器中所記錄的設(shè)備狀態(tài)、I/OI/O操作完成情況傳回請(qǐng)求操作完成情況傳回請(qǐng)求I/OI/O的進(jìn)程。的進(jìn)程。 (2 2)它與)它與I/OI/O設(shè)備的特性緊密相關(guān),對(duì)于不同類型的
48、設(shè)備,應(yīng)設(shè)備的特性緊密相關(guān),對(duì)于不同類型的設(shè)備,應(yīng)配置不同的驅(qū)動(dòng)程序。配置不同的驅(qū)動(dòng)程序。 (3 3)它與)它與I/OI/O控制方式緊密相關(guān),常用的設(shè)備控制方式為中斷控制方式緊密相關(guān),常用的設(shè)備控制方式為中斷驅(qū)動(dòng)和驅(qū)動(dòng)和DMADMA方式。方式。(4 4)設(shè)備驅(qū)動(dòng)程序與)設(shè)備驅(qū)動(dòng)程序與I/OI/O設(shè)備的硬件結(jié)構(gòu)密切聯(lián)系。其中全部設(shè)備的硬件結(jié)構(gòu)密切聯(lián)系。其中全部是依賴于設(shè)備的代碼。設(shè)備驅(qū)動(dòng)程序是操作系統(tǒng)中唯一知道設(shè)是依賴于設(shè)備的代碼。設(shè)備驅(qū)動(dòng)程序是操作系統(tǒng)中唯一知道設(shè)備控制器細(xì)節(jié)及其用途的部分。備控制器細(xì)節(jié)及其用途的部分。 2.2.設(shè)備驅(qū)動(dòng)程序的處理過(guò)程設(shè)備驅(qū)動(dòng)程序的處理過(guò)程 (1 1)將接收到的
49、抽象請(qǐng)求轉(zhuǎn)換為具體要求。)將接收到的抽象請(qǐng)求轉(zhuǎn)換為具體要求。 (2 2)檢查用戶)檢查用戶I/OI/O請(qǐng)求的合法性。一個(gè)請(qǐng)求的合法性。一個(gè)I/OI/O設(shè)備設(shè)備只能完成一組特定的功能,若超出這些特定的功只能完成一組特定的功能,若超出這些特定的功能,則認(rèn)為這次能,則認(rèn)為這次I/OI/O請(qǐng)求非法。請(qǐng)求非法。 (3 3)讀出和檢查設(shè)備的狀態(tài)。在啟動(dòng)設(shè)備之前,)讀出和檢查設(shè)備的狀態(tài)。在啟動(dòng)設(shè)備之前,要從設(shè)備控制器的狀態(tài)寄存器中讀出設(shè)備的狀態(tài)。要從設(shè)備控制器的狀態(tài)寄存器中讀出設(shè)備的狀態(tài)。若設(shè)備正處于空閑狀態(tài),則可以啟動(dòng)該設(shè)備進(jìn)行若設(shè)備正處于空閑狀態(tài),則可以啟動(dòng)該設(shè)備進(jìn)行I/OI/O操作。操作。 (4)向設(shè)
50、備控制器發(fā)出控制命令。驅(qū)動(dòng)程序向控制器中的命令寄存器傳送控制命令,啟動(dòng)I/O設(shè)備。隨后的I/O是在設(shè)備控制器的控制下進(jìn)行的。若I/O操作所要完成的工作較多,需要一定的時(shí)間,驅(qū)動(dòng)程序進(jìn)程會(huì)把自己阻塞起來(lái),直到中斷到來(lái)時(shí)才被喚醒。若I/O操作毫無(wú)拖延地完成,驅(qū)動(dòng)程序無(wú)需阻塞。(5)對(duì)各種可能的有關(guān)設(shè)備排隊(duì)、掛起、喚醒等操作進(jìn)行處理。(6)及時(shí)響應(yīng)由控制器發(fā)來(lái)的中斷請(qǐng)求,并根據(jù)中斷類型調(diào)用相應(yīng)的中斷處理程序進(jìn)行處理。5.5.3 獨(dú)立于設(shè)備的系統(tǒng)軟件 獨(dú)立于設(shè)備的系統(tǒng)軟件應(yīng)該實(shí)現(xiàn)的功能有,與設(shè)備驅(qū)動(dòng)獨(dú)立于設(shè)備的系統(tǒng)軟件應(yīng)該實(shí)現(xiàn)的功能有,與設(shè)備驅(qū)動(dòng)程序的統(tǒng)一接口、設(shè)備命名、設(shè)備保護(hù)、提供與設(shè)備無(wú)關(guān)的程序
51、的統(tǒng)一接口、設(shè)備命名、設(shè)備保護(hù)、提供與設(shè)備無(wú)關(guān)的邏輯塊、緩沖、塊設(shè)備的存儲(chǔ)分配、獨(dú)占設(shè)備的分配與釋放、邏輯塊、緩沖、塊設(shè)備的存儲(chǔ)分配、獨(dú)占設(shè)備的分配與釋放、處理錯(cuò)誤。處理錯(cuò)誤。 1.1.設(shè)備命名設(shè)備命名 在操作系統(tǒng)的在操作系統(tǒng)的I/OI/O軟件中,對(duì)軟件中,對(duì)I/OI/O設(shè)備進(jìn)行了統(tǒng)一命名,由設(shè)備進(jìn)行了統(tǒng)一命名,由獨(dú)立于設(shè)備的系統(tǒng)軟件負(fù)責(zé)把設(shè)備的符號(hào)名映射到相應(yīng)的設(shè)備獨(dú)立于設(shè)備的系統(tǒng)軟件負(fù)責(zé)把設(shè)備的符號(hào)名映射到相應(yīng)的設(shè)備驅(qū)動(dòng)上。在驅(qū)動(dòng)上。在LinuxLinux系統(tǒng)中,像系統(tǒng)中,像/dev/hda5/dev/hda5這樣的設(shè)備名,唯一地這樣的設(shè)備名,唯一地確定了一個(gè)特殊文件的確定了一個(gè)特殊文件的i i節(jié)點(diǎn),這個(gè)節(jié)點(diǎn),這個(gè)i i節(jié)點(diǎn)包含了主設(shè)備號(hào)和次節(jié)點(diǎn)包含了主設(shè)備號(hào)和次設(shè)備號(hào)。主設(shè)備號(hào)用于尋找正確的設(shè)備驅(qū)動(dòng)程序,次設(shè)備號(hào)提設(shè)備號(hào)。主設(shè)備號(hào)用于尋找正確的設(shè)備驅(qū)動(dòng)程序,次設(shè)備號(hào)提供了設(shè)備驅(qū)動(dòng)程序的有關(guān)參數(shù),用來(lái)確定要讀寫的具體設(shè)備。供了設(shè)備驅(qū)動(dòng)程序的有關(guān)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度建筑工程款撥付與節(jié)能減排協(xié)議
- 2025年度個(gè)人創(chuàng)業(yè)貸款中介代理服務(wù)合同(含政策咨詢)
- 旅游景區(qū)設(shè)施居間銷售合同
- 2025年度房屋贈(zèng)與及智能家居系統(tǒng)安裝合同
- 2025年度房屋代購(gòu)與智能家居系統(tǒng)集成協(xié)議
- 2025年度拆遷安置房抵押貸款服務(wù)合同
- 2025年度電動(dòng)自行車貸款抵押服務(wù)協(xié)議
- 2025年個(gè)人投資入股文化創(chuàng)意產(chǎn)業(yè)合作協(xié)議
- 2025年度土地個(gè)人承包經(jīng)營(yíng)權(quán)委托管理合同
- 2025年度企業(yè)退休項(xiàng)目經(jīng)理再聘用服務(wù)協(xié)議
- 《發(fā)展?jié)h語(yǔ)》-高級(jí)綜合Ⅰ-9高薪養(yǎng)廉與緣木求魚課件
- 電力公司備品備件管理制度
- 現(xiàn)金流量表編制案例
- 部編版二年級(jí)道德與法治下冊(cè)《學(xué)習(xí)有方法》教案及教學(xué)反思
- 八年級(jí)英語(yǔ)閱讀理解每日一練
- Q2起重機(jī)司機(jī)模擬考試100題(精選)
- 臨時(shí)設(shè)備和臨時(shí)用工計(jì)劃表
- 準(zhǔn)社會(huì)交往研究綜述論文
- EPC工程總承包竣工驗(yàn)收管理方案
- 發(fā)動(dòng)機(jī)正時(shí)類寶馬m54圖
- 全身體格檢查總結(jié)及評(píng)分標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論