版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、設(shè)備管理的目標(biāo)提高設(shè)備的利用率為此,應(yīng)盡量提高CPU與I/O設(shè)備之間的并行操作程度,主要利用的技術(shù)有:中斷技術(shù)、DMA技術(shù)、通道技術(shù)、緩沖技術(shù)。為用戶提供方便、統(tǒng)一的界面所謂方便,是指用戶能獨(dú)立于具體設(shè)備的復(fù)雜物理特性之外而方便地使用設(shè)備。所謂統(tǒng)一,是指對(duì)不同的設(shè)備盡量使用統(tǒng)一的操作方式,例如各種字符設(shè)備用一種I/O操作方式。這就要求用戶操作的是簡(jiǎn)便的邏輯設(shè)備,而具體的I/O物理設(shè)備由操作系統(tǒng)去實(shí)現(xiàn),這種性能常常被稱為設(shè)備的獨(dú)立性。第五章 設(shè)備管理設(shè)備管理功能設(shè)備分配指設(shè)備管理程序按照一定的算法把某一個(gè)I/O設(shè)備、及其相應(yīng)的設(shè)備控制器和通道分配給某一用戶(進(jìn)程),對(duì)于未分配到的進(jìn)程,則插入等待
2、隊(duì)列中。緩沖區(qū)管理為了解決CPU與I/O之間速度不匹配的矛盾,在它們之間配置了緩沖區(qū)。這樣設(shè)備管理程序又要負(fù)責(zé)管理緩沖區(qū)的建立、分配和釋放。第五章 設(shè)備管理實(shí)現(xiàn)物理I/O設(shè)備的操作對(duì)于具有通道的系統(tǒng),設(shè)備管理程序根據(jù)用戶提出的I/O請(qǐng)求,生成相應(yīng)的通道程序并提交給通道,然后用專門的通道指令啟動(dòng)通道,對(duì)指定的設(shè)備進(jìn)行I/O操作,并能響應(yīng)通道的中斷請(qǐng)求。對(duì)于未設(shè)置通道的系統(tǒng),設(shè)備管理程序直接驅(qū)動(dòng)設(shè)備進(jìn)行I/O操作。第五章 設(shè)備管理重點(diǎn)設(shè)備控制器的功能和組成、I/O通道的類型;I/O控制方式;設(shè)備獨(dú)立性的概念;SPOOLing系統(tǒng)的組成和特點(diǎn);中斷處理程序的處理過程。難點(diǎn)I/O通道控制方式;設(shè)備獨(dú)立
3、性的實(shí)現(xiàn)。第五章 設(shè)備管理5.1 I/O系統(tǒng)5.1.1 I/O設(shè)備 I/O系統(tǒng)是用于實(shí)現(xiàn)數(shù)據(jù)輸入、輸出及數(shù)據(jù)存儲(chǔ)的系統(tǒng)。鍵盤、顯示器、音響、麥克、磁盤一、I/O設(shè)備的類型I/O設(shè)備的種類繁多,從OS觀點(diǎn)來看,其重要的性能指標(biāo)有:數(shù)據(jù)傳輸速率、數(shù)據(jù)的傳輸單位、設(shè)備的共享屬性等。 按傳輸速率分類低速設(shè)備 指?jìng)鬏斔俾蕿槊棵霂讉€(gè)字節(jié)到數(shù)百個(gè)字節(jié)的設(shè)備。典型的設(shè)備有鍵盤、鼠標(biāo)、語音的輸入等;中速設(shè)備 指?jìng)鬏斔俾试诿棵腌姅?shù)千個(gè)字節(jié)至數(shù)十千個(gè)字節(jié)的設(shè)備。典型的設(shè)備有行式打印機(jī)、激光打印機(jī)等;高速設(shè)備 指?jìng)鬏斔俾试跀?shù)百千個(gè)字節(jié)至數(shù)兆字節(jié)的設(shè)備。典型的設(shè)備有磁帶機(jī)、磁盤機(jī)、光盤機(jī)等。5.1.1 I/O設(shè)備 按信
4、息交換的單位分類塊設(shè)備(Block Device) 指以數(shù)據(jù)塊為單位來組織和傳送數(shù)據(jù)信息的設(shè)備。這類設(shè)備用于存儲(chǔ)信息,有磁盤和磁帶等。它屬于有結(jié)構(gòu)設(shè)備。典型的塊設(shè)備是磁盤,每個(gè)盤塊的大小為512B4KB。字符設(shè)備(Character Device) 指以單個(gè)字符為單位來傳送數(shù)據(jù)信息的設(shè)備。這類設(shè)備一般用于數(shù)據(jù)的輸入和輸出,有交互式終端、打印機(jī)等。它屬于無結(jié)構(gòu)設(shè)備。5.1.1 I/O設(shè)備按資源分配的角度分類 獨(dú)占設(shè)備 指在一段時(shí)間內(nèi)只允許一個(gè)用戶(進(jìn)程)訪問的設(shè)備,大多數(shù)低速的I/O設(shè)備,如用戶終端、打印機(jī)等。 共享設(shè)備 指在一段時(shí)間內(nèi)允許多個(gè)進(jìn)程同時(shí)訪問的設(shè)備。典型的共享設(shè)備是磁盤。共享設(shè)備不
5、僅可以獲得良好的設(shè)備利用率,而且是實(shí)現(xiàn)文件系統(tǒng)和數(shù)據(jù)庫(kù)系統(tǒng)的物質(zhì)基礎(chǔ)。 虛擬設(shè)備 指通過虛擬技術(shù)將一臺(tái)獨(dú)占設(shè)備變換為若干臺(tái)供多個(gè)用戶(進(jìn)程)共享的邏輯設(shè)備。一般可以利用假脫機(jī)技術(shù)(SPOOLing技術(shù))實(shí)現(xiàn)虛擬設(shè)備。5.1.1 I/O設(shè)備傳統(tǒng)的設(shè)備=機(jī)械部分+電子部分5.1.2 設(shè)備控制器 將電子部分從設(shè)備中分離出來作為一個(gè)獨(dú)立部件,就是控制器。5.1.2 設(shè)備控制器設(shè)備控制器的功能接收和識(shí)別命令數(shù)據(jù)交換設(shè)備狀態(tài)的了解和報(bào)告地址識(shí)別數(shù)據(jù)緩沖差錯(cuò)控制5.1.2 設(shè)備控制器二、設(shè)備控制器的組成5.1.2 設(shè)備控制器I/O邏輯控制器與設(shè)備的接口控制器與設(shè)備的接口1控制器與設(shè)備的接口iCPU與控制器的
6、接口數(shù)據(jù)寄存器控制/狀態(tài) 寄存器數(shù)據(jù)線地址線控制線數(shù)據(jù)控制狀態(tài)數(shù)據(jù)控制狀態(tài).5.1.2 設(shè)備控制器設(shè)備控制器與處理機(jī)的接口設(shè)備控制器與設(shè)備的接口I/O邏輯一、設(shè)備與控制器之間的接口數(shù)據(jù)信號(hào)輸入:設(shè)備控制器輸出:控制器設(shè)備控制信號(hào)讀、寫或執(zhí)行等操作信號(hào)狀態(tài)信號(hào)指示設(shè)備的當(dāng)前狀態(tài)5.1.2 設(shè)備控制器 隨著計(jì)算機(jī)技術(shù)的發(fā)展,I/O的控制方式也在不斷地發(fā)展。一般可分為:程序I/O方式、中斷方式、DMA方式和通道方式。I/O的控制方式發(fā)展的目標(biāo)是盡量減少主機(jī)對(duì)I/O控制的干預(yù)。5.2.1 程序I/O方式5.2.2 中斷驅(qū)動(dòng)I/O控制方式5.2.3 直接存儲(chǔ)器訪問DMA控制方式5.2.4 I/O通道控制
7、方式5.2 I/O控制方式while turn=1 do no op trun=1;Critical section; turn=0; Remain Section ; 5.2.1 程序I/O方式 在早期的計(jì)算機(jī)系統(tǒng)中,由于沒有中斷機(jī)構(gòu),處理機(jī)對(duì)I/O設(shè)備直接進(jìn)行控制,采取程序I/O(Programmed I/O)方式或稱為忙-等待方式。即在CPU向設(shè)備控制器發(fā)出一條I/O指令啟動(dòng)I/O設(shè)備進(jìn)行數(shù)據(jù)傳輸時(shí),要同時(shí)把狀態(tài)寄存器中的忙/閑標(biāo)志busy置為1.然后便不斷地循環(huán)測(cè)試busy。當(dāng)busy=l時(shí),表示該I/O設(shè)備尚未輸入完一個(gè)字(符),CPU應(yīng)繼續(xù)對(duì)該標(biāo)志進(jìn)行測(cè)試,直至busy=0,表示該
8、I/O設(shè)備已將輸入數(shù)據(jù)送入到I/O控制器的數(shù)據(jù)寄存器中,于是CPU將從數(shù)據(jù)寄存器中取出數(shù)據(jù),送入內(nèi)存的指定單元,接著,再啟動(dòng)去讀下一個(gè)數(shù)據(jù),并置busy=l。在程序I/O方式中,由于CPU的速度遠(yuǎn)遠(yuǎn)高于I/O設(shè)備,導(dǎo)致CPU的絕大部分時(shí)間都處于等待I/O設(shè)備完成而循環(huán)測(cè)試之中,造成了CPU的極大浪費(fèi)。但是它管理簡(jiǎn)單,在要求不高的場(chǎng)合可以被采用。5.2.1 程序I/O方式CPUI/O CPUI/O CPU做其它事I/OCPU I/OCPU 中斷 未就緒 出錯(cuò) 出錯(cuò) 就緒 就緒I/OCPU I/OCPU CPURAM CPURAM 未完 未完 完成 完成 執(zhí)行下一條I/O指令 執(zhí)行下一條I/O指令
9、5.2.1 程序I/O方式向I/O控制器發(fā)讀命令讀I/O控制器的狀態(tài)檢查狀態(tài)?從I/O控制器中讀入字向內(nèi)存中寫入字傳送完畢?向I/O控制器發(fā)讀命令讀I/O控制器的狀態(tài)檢查狀態(tài)?從I/O控制器中讀入字向內(nèi)存中寫入字傳送完畢?(a)程序I/O方式的流程 (b)中斷驅(qū)動(dòng)方式的流程 在現(xiàn)代計(jì)算機(jī)系統(tǒng)中,對(duì)I/O設(shè)備的控制,廣泛地采用中斷驅(qū)動(dòng)方式。 即當(dāng)某進(jìn)程要啟動(dòng)某個(gè)I/O設(shè)備時(shí),便由CPU向相應(yīng)的設(shè)備控制器發(fā)出一條I/O命令,然后立即返回繼續(xù)執(zhí)行原來的任務(wù)。 設(shè)備控制器便按照該命令的要求去控制I/O設(shè)備。此時(shí),CPU與I/O設(shè)備處于并行工作狀態(tài)。5.2.2 中斷驅(qū)動(dòng)I/O控制方式例如,在輸入時(shí),當(dāng)設(shè)
10、備控制器收到 CPU發(fā)來的讀命令后,便準(zhǔn)備接收從相應(yīng)輸入設(shè)備送來的數(shù)據(jù)。一旦數(shù)據(jù)進(jìn)入數(shù)據(jù)寄存器,控制器便通過控制線向CPU發(fā)送一中斷信號(hào),由CPU檢查輸入過程中是否出錯(cuò),若無錯(cuò),便向控制器發(fā)取走數(shù)據(jù)的信號(hào),然后便通過控制器將數(shù)據(jù)寫入指定內(nèi)存單元。所以,中斷驅(qū)動(dòng)方式在I/O設(shè)備輸入數(shù)據(jù)的過程中,無需 CPU干預(yù),可以使CPU與I/O設(shè)備并行工作。僅當(dāng)輸完一個(gè)數(shù)據(jù)時(shí),才需 CPU花費(fèi)極短的時(shí)間去進(jìn)行中斷處理。從而大大地提高了整個(gè)系統(tǒng)的資源利用率及吞吐量,特別是CPU的利用率。5.2.2 中斷驅(qū)動(dòng)I/O控制方式DMA控制方式的引入中斷驅(qū)動(dòng)I/O方式雖然大大提高了主機(jī)的利用率,但是它以字(節(jié))為單位進(jìn)
11、行數(shù)據(jù)傳送,每完成一個(gè)字(節(jié))的傳送,控制器便要向CPU請(qǐng)求一次中斷(做保存現(xiàn)場(chǎng)信息,恢復(fù)現(xiàn)場(chǎng)等工作),仍然占用了CPU的許多時(shí)間。這種方式對(duì)于高速的塊設(shè)備的I/O控制顯然是不適合。為了進(jìn)一步減少CPU對(duì)I/O的干預(yù),引入了直接存儲(chǔ)器訪問(Direct Memory Access)控制方式。5.2.3 直接存儲(chǔ)器訪問DMA控制方式DMA控制器的組成DMA控制器與塊設(shè)備的接口I/O控制邏輯主機(jī)與DMA控制器的接口命令/狀態(tài)寄存器CR接收從CPU發(fā)來的I/O命令或有關(guān)的控制信息,或設(shè)備的狀態(tài)內(nèi)存地址寄存器MAR存放數(shù)據(jù)從設(shè)備傳到內(nèi)存的目的地址,或由內(nèi)存到設(shè)備的內(nèi)存源地址數(shù)據(jù)寄存器DR暫存設(shè)備到內(nèi)存
12、或內(nèi)存到設(shè)備的數(shù)據(jù)數(shù)據(jù)計(jì)數(shù)器DC存放本次CPU要讀/寫的字(節(jié))數(shù)5.2.3 直接存儲(chǔ)器訪問DMA控制方式5.2.3 直接存儲(chǔ)器訪問DMA控制方式CPU RAMI/O控制邏輯DRMARDCCRDMA控制器count主機(jī)與控制器的接口控制器與塊設(shè)備的接口命令系統(tǒng)總線5.2.3 直接存儲(chǔ)器訪問DMA控制方式DMA工作過程當(dāng)CPU要從磁盤讀入一數(shù)據(jù)塊時(shí):CPU發(fā)出讀命令CR內(nèi)存起始目標(biāo)地址-MAR數(shù)據(jù)的字(節(jié))數(shù)DC數(shù)據(jù)的磁盤源地址I/O控制邏輯啟動(dòng)DMA控制器進(jìn)行數(shù)據(jù)傳送,CPU去處理其它任務(wù)DMA控制器讀入一個(gè)字(節(jié))的數(shù)據(jù)-DR挪用存儲(chǔ)器周期,將該字(節(jié))的數(shù)據(jù)送到MAR指示的內(nèi)存單元MAR:
13、=MAR1;DC:=DC-1IF DC=0 THEN 中斷 ELSE 傳下一字(節(jié))5.2.3 直接存儲(chǔ)器訪問DMA控制方式DMA方式工作流程5.2.3 直接存儲(chǔ)器訪問DMA控制方式設(shè)置CR和DC初值啟動(dòng)DMA傳送命令挪用存儲(chǔ)器周期傳送數(shù)據(jù)字MAR:=MAR+1DC:=DC-1DC=0?請(qǐng)求中斷在繼續(xù)執(zhí)行用戶程序的同時(shí),準(zhǔn)備下一次傳送是否四、DMA方式的特點(diǎn)1數(shù)據(jù)傳輸?shù)幕締挝皇且粋€(gè)連續(xù)的數(shù)據(jù)塊。 內(nèi)存與設(shè)備之間的直接數(shù)據(jù)傳送,而不用CPU的干預(yù)。 僅在傳送一個(gè)或多個(gè)數(shù)據(jù)塊的開始和結(jié)束時(shí),才需 CPU干預(yù),整塊數(shù)據(jù)的傳送是在控制器的控制下完成的。 可見,DMA方式較之中斷驅(qū)動(dòng)方式,又是成百倍地
14、減少了CPU對(duì) I/O控制的干預(yù),進(jìn)一步提高了CPU與I/O設(shè)備的并行操作程度。5.2.3 直接存儲(chǔ)器訪問DMA控制方式5.2.3 直接存儲(chǔ)器訪問DMA控制方式DMA方式的流程向I/O控制器發(fā)布讀塊命令讀DMA控制器的狀態(tài)CPUDMADMACPU中斷CPU做其它事執(zhí)行下一條指令I(lǐng)/O通道控制方式的引入 雖然 DMA方式比中斷驅(qū)動(dòng)方式已顯著地減少了CPU的干預(yù),即由以字(節(jié))為單位的干預(yù)減少到以數(shù)據(jù)塊為單位的干預(yù)。但是CPU每發(fā)出一條I/O指令,也只能去讀(或?qū)懀┮粋€(gè)連續(xù)的數(shù)據(jù)塊。而當(dāng)我們需要一次去讀多個(gè)離散的數(shù)據(jù)塊且將它們分別傳送到不同的內(nèi)存區(qū)域,或者相反時(shí),則需由CPU分別發(fā)出多條I/O指令
15、及進(jìn)行多次中斷處理,才能完成。 由于DMA每次只能執(zhí)行一條I/O指令,不能滿足復(fù)雜的I/O操作要求。在大、中型計(jì)算機(jī)系統(tǒng)中,普遍采用由專用的I/O處理機(jī)來接受CPU的委托,獨(dú)立執(zhí)行自己的通道程序來實(shí)現(xiàn)I/O設(shè)備與內(nèi)存之間的信息交換,這就是通道技術(shù)。5.2.4 I/O通道控制方式5.2.4 I/O通道控制方式通道程序 通道是通過執(zhí)行通道程序,并與設(shè)備控制器來共同實(shí)現(xiàn)對(duì)I/O設(shè)備的控制。 通道程序是由一系列的通道指令(或稱為通道命令)所構(gòu)成。通道指令與一般的機(jī)器指令不同,在每條指令中包含的信息較多,有操作碼、內(nèi)存地址、計(jì)數(shù)(讀或?qū)憯?shù)據(jù)的字節(jié)數(shù))、通道程序結(jié)束位P和記錄結(jié)束標(biāo)志R。5.2.4 I/O
16、通道控制方式通道類型 由于外圍設(shè)備的種類較多,且其傳輸速率相差很大,所以通道也具有多種類型。根據(jù)信息交換方式,可以把通道分成以下三種類型。5.2.4 I/O通道控制方式1. 字節(jié)多路通道(Byte Multiplexor Channel) 在這種通道中,通常都含有較多個(gè)(8,16,32)非分配型子通道,每一個(gè)子通道連接一臺(tái)I/O設(shè)備。這些子通道按時(shí)間片輪轉(zhuǎn)方式共享主通道。一個(gè)子通道完成一個(gè)字節(jié)的傳送后,立即讓出字節(jié)多路通道(主通道),給另一個(gè)子通道使用。它適用于連接低速或中速設(shè)備,如打印機(jī)、終端等。2. 數(shù)組選擇通道(Block Selector Channel) 這種通道雖然可以連接多臺(tái)I/
17、O設(shè)備,但是它只有一個(gè)分配型子通道,在一段時(shí)間內(nèi)只能執(zhí)行一道通道程序、控制一臺(tái)設(shè)備進(jìn)行數(shù)據(jù)傳送,其數(shù)據(jù)傳送是按數(shù)組方式進(jìn)行。即當(dāng)某臺(tái)設(shè)備一旦占用了該通道,就被它獨(dú)占,直至該設(shè)備傳送完畢釋放該通道為止??梢姡m于連接高速設(shè)備(如磁盤機(jī)、磁帶機(jī)),但是這種通道的利用率較低。5.2.4 I/O通道控制方式3.數(shù)組多路通道(Block Multiplexor Channel) 數(shù)組選擇通道雖然有很高的傳輸速率,但它每次只允許一個(gè)設(shè)備傳輸數(shù)據(jù)。數(shù)組多路通道是將數(shù)組選擇通道的傳輸速率高和字節(jié)多路通道的分時(shí)并行操作的優(yōu)點(diǎn)結(jié)合起來,形成的一種新的通道。它含有多個(gè)非分配型子通道,可以連接多臺(tái)高、中速的外圍設(shè)備
18、,其數(shù)據(jù)傳送卻是按數(shù)組方式進(jìn)行。所以這種通道既具有很高的數(shù)據(jù)傳輸速率,又能獲得令人滿意的通道利用率。5.2.4 I/O通道控制方式“瓶頸”問題單通路I/O系統(tǒng)5.2.4 I/O通道控制方式存儲(chǔ)器通道1通道2控制器1控制器2控制器3控制器4設(shè)備1設(shè)備2設(shè)備3設(shè)備4設(shè)備5設(shè)備6設(shè)備7多通路I/O系統(tǒng)5.2.4 I/O通道控制方式存儲(chǔ)器通道1通道2控制器1控制器2設(shè)備1設(shè)備2設(shè)備3設(shè)備4 目的為了解決CPU與I/O設(shè)備間速度不匹配的矛盾,提高的I/O速度和設(shè)備利用率,在所有的I/O設(shè)備與處理機(jī)(內(nèi)存)之間,都使用了緩沖區(qū)來交換數(shù)據(jù)。所以O(shè)S必須組織和管理好這些緩沖區(qū)。 5.3.1 緩沖的引入 5.3
19、.2 單緩沖 5.3.3 雙緩沖 5.3.4 循環(huán)緩沖 5.3.5 緩沖池5.3 緩沖管理改善CPU與I/O設(shè)備間速度不匹配的矛盾 事實(shí)上,凡在數(shù)據(jù)的到達(dá)速率與其離去速率不同的地方,都可設(shè)置緩沖,以緩和它們之間速度不匹配的矛盾。眾所周知,通常的程序都是時(shí)而計(jì)算,時(shí)而輸出的。 例如一個(gè)程序,它時(shí)而進(jìn)行長(zhǎng)時(shí)間的計(jì)算而沒有輸出,時(shí)而又陣發(fā)性把輸出送到打印機(jī)。由于打印機(jī)的速度跟不上CPU,而使得CPU長(zhǎng)時(shí)間的等待。 如果設(shè)置了緩沖區(qū),程序輸出的數(shù)據(jù)先送到緩沖區(qū)暫存,然后由打印機(jī)慢慢地輸出。這時(shí),CPU不必等待,可以繼續(xù)執(zhí)行程序。實(shí)現(xiàn)了CPU與I/O設(shè)備之間的并行工作。5.3.1 緩沖的引入可以減少對(duì)
20、CPU的中斷頻率,放寬對(duì)中斷響應(yīng)時(shí)間的限制 如果I/O操作每傳送一個(gè)字節(jié)就要產(chǎn)生一次中斷,那么設(shè)置了n個(gè)字節(jié)的緩沖區(qū)后,則可以等到緩沖區(qū)滿才產(chǎn)生中斷,這樣中斷次數(shù)就減少到1/n,而且中斷響應(yīng)的時(shí)間也可以相應(yīng)的放寬。提高 CPU和 IO設(shè)備之間的并行性 緩沖的引入可顯著提高 CPU和設(shè)備的并行操作程度,提高系統(tǒng)的吞吐量和設(shè)備的利用率。5.3.1 緩沖的引入每當(dāng)一個(gè)用戶進(jìn)程發(fā)出一個(gè)I/O請(qǐng)求時(shí),OS便在主存中為之分配一個(gè)緩沖區(qū)。例如,CPU要從磁盤上讀一塊數(shù)據(jù)進(jìn)行計(jì)算,先從磁盤把一塊數(shù)據(jù)讀入到緩沖區(qū)中,然后由OS將緩沖區(qū)的數(shù)據(jù)傳送到用戶區(qū),最后由CPU對(duì)這一塊數(shù)據(jù)進(jìn)行計(jì)算,可見第一步和最后一步是可
21、以并行執(zhí)行的,這樣就提高了CPU和外設(shè)的利用率。但是對(duì)緩沖區(qū)中數(shù)據(jù)的輸入和提取是串行工作的。 (如下圖所示) 操作系統(tǒng) 用戶進(jìn)程 C 輸入T 傳送MI/O設(shè)備5.3.2 單緩沖緩沖區(qū)用戶區(qū)雙緩沖工作方式基本方法是在設(shè)備輸入時(shí),先將數(shù)據(jù)輸入到緩沖區(qū)A,裝滿后便轉(zhuǎn)向緩沖區(qū)B。此時(shí)OS可以從緩沖區(qū)A中提取數(shù)據(jù)傳送到用戶區(qū),最后由CPU對(duì)數(shù)據(jù)進(jìn)行計(jì)算。(如下圖所示) 操作系統(tǒng) 用戶進(jìn)程 C 輸入T 傳送MI/O設(shè)備雙緩沖可以實(shí)現(xiàn)對(duì)緩沖區(qū)中數(shù)據(jù)的輸入和提取,與CPU的計(jì)算,三者并行工作。所以雙緩沖進(jìn)一步加快了I/O的速度,提高了設(shè)備的利用率。5.3.3 雙緩沖緩沖區(qū)A用戶區(qū)緩沖區(qū)B當(dāng)對(duì)緩沖區(qū)中數(shù)據(jù)的輸入
22、和提取的速度基本相匹配時(shí),采用雙緩沖可使兩者并行工作,獲得較好的效果。但是如果兩者的速度相差甚遠(yuǎn)時(shí),雙緩沖的效果就不夠理想了。如果增加緩沖區(qū)的個(gè)數(shù),情況就會(huì)有所改善。我們可以將多個(gè)緩沖區(qū)組織成循環(huán)隊(duì)列的形式(如下圖所示)。例如對(duì)于用作輸入的循環(huán)緩沖區(qū),通常提供給輸入進(jìn)程和計(jì)算進(jìn)程使用,輸入進(jìn)程不斷向空緩沖區(qū)中輸入數(shù)據(jù),計(jì)算進(jìn)程則從滿緩沖區(qū)中提取數(shù)據(jù)用于計(jì)算。 操作系統(tǒng) 用戶進(jìn)程 輸入 傳送I/O設(shè)備5.3.4 循環(huán)緩沖 緩沖區(qū)1用戶區(qū)緩沖區(qū)2緩沖區(qū)N 當(dāng)系統(tǒng)配置較多的設(shè)備時(shí),使用專用緩沖區(qū)就要消耗大量的內(nèi)存空間,且其利用率不高。為了提高緩沖區(qū)的利用率,目前廣泛使用公用緩沖池,池中的緩沖區(qū)可供多
23、個(gè)進(jìn)程共享。 對(duì)于同時(shí)用于輸入/輸出的公用緩沖池,至少含有三種類型的緩沖區(qū):空緩沖區(qū)、裝滿輸入數(shù)據(jù)的緩沖區(qū)和裝滿輸出數(shù)據(jù)的緩沖區(qū)。為了管理上的方便,可將相同類型的緩沖區(qū)鏈成一個(gè)隊(duì)列,于是就形成三個(gè)隊(duì)列:空緩沖區(qū)隊(duì)列輸入緩沖區(qū)隊(duì)列輸出緩沖區(qū)隊(duì)列5.3.5 緩沖池 另外還應(yīng)具有四種工作緩沖區(qū):用于收容輸入數(shù)據(jù)的工作緩沖區(qū)(hin);用于提取輸入數(shù)據(jù)的工作緩沖區(qū)(sin);用于收容輸出數(shù)據(jù)的工作緩沖區(qū)(hout);用于提取輸出數(shù)據(jù)的工作緩沖區(qū)(sout)。 可見,緩沖區(qū)工作在收容輸入、提取輸入、收容輸出和提取輸出四種工作方式下。緩沖池 收容輸入 提取輸入 提取輸出 收容輸出5.3.5 緩沖池hins
24、outsinhout 用 戶 程 序 在多道程序環(huán)境下,設(shè)備必須由系統(tǒng)分配。每當(dāng)進(jìn)程向系統(tǒng)提出I/O請(qǐng)求時(shí),設(shè)備分配程序按照一定的策略,把其所需的設(shè)備及其有關(guān)資源(如緩沖區(qū)、控制器和通道)分配給該進(jìn)程。在分配設(shè)備時(shí)還必須考慮系統(tǒng)的安全性,避免發(fā)生死鎖現(xiàn)象。5.4 設(shè)備分配5.4.1 設(shè)備分配中的數(shù)據(jù)結(jié)構(gòu) 數(shù)據(jù)結(jié)構(gòu)有:系統(tǒng)設(shè)備表(SDT)、設(shè)備控制表(DCT)、控制器控制表(COCT)、通道控制表(CHCT)。一、系統(tǒng)設(shè)備表SDT 在整個(gè)系統(tǒng)中,有一張系統(tǒng)設(shè)備表(SDT),用于記錄系統(tǒng)中全部設(shè)備的信息。每個(gè)設(shè)備占一個(gè)表目,其中包括設(shè)備類型、設(shè)備標(biāo)識(shí)符、設(shè)備控制表指針及設(shè)備驅(qū)動(dòng)程序的入口地址等表項(xiàng)
25、。二、控制器控制表COCT 系統(tǒng)為每一個(gè)控制器都配置了一張用于記錄本控制器情況的控制器控制表。5.4.1 設(shè)備分配中的數(shù)據(jù)結(jié)構(gòu)三、通道控制表CHCT 系統(tǒng)為每一個(gè)通道都配置了一張用于記錄本通道情況的通道控制表。四、設(shè)備控制表DCT 系統(tǒng)為每一個(gè)設(shè)備都配置了一張?jiān)O(shè)備控制表,用于記錄該設(shè)備的情況。表中除了有用于指示設(shè)備類型的字段和設(shè)備標(biāo)識(shí)符字段外,還應(yīng)有下列字段: 設(shè)備隊(duì)列隊(duì)首指針、設(shè)備狀態(tài)、與設(shè)備連接的控制器表指針、重復(fù)執(zhí)行次數(shù)。設(shè)備分配的數(shù)據(jù)結(jié)構(gòu)圖SDT集合 SDT DCT集合 DCTCOCT集合 COCT CHCT集合 CHCT表目1表目i設(shè)備類型設(shè)備標(biāo)識(shí)符進(jìn)程標(biāo)識(shí)符DCT表指針驅(qū)動(dòng)程序入口
26、地址表目1表目i設(shè)備類型設(shè)備標(biāo)識(shí)符設(shè)備狀態(tài)(等待/不等待,忙/閑)COCT表指針重復(fù)執(zhí)行的次數(shù)或時(shí)間設(shè)備隊(duì)列的隊(duì)首指針設(shè)備隊(duì)列的隊(duì)尾指針表目1表目i控制器標(biāo)識(shí)符控制器狀態(tài)(忙/閑)CHCT表指針控制器隊(duì)列的隊(duì)首指針控制器隊(duì)列的隊(duì)尾指針表目1表目i通道標(biāo)識(shí)符通道狀態(tài)(忙/閑)COCT表指針通道隊(duì)列的隊(duì)首指針通道隊(duì)列的隊(duì)尾指針根據(jù)設(shè)備的固有屬性而采取的策略獨(dú)享方式 獨(dú)享方式是指將一個(gè)設(shè)備分配給某進(jìn)程后,便一直由它獨(dú)占,直至該進(jìn)程完成或釋放該設(shè)備為止,系統(tǒng)才能將該設(shè)備分配給其它進(jìn)程使用。這種分配方式是對(duì)獨(dú)占設(shè)備采用的分配策略。它不僅往往造成設(shè)備利用率低,而且還會(huì)引起系統(tǒng)死鎖。5.4.2 設(shè)備分配的策
27、略共享方式 共享方式是指將共享設(shè)備(磁盤)同時(shí)分配給多個(gè)進(jìn)程使用。但是這些進(jìn)程對(duì)設(shè)備的訪問需進(jìn)行合理的調(diào)度。虛擬方式虛擬方式是指通過高速的共享設(shè)備,把一臺(tái)慢速的以獨(dú)占方式工作的物理設(shè)備改造成若干臺(tái)虛擬的同類邏輯設(shè)備,這就需要引入SPOOLing技術(shù)。虛擬設(shè)備屬于邏輯設(shè)備。5.4.2 設(shè)備分配的策略設(shè)備分配算法(與進(jìn)程的調(diào)度算法相似)先來先服務(wù)當(dāng)多個(gè)進(jìn)程同時(shí)向某一設(shè)備提出I/O請(qǐng)求時(shí),該算法就根據(jù)對(duì)該設(shè)備提出請(qǐng)求的先后次序?qū)⑦@些進(jìn)程排列成一個(gè)設(shè)備請(qǐng)求隊(duì)列,設(shè)備分配程序把設(shè)備首先分配給隊(duì)首進(jìn)程。優(yōu)先級(jí)高者優(yōu)先對(duì)優(yōu)先權(quán)高的進(jìn)程所提出的I/O請(qǐng)求賦予高優(yōu)先權(quán),在形成設(shè)備隊(duì)列時(shí),將優(yōu)先級(jí)高的進(jìn)程排在設(shè)備
28、隊(duì)列前面,先得到分配。而對(duì)于優(yōu)先權(quán)相同的I/O請(qǐng)求,則按先來先服務(wù)原則排隊(duì)分配。5.4.2 設(shè)備分配的策略設(shè)備分配中的安全性5.4.2 設(shè)備分配的策略2. 不安全分配方式 進(jìn)程在發(fā)出I/O請(qǐng)求后仍繼續(xù)運(yùn)行,需要時(shí)又發(fā)出第二個(gè)I/O請(qǐng)求、第三個(gè)I/O請(qǐng)求等。1. 安全分配方式 每當(dāng)進(jìn)程發(fā)出I/O請(qǐng)求后,便進(jìn)入阻塞狀態(tài),直到其I/O操作完成時(shí)才會(huì)喚醒。一、設(shè)備獨(dú)立性(Device Independence) 為了提高OS的可適應(yīng)性和可擴(kuò)展性,目前幾乎所有的OS都實(shí)現(xiàn)了設(shè)備的獨(dú)立性(也稱為設(shè)備無關(guān)性)。 其基本思想是:用戶程序不直接使用物理設(shè)備名(或設(shè)備的物理地址),而只能使用邏輯設(shè)備名;而系統(tǒng)在實(shí)
29、際執(zhí)行時(shí),將邏輯設(shè)備名轉(zhuǎn)換為某個(gè)具體的物理設(shè)備名,實(shí)施I/O操作。 邏輯設(shè)備是實(shí)際物理設(shè)備屬性的抽象,它并不限于某個(gè)具體設(shè)備。5.4.3 設(shè)備獨(dú)立性設(shè)備獨(dú)立性帶來以下兩方面的好處:1. 設(shè)備分配時(shí)的靈活性 當(dāng)進(jìn)程以邏輯設(shè)備名請(qǐng)求某類設(shè)備時(shí),如果一臺(tái)設(shè)備已經(jīng)分配給其它進(jìn)程或正在檢修,此時(shí)系統(tǒng)可以將其它幾臺(tái)相同的空閑設(shè)備中的任一臺(tái)分配給該進(jìn)程,只有當(dāng)此類設(shè)備全部被分配完時(shí),進(jìn)程才會(huì)被阻塞。2. 易于實(shí)現(xiàn)I/O重定向 用于I/O操作的設(shè)備可以更換,重定向即而不必改變應(yīng)用程序。5.4.3 設(shè)備獨(dú)立性二、設(shè)備獨(dú)立性軟件 為了實(shí)現(xiàn)設(shè)備的獨(dú)立性,必須在驅(qū)動(dòng)程序之上設(shè)置一層軟件,稱為設(shè)備獨(dú)立性軟件,其主要功能
30、有以下兩個(gè)方面: 1. 執(zhí)行所有設(shè)備的公有操作 2. 向用戶層(或文件層)軟件提供統(tǒng)一的接口三、邏輯設(shè)備表 為了實(shí)現(xiàn)邏輯設(shè)備名到物理設(shè)備名的映射,系統(tǒng)必須設(shè)置一張邏輯設(shè)備表LUT(Logical Unit Table),能夠?qū)?yīng)用程序中所使用的邏輯設(shè)備名映射為物理設(shè)備名,并提供該設(shè)備驅(qū)動(dòng)程序的入口地址。5.4.3 設(shè)備獨(dú)立性 忙 不忙 不安全 安全 不忙 忙 忙 不忙 進(jìn)程P提出所需的I/O設(shè)備根據(jù)物理設(shè)備名,從SDT中找出該設(shè)備的DCT由DCT的設(shè)備狀態(tài)字段,檢查該設(shè)備是否忙?將該進(jìn)程的PCB插入到該設(shè)備的等待隊(duì)列中檢查本次設(shè)備分配是否安全性?將此設(shè)備分配給該進(jìn)程從其DCT中找出與該設(shè)備連接
31、的控制器的COCT,檢查該控制器是否忙?將該進(jìn)程的PCB插入到該控制器的的等待隊(duì)列中將該控制器分配給進(jìn)程從COCT中找到與該控制器連接的通道的CHCT,檢查該通道是否忙?將該進(jìn)程的PCB插入到該通道的的等待隊(duì)列中將該通道分配給進(jìn)程至此,設(shè)備、控制器和通道三者都已分配成功啟動(dòng)I/O設(shè)備,進(jìn)行具體的I/O操作5.4.4 設(shè)備分配程序二、設(shè)備分配程序的改進(jìn) 1. 增加設(shè)備的獨(dú)立性 為了獲得設(shè)備的獨(dú)立性,進(jìn)程應(yīng)用邏輯設(shè)備名請(qǐng)求I/O。這樣,系統(tǒng)首先從 SDT中找出第一個(gè)該類設(shè)備的DCT。如忙,則查找第二個(gè)該類設(shè)備的DCT,當(dāng)所有該類設(shè)備都忙時(shí),才把進(jìn)程掛在該類設(shè)備的等待隊(duì)列中。 2. 考慮多通路情況
32、實(shí)際上,系統(tǒng)為了提高可靠性和靈活性,通常采用多通路的I/O系統(tǒng)結(jié)構(gòu)。此時(shí)對(duì)多個(gè)控制器和通道的分配,必須查找所有的控制器和通道,才能決定是否將該進(jìn)程掛起。5.4.4 設(shè)備分配程序 早期批處理系統(tǒng)中使用的虛擬技術(shù)是以脫機(jī)方式工作的。為了緩和CPU和I/O設(shè)備之間的速度不匹配的問題。利用專門的外圍控制機(jī)將低速I/O設(shè)備上的數(shù)據(jù)傳送到高速磁盤上,或者相反。當(dāng)多道程序設(shè)計(jì)的分時(shí)系統(tǒng)出現(xiàn)后,SPOOLing技術(shù)就孕育而生,它將一臺(tái)獨(dú)占設(shè)備改造成可以共享的虛擬設(shè)備。5.4.5 SPOOLing技術(shù)什么是 SPOOLing技術(shù) 當(dāng)多道程序程序技術(shù)出現(xiàn)后,就可以利用一道程序,來模擬脫機(jī)輸入時(shí)的外圍控制機(jī)的功能,
33、即把低速I/O設(shè)備上的數(shù)據(jù)傳送到高速的磁盤上; 再用另一道程序來模擬脫機(jī)輸出時(shí)外圍控制機(jī)的功能,即把數(shù)據(jù)從磁盤傳送到低速I/O設(shè)備上。 這樣,便在主機(jī)的直接控制下,實(shí)現(xiàn)脫機(jī)輸入、輸出功能。 所以,我們把這種在聯(lián)機(jī)情況下實(shí)現(xiàn)的同時(shí)與外圍設(shè)備聯(lián)機(jī)操作的技術(shù)稱為SPOOLing(Simultaneous Peripheral Operation On Line),或稱為假脫機(jī)技術(shù)。5.4.5 SPOOLing技術(shù)SPOOLing系統(tǒng)的組成 SPOOLing系統(tǒng)是對(duì)脫機(jī)輸入、輸出工作的模擬,它必須有高速隨機(jī)外存(硬盤)的支持。 SPOOLing系統(tǒng)主要有以下三部分(如下圖所示): 輸入井和輸出井在磁盤
34、上開辟的兩個(gè)大的存儲(chǔ)空間。 輸入井模擬脫機(jī)輸入時(shí)的磁盤,用于收容I/O設(shè)備輸入的數(shù)據(jù) 輸出井模擬脫機(jī)輸出時(shí)的磁盤,用于收容用戶程序的輸出數(shù)據(jù)5.4.5 SPOOLing技術(shù)輸入進(jìn)程SPi和輸出進(jìn)程SPo 進(jìn)程SPi模擬脫機(jī)輸入時(shí)的外圍控制機(jī),將用戶要求的數(shù)據(jù)從輸入機(jī)通過輸入緩沖區(qū)再送到輸入井。當(dāng)CPU需要輸入數(shù)據(jù)時(shí),直接從輸入井讀入內(nèi)存。 進(jìn)程SPo進(jìn)程模擬脫機(jī)輸出時(shí)的外圍控制機(jī),把用戶要求輸出的數(shù)據(jù),先從內(nèi)存送到輸出井,待輸出設(shè)備空閑時(shí),再將輸出井中的數(shù)據(jù),經(jīng)過輸出緩沖區(qū)送到輸出設(shè)備上。5.4.5 SPOOLing技術(shù)輸入緩沖區(qū)和輸出緩沖區(qū) 在內(nèi)存中開辟兩個(gè)緩沖區(qū):輸入緩沖區(qū)和輸出緩沖區(qū) 輸
35、入緩沖區(qū)用于暫存由輸入設(shè)備送來的數(shù)據(jù),再傳送到輸入井 輸出緩沖區(qū)用于暫存從輸出井送來的數(shù)據(jù),再傳送給輸出設(shè)備5.4.5 SPOOLing技術(shù) 內(nèi) 存 磁 盤 輸入設(shè)備 輸出設(shè)備5.4.5 SPOOLing技術(shù)輸入進(jìn)程SPi輸出進(jìn)程SPo輸入緩沖區(qū) 輸出緩沖區(qū) 輸入井 輸出井5.4.5 SPOOLing技術(shù)Job1Job2Job3Job3Job2Job1輸入緩沖輸入發(fā)出輸出收存輸出發(fā)出Job1Job2Job3Job1Job2Job3打印機(jī)Job2 Job3Job1主計(jì)算機(jī)輸出井輸入井共享打印機(jī) 打印機(jī)雖然是獨(dú)享設(shè)備。但是通過SPOOLing技術(shù),可以將它改造為一臺(tái)可供多個(gè)用戶共享的設(shè)備。共享打印
36、機(jī)技術(shù)已被廣泛地用于多用戶系統(tǒng)和局域網(wǎng)絡(luò)。當(dāng)用戶進(jìn)程請(qǐng)求打印輸出時(shí),SPOOLing系統(tǒng)并不是真正把打印機(jī)分配給該用戶進(jìn)程,而由輸出進(jìn)程為他在輸出井中申請(qǐng)一個(gè)存儲(chǔ)空間,并將要打印的數(shù)據(jù)以文件的形式存放于此。各進(jìn)程的輸出文件形成一個(gè)輸出隊(duì)列,由輸出SPOOLing系統(tǒng)控制這臺(tái)打印機(jī)進(jìn)程,依次將隊(duì)列中的輸出文件打印出來。 5.4.5 SPOOLing技術(shù)SPOOLing系統(tǒng)的特點(diǎn)提高I/O的速度將獨(dú)占設(shè)備改造為共享設(shè)備實(shí)現(xiàn)虛擬設(shè)備的功能 5.4.5 SPOOLing技術(shù)設(shè)備驅(qū)動(dòng)程序的功能接收上層軟件發(fā)來的抽象要求(如read命令等),再把它轉(zhuǎn)換成具體要求。檢查用戶I/O請(qǐng)求的合法性,了解I/O設(shè)備
37、的狀態(tài),設(shè)置工作方式。由驅(qū)動(dòng)程序向設(shè)備控制器發(fā)出I/O命令,啟動(dòng)分配到的I/O設(shè)備,完成指定的I/O操作。及時(shí)響應(yīng)由控制器或通道發(fā)來的中斷請(qǐng)求,并根據(jù)其中斷調(diào)用相應(yīng)的中斷處理程序進(jìn)行處理。對(duì)于設(shè)置有通道的計(jì)算機(jī)系統(tǒng),驅(qū)動(dòng)程序還應(yīng)能夠根據(jù)用戶的I/O請(qǐng)求,自動(dòng)地構(gòu)成通道程序。5.5.1 設(shè)備驅(qū)動(dòng)程序的功能和特點(diǎn)設(shè)備處理方式 根據(jù)在設(shè)備處理時(shí)是否設(shè)置進(jìn)程,以及設(shè)置什么樣的進(jìn)程,設(shè)備處理方式可分為以下三類:為每一類設(shè)備設(shè)置一個(gè)I/O進(jìn)程它專門執(zhí)行這類設(shè)備的I/O操作。比如為所有的交互終端設(shè)置一個(gè)交互式終端進(jìn)程。整個(gè)系統(tǒng)中設(shè)置一個(gè)I/O進(jìn)程全面負(fù)責(zé)系統(tǒng)的數(shù)據(jù)傳送工作,I/O請(qǐng)求處理模塊,設(shè)備分配模塊以
38、及緩沖器管理模塊和中斷原因分析、中斷處理模塊和后述的設(shè)備驅(qū)動(dòng)模塊都是I/O進(jìn)程的一部分。由于現(xiàn)代計(jì)算機(jī)系統(tǒng)設(shè)備十分復(fù)雜,I/O負(fù)擔(dān)很重,因此,又可把I/O進(jìn)程分為輸入進(jìn)程和輸出進(jìn)程。5.5.1 設(shè)備驅(qū)動(dòng)程序的功能和特點(diǎn)不設(shè)置專門的設(shè)備處理進(jìn)程而是只為各類設(shè)備設(shè)置相應(yīng)的設(shè)備處理程序,供用戶進(jìn)程和系統(tǒng)進(jìn)程調(diào)用。在UNIX系統(tǒng)中,每類設(shè)備都有一個(gè)驅(qū)動(dòng)程序,用它來控制該類設(shè)備。任何一個(gè)驅(qū)動(dòng)程序通常都包含了用于執(zhí)行不同操作的多個(gè)函數(shù),如打開、關(guān)閉、啟動(dòng)設(shè)備、讀和寫等函數(shù)。為使核心能方便地轉(zhuǎn)向各函數(shù),系統(tǒng)為每類設(shè)備提供了一個(gè)設(shè)備開關(guān)表,其中有該類設(shè)備的各函數(shù)的入口地址,它是核心與驅(qū)動(dòng)的接口。如下圖所示。5
39、.5.1 設(shè)備驅(qū)動(dòng)程序的功能和特點(diǎn)5.5.1 設(shè)備驅(qū)動(dòng)程序的功能和特點(diǎn) Open close Open close read write ioctl mount unmount read write 字符設(shè)備開關(guān)表高速緩沖調(diào)用 塊設(shè)備開關(guān)表Open close read write ioctl 驅(qū)動(dòng)程序設(shè)備中斷處理程序Open close strategy 驅(qū)動(dòng)程序設(shè)備中斷處理程序 中斷向量 中斷向量設(shè)備驅(qū)動(dòng)程序的特點(diǎn)與一般的應(yīng)用程序及系統(tǒng)程序有明顯的差異:是一個(gè)請(qǐng)求I/O進(jìn)程與設(shè)備控制器之間的一個(gè)通信程序驅(qū)動(dòng)程序與I/O設(shè)備的特性緊密相關(guān)驅(qū)動(dòng)程序與I/O控制方式緊密相關(guān)驅(qū)動(dòng)程序與硬件緊密相關(guān)
40、5.5.1 設(shè)備驅(qū)動(dòng)程序的功能和特點(diǎn)1.將抽象要求轉(zhuǎn)換成為具體要求 將用戶和上層軟件對(duì)設(shè)備控制的抽象要求轉(zhuǎn)換成對(duì)設(shè)備的具體要求,如對(duì)抽象要求的盤塊號(hào)轉(zhuǎn)換為磁盤的盤面、磁道及扇區(qū)。檢查I/O請(qǐng)求的合理性。讀出和檢查設(shè)備的狀態(tài),確保設(shè)備處于就緒態(tài)。傳送必要的參數(shù),如傳送的字節(jié)數(shù),數(shù)據(jù)在主存的首址等。工作方式的設(shè)置啟動(dòng)I/O設(shè)備,并檢查啟動(dòng)是否成功,如成功則將控制返回給I/O控制系統(tǒng),在I/O設(shè)備忙于傳送數(shù)據(jù)時(shí),該用戶進(jìn)程把自己阻塞,直至中斷到來才將它喚醒,而CPU可干別的事。5.5.2 設(shè)備驅(qū)動(dòng)程序的處理過程在設(shè)置I/O進(jìn)程時(shí),當(dāng)中斷處理程序開始執(zhí)行時(shí),都必須去喚醒阻塞的驅(qū)動(dòng)(程序)進(jìn)程。在采用信
41、號(hào)量機(jī)制時(shí),可通過執(zhí)行V操作,將處于阻塞狀態(tài)的驅(qū)動(dòng)(程序)進(jìn)程喚醒。保護(hù)被中斷進(jìn)程的CPU現(xiàn)場(chǎng)。分析中斷原因,轉(zhuǎn)入相應(yīng)的設(shè)備中斷處理程序。進(jìn)程中斷處理,判別此次I/O完成是正常結(jié)束中斷還是異常結(jié)束中斷,分別作相應(yīng)處理?;謴?fù)被中斷進(jìn)程或由調(diào)度程序選中的進(jìn)程的CPU的現(xiàn)場(chǎng)返回被中斷的進(jìn)程,或進(jìn)入新選中的進(jìn)程繼續(xù)運(yùn)行。5.5.3 中斷處理程序的處理過程 在設(shè)備控制器控制下,I/O設(shè)備完成了I/O操作后,控制器(或通道)便向CPU發(fā)出一中斷請(qǐng)求,CPU響應(yīng)后便轉(zhuǎn)向中斷處理程序,中斷處理程序大致包含以下幾步:提高I/O速度的主要途徑:選擇性能好的磁盤采用適當(dāng)?shù)恼{(diào)度算法設(shè)置磁盤高速緩沖區(qū)5.1.1 磁盤性
42、能簡(jiǎn)述5.1.2 磁盤調(diào)度算法5.6 磁盤存儲(chǔ)管理器數(shù)據(jù)的組織盤片(Platter )磁盤最基本的組成部分是由堅(jiān)硬金屬材料制成的涂以磁性介質(zhì)的盤片,不同容量硬盤的盤片數(shù)不等。每個(gè)盤片有兩面,都可記錄信息。磁道 (Tracks)盤片表面上以盤片中心為圓心,不同半徑的同心圓稱為磁道。扇區(qū)(Sectors) 盤片被分成許多扇形的區(qū)域,每個(gè)區(qū)域叫一個(gè)扇區(qū),硬盤每個(gè)扇區(qū)可存儲(chǔ)512字節(jié)信息。FAT32模式下,每個(gè)扇區(qū)的容量為4KB。每個(gè)扇區(qū)的大小相當(dāng)于一個(gè)盤塊。磁頭(Heads)每個(gè)盤片的每一面都會(huì)有一個(gè)讀寫頭(read-write head),來讀取相應(yīng)盤面的內(nèi)容。習(xí)慣用磁頭號(hào)來區(qū)分。5.6.1 磁盤
43、性能簡(jiǎn)述5.6.1 磁盤性能簡(jiǎn)述柱面 (Cylinders)不同盤片相同半徑的磁道所組成的圓柱稱為柱面。磁道與柱面都是表示不同半徑的圓,在許多場(chǎng)合,磁道和柱面可以互換使用。扇區(qū),磁道(或柱面)和磁頭數(shù)構(gòu)成了硬盤結(jié)構(gòu)的基本參數(shù),幫這些 參數(shù)可以得到硬盤的容量,基計(jì)算公式為: 存儲(chǔ)容量磁頭數(shù)磁道(柱面)數(shù)每道扇區(qū)數(shù)每扇區(qū)字節(jié)數(shù)1.44M =28018512 磁盤的類型固定頭磁盤每條磁道上都有一個(gè)讀/寫磁頭,所有的磁頭被裝入一個(gè)磁臂通過這些磁頭可以訪問所有磁道,并進(jìn)行并行讀寫主要用于大容量磁盤移動(dòng)頭磁盤每個(gè)盤面僅有一個(gè)磁頭,被裝入一個(gè)磁臂中為能訪問盤面上的所有磁道,該磁頭必須移動(dòng)以進(jìn)行尋道只能串行讀
44、/寫,致使I/O速度較慢結(jié)構(gòu)簡(jiǎn)單,廣泛應(yīng)用中、小型磁盤,微機(jī)上的硬盤和軟盤,都采用移動(dòng)磁頭結(jié)構(gòu)5.6.1 磁盤性能簡(jiǎn)述磁盤訪問時(shí)間尋道時(shí)間(seek time)Ts把磁頭從當(dāng)前位置移到指定磁道所經(jīng)歷的時(shí)間,一般為230毫秒,平均約為10毫秒。 Ts=m*n+ss-磁盤的啟動(dòng)時(shí)間,大約3ms;m-每移動(dòng)一條磁道所經(jīng)歷的時(shí)間,對(duì)一般磁盤:m0.3ms,對(duì)高速磁盤:m0.1ms;n-移動(dòng)的磁道數(shù)目;5.6.1 磁盤性能簡(jiǎn)述旋轉(zhuǎn)延遲時(shí)間(rotational latency time)Tr指定扇區(qū)移動(dòng)到磁頭下所經(jīng)歷的時(shí)間。 Tr=1/2r (平均情況下,需要旋轉(zhuǎn)半圈)r磁盤以秒計(jì)的旋轉(zhuǎn)速度一個(gè)7200
45、(轉(zhuǎn)/每分鐘)的硬盤,則旋轉(zhuǎn)延遲時(shí)間為 601000720024.17毫秒。一個(gè)5400(轉(zhuǎn)/每分鐘)的硬盤,旋轉(zhuǎn)延遲時(shí)間為 601000540025.56毫秒。一個(gè)300/600(轉(zhuǎn)/每分鐘)軟盤,平均旋轉(zhuǎn)延遲時(shí)間為6010003002100毫秒, 601000600250毫秒。5.6.1 磁盤性能簡(jiǎn)述傳輸時(shí)間Tt數(shù)據(jù)從磁盤讀出,或向磁盤寫數(shù)據(jù)所經(jīng)歷的時(shí)間,約為零點(diǎn)幾個(gè)毫秒,可以忽略不計(jì)。Ttb/rNb讀寫的字節(jié)數(shù) r磁盤以秒計(jì)的旋轉(zhuǎn)速度N一條磁道上的字節(jié)數(shù)訪問時(shí)間Ta=Ts+Tr+Tt=(m*n+s)+1/2r+b/rN5.6.1 磁盤性能簡(jiǎn)述移動(dòng)磁頭磁道為哪個(gè)進(jìn)程服務(wù)旋轉(zhuǎn)磁盤扇區(qū)為哪個(gè)進(jìn)
46、程服務(wù)目標(biāo)各進(jìn)程對(duì)磁盤的平均訪問時(shí)間(主要是平均尋道時(shí)間,即平均移動(dòng)的磁道數(shù)目)最小5.6.2 磁盤調(diào)度算法先來先服務(wù)FCFS(First-Come,First-Served) 最簡(jiǎn)單的磁盤調(diào)度算法,根據(jù)進(jìn)程請(qǐng)求訪問磁盤的先后次序進(jìn)行調(diào)度。優(yōu)點(diǎn) 公平、簡(jiǎn)單,每個(gè)進(jìn)程的請(qǐng)求都能依次得到處理,不會(huì)出現(xiàn)某個(gè)進(jìn)程長(zhǎng)時(shí)間得不到滿足的情況。缺點(diǎn) 未對(duì)尋道進(jìn)行優(yōu)化,平均尋道時(shí)間可能較長(zhǎng)5.6.2 磁盤調(diào)度算法5.6.2 磁盤調(diào)度算法磁頭從100#磁道開始被訪問的下一個(gè)磁道號(hào)移動(dòng)距離(磁道數(shù))5545583391918219072160701501038112184146平均尋道長(zhǎng)度:55.3最短尋道時(shí)間優(yōu)先
47、SSTF(Shortest Seek Time First) 選擇要訪問的磁道與當(dāng)前磁頭所在的磁道距離最近的進(jìn)程優(yōu)點(diǎn)每次的尋道時(shí)間最短缺點(diǎn)不能保障平均尋道時(shí)間最短,出現(xiàn)進(jìn)程“饑餓”現(xiàn)象5.6.2 磁盤調(diào)度算法5.6.2 磁盤調(diào)度算法從100磁道開始被訪問的下一個(gè)磁道號(hào)移動(dòng)距離(磁道數(shù))901058325533916387218201501321601018424平均尋道長(zhǎng)度:27.4掃描算法SCAN進(jìn)程“饑餓”現(xiàn)象在SSTF中,若不斷有新進(jìn)程到來,且其訪問的磁道與當(dāng)前磁道的距離較近,這種進(jìn)程被優(yōu)先執(zhí)行,而老進(jìn)程一直得不到滿足。SCAN算法不僅考慮訪問的磁道與當(dāng)前磁道的距離,更優(yōu)先考慮的是磁頭的當(dāng)前移動(dòng)方向,又稱電梯調(diào)度算法。優(yōu)點(diǎn)較好的尋道性能,又能防止進(jìn)程“饑餓”現(xiàn)象,被廣泛應(yīng)用與大、中、小型機(jī)及網(wǎng)絡(luò)中的磁盤調(diào)度缺點(diǎn)可能使進(jìn)程的請(qǐng)求被嚴(yán)重推遲5.6.2 磁盤調(diào)度算法5.6.2 磁盤調(diào)度算法從100磁道開始,向磁道號(hào)增加的方向移動(dòng)被訪問的下一個(gè)磁道號(hào)移動(dòng)距離(磁道數(shù))1505016010184249094583255339163811820平均尋道長(zhǎng)度:27.85.6.2 磁盤調(diào)度
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 汽車文化課程介紹
- 福建省廈門市同安實(shí)驗(yàn)中學(xué)2025-2026學(xué)年七年級(jí)上學(xué)期期末語文試題( 含答案)
- 化工儲(chǔ)罐培訓(xùn)材料
- 飛蛾介紹教學(xué)課件
- 鋼結(jié)構(gòu)技術(shù)規(guī)范執(zhí)行要點(diǎn)
- 2026年度菏澤鄄城縣事業(yè)單位公開招聘初級(jí)綜合類崗位人員參考考試題庫(kù)及答案解析
- 2026年東北電力大學(xué)公開招聘博士人才1號(hào)(73人)參考考試題庫(kù)及答案解析
- 2026河南平頂山文化藝術(shù)職業(yè)學(xué)院招聘48人參考考試題庫(kù)及答案解析
- 市場(chǎng)推廣宣傳公司財(cái)務(wù)管理制度
- cosplay中國(guó)活動(dòng)策劃方案(3篇)
- 2026年樂陵市市屬國(guó)有企業(yè)公開招聘工作人員6名備考題庫(kù)及答案詳解一套
- DB32/T+5309-2025+普通國(guó)省道智慧公路建設(shè)總體技術(shù)規(guī)范
- 2026年工程監(jiān)理招聘面試常見問題集
- 2025-2030中國(guó)環(huán)保污水處理產(chǎn)業(yè)現(xiàn)狀供需研判及投資前景規(guī)劃分析報(bào)告
- 康復(fù)醫(yī)學(xué)中心運(yùn)營(yíng)報(bào)告
- 酒店餐飲營(yíng)銷管理制度內(nèi)容(3篇)
- 林業(yè)執(zhí)法案件課件
- 卵巢囊腫蒂扭轉(zhuǎn)治療課件
- 十四五規(guī)劃試題及答案
- 2025-2026學(xué)年高三上學(xué)期10月階段性教學(xué)質(zhì)量評(píng)估語文試卷及參考答案
- 2025年低空經(jīng)濟(jì)行業(yè)災(zāi)害應(yīng)急演練與評(píng)估報(bào)告
評(píng)論
0/150
提交評(píng)論