第5章設(shè)備管理_第1頁
第5章設(shè)備管理_第2頁
第5章設(shè)備管理_第3頁
第5章設(shè)備管理_第4頁
第5章設(shè)備管理_第5頁
已閱讀5頁,還剩85頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章設(shè)備管理

教學(xué)要點

本章主要內(nèi)容包括設(shè)備管理的任務(wù)和功能,設(shè)備管理的硬件組織與軟件組織,設(shè)備管理中的緩沖技術(shù),設(shè)備分配和設(shè)備驅(qū)動程序的處理,磁盤存儲管理。應(yīng)重點掌握設(shè)備管理中的緩沖技術(shù),設(shè)備驅(qū)動程序的設(shè)計,掌握設(shè)備無關(guān)性的概念,設(shè)備分配與回收算法。

第五章設(shè)備管理計算機系統(tǒng)中,“設(shè)備”是指除中央處理器和主存以外的所有設(shè)備。這些設(shè)備常稱為外部設(shè)備或I/O設(shè)備。設(shè)備管理的對象主要是I/O設(shè)備,還可能涉及到設(shè)備控制器和I/O通道。設(shè)備管理的基本任務(wù)是完成用戶提出的I/O請求,提高I/O速率以及提高I/O設(shè)備的利用率。設(shè)備管理的主要功能:緩沖區(qū)管理、設(shè)備分配、設(shè)備處理、虛擬設(shè)備及實現(xiàn)設(shè)備獨立性等。第五章設(shè)備管理5.1I/O系統(tǒng)5.2I/O控制方式5.3緩沖管理5.4設(shè)備分配5.5設(shè)備處理5.6磁盤存儲器管理5.1I/O系統(tǒng)I/O系統(tǒng)是用于實現(xiàn)數(shù)據(jù)輸入、輸出及數(shù)據(jù)存儲的系統(tǒng)。在I/O系統(tǒng)中,除了需要直接用于I/O和存儲信息的設(shè)備外,還需要有相應(yīng)的設(shè)備控制器和高速總線。有的大中型計算機系統(tǒng)中,還配置了I/O通道或I/O處理機。5.1I/O系統(tǒng)5.1.1I/O設(shè)備1.I/O設(shè)備的類型1)按傳輸速率分類按傳輸速度的高低,可將I/O設(shè)備分為三類。第一類是低速設(shè)備,這是指其傳輸速率僅為每秒鐘幾個字節(jié)至數(shù)百個字節(jié)的一類設(shè)備。屬于低速設(shè)備的典型設(shè)備有鍵盤、鼠標(biāo)器、語音的輸入和輸出等設(shè)備。第二類是中速設(shè)備,這是指其傳輸速率在每秒鐘數(shù)千個字節(jié)至數(shù)萬個字節(jié)的一類設(shè)備。典型的中速設(shè)備有行式打印機、激光打印機等。第三類是高速設(shè)備,這是指其傳輸速率在數(shù)百千個字節(jié)至數(shù)十兆字節(jié)的一類設(shè)備。典型的高速設(shè)備有磁帶機、磁盤機、光盤機等。2)按信息交換的單位分類

可將I/O設(shè)備分成兩類。第一類是塊設(shè)備(BlockDevice),這類設(shè)備用于存儲信息。由于信息的存取總是以數(shù)據(jù)塊為單位,故而得名。它屬于有結(jié)構(gòu)設(shè)備。典型的塊設(shè)備是磁盤,每個盤塊的大小為512B~4KB。磁盤設(shè)備的基本特征是其傳輸速率較高,通常每秒鐘為幾兆位;另一特征是可尋址,即對它可隨機地讀/寫任一塊;此外,磁盤設(shè)備的I/O常采用DMA方式。第二類是字符設(shè)備(CharacterDevice),用于數(shù)據(jù)的輸入和輸出。其基本單位是字符,故稱為字符設(shè)備。屬于無結(jié)構(gòu)類型。字符設(shè)備種類繁多,如交互式終端、打印機等。字符設(shè)備基本特征是其傳輸速率低,通常為幾個字節(jié)到幾千字節(jié);另一特征是不可尋址,即輸入輸出時不能制定數(shù)據(jù)的輸入源地址及輸出的目標(biāo)地址。此外,字符設(shè)備在輸入/輸出時,常采用中斷驅(qū)動方式。3)按設(shè)備的共享屬性分類這種分類方式可將I/O設(shè)備分為如下三類:獨占設(shè)備。(2)共享設(shè)備。(3)虛擬設(shè)備。2.設(shè)備與控制器之間的接口設(shè)備不是直接與CPU進行通信,而是與設(shè)備控制器通信。圖5-1設(shè)備與控制器間的接口設(shè)備控制器主要職責(zé)是控制一個或多個I/O設(shè)備,以實現(xiàn)I/O設(shè)備和計算機之間的信息交換。它接收從CPU發(fā)來的命令,并去控制I/O設(shè)備工作,以使處理機從繁雜的設(shè)備控制事務(wù)中解脫出來。為了實現(xiàn)設(shè)備的通用性和互換性,控制器和設(shè)備之間應(yīng)采用標(biāo)準(zhǔn)接口,如SCSI(小型計算機系統(tǒng)接口)或IDE(集成設(shè)備電子器件)接口。設(shè)備控制器上一般都有一個接線器,可以通過電纜和標(biāo)準(zhǔn)接口相聯(lián)接,它可以控制2個、4個或8個同類設(shè)備。對于個人計算機和小型計算機系統(tǒng)來說,由于它們的I/O系統(tǒng)比較簡單,所以CPU與控制器之間的通信采用單總線模型,而大型主機則采用通道模型。5.1.2設(shè)備控制器CPU存儲器磁盤控制器打印機控制器其它控制器磁盤驅(qū)動器打印機系統(tǒng)總線……圖單總線型I/O系統(tǒng)結(jié)構(gòu)內(nèi)存I/O通道1I/O通道2控制器控制器控制器控制器設(shè)備設(shè)備圖5.2具有通道的I/O系統(tǒng)結(jié)構(gòu)5.1.2設(shè)備控制器1.設(shè)備控制器的基本功能1)接收和識別命令(控制寄存器)2)數(shù)據(jù)交換(數(shù)據(jù)寄存器)3)標(biāo)識和報告設(shè)備的狀態(tài)(狀態(tài)寄存器)4)地址識別(地址譯碼器)5)數(shù)據(jù)緩沖(緩沖器)6)差錯控制⑴設(shè)備控制器與CPU的接口。該接口用于實現(xiàn)設(shè)備控制器與CPU之間的通信,其中有三類信號線:

數(shù)據(jù)線、地址線、控制線。數(shù)據(jù)線通常與兩類寄存器相連接:

①數(shù)據(jù)寄存器。②控制/狀態(tài)寄存器。

⑵設(shè)備控制器與設(shè)備的接口。在一個設(shè)備控制器上可以連接一臺或多臺設(shè)備。相應(yīng)地,在控制器中就有一個或多個設(shè)備接口,一個接口連接一臺設(shè)備,在每個接口中都有數(shù)據(jù)、控制和狀態(tài)三種類型的信號:

①數(shù)據(jù)信號。②控制信號。③狀態(tài)信號。

2.設(shè)備控制器的組成圖5-2設(shè)備控制器的組成(3)I/O邏輯用于對I/O的控制.通過一組控制線與CPU交互。CPU利用該邏輯向控制器發(fā)送I/O命令;I/O邏輯對接收到的命令進行譯碼。每當(dāng)CPU要啟動一個設(shè)備時,一方面要將啟動命令送給控制器;另一方面又同時通過地址線把地址送給控制器。由控制器的I/O邏輯對收到的地址進行譯碼,再根據(jù)譯出的命令對所選的設(shè)備進行控制。1.通道及通道與CPU間的通信在CPU與設(shè)備控制器之間增設(shè)通道,主要目的是為建立獨立的I/O操作,把CPU從繁雜的I/O任務(wù)中解脫出來。通道又稱I/O處理機,是一個獨立于CPU的專管輸入/輸出控制的處理機,它具有執(zhí)行I/O指令的能力,并通過執(zhí)行通道(I/O)程序來控制設(shè)備與內(nèi)存直接進行數(shù)據(jù)交換。有了通道之后,CPU與通道之間的關(guān)系是主從關(guān)系,CPU是主設(shè)備,通道是從設(shè)備,這樣采用通道方式實現(xiàn)數(shù)據(jù)傳輸?shù)倪^程如下:當(dāng)運行的程序要求傳輸數(shù)據(jù)時,CPU向通道發(fā)I/O指令,命令通道開始工作,CPU就可以進行其它數(shù)據(jù)處理;通道接收到CPU的I/O指令后,從內(nèi)存中取出相應(yīng)的通道程序,通過執(zhí)行通道程序完成I/O操作;當(dāng)I/O操作完成(或出錯)時,通道以中斷方式中斷CPU正在執(zhí)行的程序,請求CPU的處理。5.1.3I/O通道2.通道類型按信息交換方式可分為以下三種類型:⑴字節(jié)多路通道它含有多個非分配型子通道,每個子通道連接一臺I/O設(shè)備,這些子通道以字節(jié)為單位按時間片輪轉(zhuǎn)方式共享主通道。每次子通道控制外設(shè)交換完一個字節(jié)后,便立即讓出字節(jié)多路通道,以便讓另一個子通道使用。當(dāng)所有子通道輪轉(zhuǎn)一周后,就又返回來由第一個子通道去使用字節(jié)多路通道。字節(jié)多路通道不適于連接高速設(shè)備。1)字節(jié)多路通道(ByteMultiplexorChannel)圖5-3字節(jié)多路通道的工作原理(2)

數(shù)組選擇通道(BlockSelectorChannel)它按成組方式進行數(shù)據(jù)傳送,每次以塊為單位傳送一批數(shù)據(jù),所以傳輸速度很快,主要用于連接高速外圍設(shè)備,如磁盤等。但由于它只含一個分配型子通道,在一段時間內(nèi)只能執(zhí)行一個通道程序,控制一臺設(shè)備進行數(shù)據(jù)傳送,致使當(dāng)某臺設(shè)備占用了該通道后,便一直獨占,直至它傳送完畢釋放該通道,其它設(shè)備才可使用。通道利用率低。(3)數(shù)組多路通道(BlockMultiplexorChannel)

數(shù)組選擇通道雖有很高的傳輸速率,但它卻每次只允許一個設(shè)備傳輸數(shù)據(jù)。

數(shù)組多路通道是將數(shù)組選擇通道傳輸速率高和字節(jié)多路通道能使各子通道(設(shè)備)分時并行操作的優(yōu)點相結(jié)合而形成的一種新通道。它含有多個非分配型子通道,因而這種通道既具有很高的數(shù)據(jù)傳輸速率,又能獲得令人滿意的通道利用率。也正因此,才使該通道能被廣泛地用于連接多臺高、中速的外圍設(shè)備,其數(shù)據(jù)傳送是按數(shù)組方式進行的。20以字節(jié)交叉方式控制設(shè)備傳輸信息慢速設(shè)備2慢速設(shè)備3字節(jié)多路通道慢速設(shè)備1成組多路通道快速設(shè)備1快速設(shè)備2快速設(shè)備3快速設(shè)備i以數(shù)據(jù)塊分時方式控制設(shè)備傳輸信息數(shù)據(jù)選擇通道快速設(shè)備1快速設(shè)備2快速設(shè)備j以數(shù)據(jù)塊獨占方式控制設(shè)備3.通道的類型圖5-5多通路I/O系統(tǒng)3.“瓶頸”問題圖5-4單通路I/O系統(tǒng)由于通道價格昂貴,機器中所設(shè)置的通道數(shù)量必然較少,這就使通道成了I/O的瓶頸,造成整個系統(tǒng)吞吐量的下降。5.2I/O控制方式5.2.1程序I/O方式

在程序I/O方式中,由于CPU的高速性和I/O設(shè)備的低速性,致使CPU的絕大部分時間都處于等待I/O設(shè)備完成數(shù)據(jù)I/O的循環(huán)測試中,造成對CPU的極大浪費。在該方式中,CPU之所以要不斷地測試I/O設(shè)備的狀態(tài),就是因為在CPU中無中斷機構(gòu),使I/O設(shè)備無法向CPU報告它已完成了一個字符的輸入操作。圖5-7程序I/O和中斷驅(qū)動方式的流程5.2.2中斷驅(qū)動I/O控制方式在I/O設(shè)備輸入每個數(shù)據(jù)的過程中,由于無須CPU干預(yù),因而可使CPU與I/O設(shè)備并行工作。僅當(dāng)輸完一個數(shù)據(jù)時,才需CPU花費極短的時間去做些中斷處理??梢?,這樣可使CPU和I/O設(shè)備都處于忙碌狀態(tài),從而提高了整個系統(tǒng)的資源利用率及吞吐量。例如,從終端輸入一個字符的時間約為100ms,而將字符送入終端緩沖區(qū)的時間小于0.1ms。若采用程序I/O方式,CPU約有99.9ms的時間處于忙—等待中。采用中斷驅(qū)動方式后,CPU可利用這99.9ms的時間去做其它事情,而僅用0.1ms的時間來處理由控制器發(fā)來的中斷請求??梢?,中斷驅(qū)動方式可以成百倍地提高CPU的利用率。5.2.3直接存儲器訪問DMAI/O控制方式該方式的特點是:①數(shù)據(jù)傳輸?shù)幕締挝皇菙?shù)據(jù)塊,即在CPU與I/O設(shè)備之間,每次傳送至少一個數(shù)據(jù)塊;②所傳送的數(shù)據(jù)是從設(shè)備直接送入內(nèi)存的,或者相反;③僅在傳送一個或多個數(shù)據(jù)塊的開始和結(jié)束時,才需CPU干預(yù),整塊數(shù)據(jù)的傳送是在控制器的控制下完成的??梢姡珼MA方式較之中斷驅(qū)動方式,又是成百倍地減少了CPU對I/O的干預(yù),進一步提高了CPU與I/O設(shè)備的并行操作程度。5.2.4I/O通道控制方式1.I/O通道控制方式的引入I/O通道方式是DMA方式的發(fā)展,它可進一步減少CPU的干預(yù),即把對一個數(shù)據(jù)塊的讀(或?qū)?為單位的干預(yù),減少為對一組數(shù)據(jù)塊的讀(或?qū)?及有關(guān)的控制和管理為單位的干預(yù)。同時,又可實現(xiàn)CPU、通道和I/O設(shè)備三者的并行操作,從而更有效地提高整個系統(tǒng)的資源利用率。例如,當(dāng)CPU要完成一組相關(guān)的讀(或?qū)?操作及有關(guān)控制時,只需向I/O通道發(fā)送一條I/O指令,以給出其所要執(zhí)行的通道程序的首址和要訪問的I/O設(shè)備,通道接到該指令后,通過執(zhí)行通道程序便可完成CPU指定的I/O任務(wù)。2.通道程序通道通過執(zhí)行通道程序,與設(shè)備控制器共同實現(xiàn)對I/O設(shè)備的控制。通道程序由一系列通道指令構(gòu)成。通道指令與一般的機器指令不同,在它的每條指令中都包含如下信息:操作碼。(2)內(nèi)存地址。(3)計數(shù)。(4)通道程序結(jié)束位P。(5)記錄結(jié)束標(biāo)志R。操作PR計數(shù)內(nèi)存地址WRITE0080813WRITE001401034WRITE01605830WRITE013002000WRITE002501850WRITE11250720下圖是由6條通道指令所構(gòu)成的簡單的通道程序。該程序的功能是將內(nèi)存中不同地址的數(shù)據(jù),寫成多個記錄。5.3緩沖管理5.3.1緩沖的引入緩和CPU與I/O設(shè)備間速度不匹配的矛盾。(2)減少對CPU的中斷頻率,放寬對CPU中斷響應(yīng)時間的

限制。(3)提高CPU和I/O設(shè)備之間的并行性。圖5-10利用緩沖寄存器實現(xiàn)緩沖僅有一位緩沖區(qū)CPU每100μs內(nèi)就得予以響應(yīng)加一個8位緩沖器CPU被中斷頻率會降低1/8再加一個8位緩沖器CPU被中斷頻率又降低1/85.3.2單緩沖和雙緩沖1.單緩沖(SingleBuffer)操作系統(tǒng)提供的一種最簡單的緩沖形式。單緩沖指當(dāng)一個進程發(fā)出一I/O請求時,操作系統(tǒng)便在主存中為之分配一個緩沖區(qū),用來臨時存放輸入/輸出數(shù)據(jù)。由于單緩沖只設(shè)置一個緩沖區(qū),那么在某一時刻該緩沖區(qū)只能存放輸入數(shù)據(jù)或輸出數(shù)據(jù),而不能既是輸入數(shù)據(jù)又是輸出數(shù)據(jù),否則會引起緩沖區(qū)中數(shù)據(jù)的混亂。2雙緩沖

雙緩沖指在操作系統(tǒng)中為某一設(shè)備設(shè)置兩個緩沖區(qū),當(dāng)一個緩沖區(qū)中的數(shù)據(jù)尚未被處理時可使用另一個緩沖區(qū)存放從設(shè)備讀入的數(shù)據(jù),以此來進一步提高CPU和外設(shè)的并行程度。如下圖(a)所示為雙緩沖示意圖。A、B為兩個緩沖區(qū)。AB用戶進程操作系統(tǒng)I/O設(shè)備圖

雙緩沖示意圖圖5-13雙機通信時緩沖區(qū)的設(shè)置任何時候只能單向傳送雙向傳送時,每機必備兩個緩沖區(qū)5.3.3循環(huán)緩沖

當(dāng)輸入與輸出的速度基本相配時,采用雙緩沖能獲得較好的效果。但若兩者的速度相差較大,雙緩沖效果則不夠理想。由此引入多緩沖機制,可將多個緩沖組織成循環(huán)緩沖形式。循環(huán)緩沖的組成:(1)多個緩沖區(qū)。作為輸入的緩沖區(qū)分三種:裝輸入數(shù)據(jù)的空緩沖區(qū)R、已裝滿數(shù)據(jù)的緩沖區(qū)G以及計算進程正在使用的緩沖區(qū)C。(2)多個指針。作為輸入的緩沖區(qū)設(shè)置3個指針:指示計算進程下一個可用緩沖區(qū)Nextg、指示輸入進程下次可用空緩沖區(qū)R指針Nexti,計算進程正在使用的緩沖區(qū)C的指針Current。圖5-14循環(huán)緩沖5.3.4緩沖池(BufferPool)循環(huán)緩沖僅適用于某特定的I/O進程和計算進程,它們屬于專用緩沖。當(dāng)系統(tǒng)較大時,會有許多這樣的循環(huán)緩沖,當(dāng)緩沖區(qū)到達一定數(shù)量時,對系統(tǒng)性能的提高微乎其微,甚至?xí)瓜到y(tǒng)性能下降。

為了提高緩沖區(qū)的利用率,目前廣泛流行公用緩沖池,在池中設(shè)置多個可供若干進程共享的緩沖區(qū)。即緩沖池是將多個大小相同的緩沖區(qū)連接起來統(tǒng)一進行管理。操作系統(tǒng)與用戶進程將輪流地使用各個緩沖區(qū),以改善系統(tǒng)性能。5.3.4緩沖池(BufferPool)1.緩沖池的組成對于既可用于輸入又可用于輸出的公用緩沖池,其中至少應(yīng)含有以下三種類型的緩沖區(qū):

①空閑緩沖區(qū);②裝滿輸入數(shù)據(jù)的緩沖區(qū);③裝滿輸出數(shù)據(jù)的緩沖區(qū)。

為了管理上的方便,可將相同類型的緩沖區(qū)鏈成一個隊列,形成以下三個隊列:(1)空緩沖隊列emq.(2)輸入隊列inq。(3)輸出隊列outq。除了上述三個隊列外,還具有四種工作緩沖區(qū):用于收容輸入數(shù)據(jù)的工作緩沖區(qū)。

用于提取輸入數(shù)據(jù)的工作緩沖區(qū)。

用于收容輸出數(shù)據(jù)的工作緩沖區(qū)。

用于提取輸出數(shù)據(jù)的工作緩沖區(qū)。2.緩沖池管理的基本操作Getbuf過程和Putbuf過程Getbuf(type):

用于從type所制定的隊列的隊首摘下一個緩沖區(qū)。Putbuf(type,number):用于將由參數(shù)number所指示的緩沖區(qū)掛在type隊列上。3.緩沖池的工作方式圖5-15緩沖區(qū)的工作方式

緩沖池工作在收容輸入、提取輸入、收容輸出和提取輸出四種方式下:①收容輸入工作方式(輸入進程需要輸入數(shù)據(jù)時)②提取輸入工作方式(計算進程需要輸入數(shù)據(jù)時)③收容輸出工作方式(計算進程需要輸出數(shù)據(jù)時)④提取輸出工作方式(輸出進程需要輸出數(shù)據(jù)時)5.4設(shè)備分配5.4.1設(shè)備分配中的數(shù)據(jù)結(jié)構(gòu)在進行設(shè)備分配時所需的數(shù)據(jù)結(jié)構(gòu)主要有:設(shè)備控制表DCT(DeviceControlTable)控制器控制表COCT(ControllerControlTable)通道控制表CHCT(ChannelControlTable)系統(tǒng)設(shè)備表SDT(SystemDeviceTable)5.4設(shè)備分配5.4.1設(shè)備分配中的數(shù)據(jù)結(jié)構(gòu)系統(tǒng)為每一個設(shè)備都配置了一張設(shè)備控制表DCT,用來記錄設(shè)備的特性、設(shè)備和I/O控制器的連接情況以及設(shè)備的分配和使用情況。它主要包括以下內(nèi)容:①設(shè)備標(biāo)識符。②設(shè)備類型。③設(shè)備地址。④設(shè)備狀態(tài)。⑤與設(shè)備連接的控制器表指針。⑥等待該設(shè)備的進程隊列。⑦重復(fù)執(zhí)行次數(shù)或時間。⑧其它信息,如一些釋放信息等。1.設(shè)備控制表DCT5.4設(shè)備分配5.4.1設(shè)備分配中的數(shù)據(jù)結(jié)構(gòu)1.設(shè)備控制表DCT設(shè)備類型設(shè)備標(biāo)識符設(shè)備狀態(tài):忙/閑等待/不等待與此設(shè)備連接的控制器控制表指針等待此設(shè)備的進程表指針重復(fù)執(zhí)行的次數(shù)和時間其他DCT1DCT2……DCTi……設(shè)備控制表集合與此設(shè)備連接的COCT與此控制器連接的CHCT0與此控制器連接的CHCT0設(shè)備A的DCT控制器B的COCT通道D的CHCT通道E的CHCT控制器C的COCT圖DCT和COCT、CHCT的連接正在使用該設(shè)備的進程等待該設(shè)備的進程表BCD設(shè)備A的DCTPCBB-PCBC-PCBD-PCB圖DCT和PCB的連接2.控制器控制表、通道控制表和系統(tǒng)設(shè)備表圖COCT、CHCT和SDT表5.4.2設(shè)備分配時應(yīng)考慮的因素系統(tǒng)在分配設(shè)備時,應(yīng)考慮的因素有:設(shè)備的固有屬性。設(shè)備分配算法。設(shè)備分配的安全性。設(shè)備獨立性491.設(shè)備的屬性設(shè)備的屬性是指該設(shè)備是適合某進程獨占使用,還是適合幾個進程共享使用。(1)獨占設(shè)備的分配在該進程占用這個設(shè)備期間,即使設(shè)備空置不用,也不能再讓別的進程使用。對于獨占設(shè)備應(yīng)該采用獨占分配策略,即在將一臺設(shè)備分配給某個進程后,便一直由該進程獨占,直至該進程完成并釋放設(shè)備為止。按照獨占分配的策略,對獨占設(shè)備有兩種分配方式:一種是靜態(tài)分配方式一種是動態(tài)分配方式50靜態(tài)分配方式安全性好,不會出現(xiàn)死鎖,但設(shè)備的利用率低。靜態(tài)分配方式動態(tài)分配方式靜態(tài)分配方式是用戶作業(yè)開始運行之前,由系統(tǒng)一次分配該作業(yè)所要求的全部設(shè)備、控制器和通道。一旦分配之后,這些資源就一直為該作業(yè)占用,直到該作業(yè)被撤消。動態(tài)分配方式是指在進程運行過程中根據(jù)需要進行分配。當(dāng)進程需要使用設(shè)備時,通過系統(tǒng)調(diào)用向操作系統(tǒng)提出設(shè)備請求,再由系統(tǒng)按規(guī)定的策略進行分配。一旦傳送完成,便立即釋放。動態(tài)分配有利于提高設(shè)備的利用率,但是在分配策略不好時有可能造成進程死鎖。51(2)共享設(shè)備的使用共享設(shè)備大多是高速、大容量的直接存取存儲設(shè)備。這類設(shè)備不必分配,采用共享的策略,由若干個用戶進程同時使用。用戶對共享設(shè)備的使用,一般以文件方式存取。通過文件系統(tǒng)可以實現(xiàn)按文件名來存取共享設(shè)備上的信息。(3)虛擬設(shè)備的使用因為虛擬設(shè)備已屬于共享設(shè)備,因而也可采用共享策略,讓多個進程同時使用。通過快速的共享方式的設(shè)備,把一臺低速物理獨占設(shè)備改造成為若干臺虛擬的同類設(shè)備。從用戶觀點看,每個用戶都感到是系統(tǒng)為自己提供了一臺物理設(shè)備似的。節(jié)目錄522.設(shè)備分配算法設(shè)備的分配原則,除了與設(shè)備的屬性有關(guān)外,還與系統(tǒng)采用的算法有關(guān)。一般采用兩種算法:先請求先服務(wù)優(yōu)先級高者優(yōu)先這就是先來先服務(wù)的方法。當(dāng)有多個進程對同一個設(shè)備提出I/O請求時,或者是在同一設(shè)備上進行多次傳送時,系統(tǒng)按進程提出I/O請求的先后順序,將進程的I/O請求命令排成I/O請求隊列。當(dāng)該設(shè)備空閑時,系統(tǒng)從隊首取下一個I/O請求消息,將設(shè)備分配給發(fā)出這個請求命令的進程。53這種算法將I/O請求隊列中的I/O請求按照發(fā)出此I/O請求的進程的優(yōu)先級由高至低進行排序。系統(tǒng)在設(shè)備空閑時,總是從隊首取下最高優(yōu)先級進程發(fā)出的I/O請求進行設(shè)備分配。這與進程調(diào)度的優(yōu)先算法是一致的。即進程的優(yōu)先級高,它的I/O請求優(yōu)先級也優(yōu)先予以滿足,顯然有助于該進程盡快完成,從而盡早釋放它所占有的系統(tǒng)資源。對于優(yōu)先級相同的I/O請求,則按先請求先服務(wù)的原則排隊。設(shè)備的分配原則,除了與設(shè)備的屬性有關(guān)外,還與系統(tǒng)采用的算法有關(guān)。一般采用兩種算法:先請求先服務(wù)優(yōu)先級高者優(yōu)先和進程調(diào)度算法比較少了什么?為什么?和進程調(diào)度比較少了輪轉(zhuǎn)法。獨占設(shè)備不能被中斷呀!2.設(shè)備分配算法543.設(shè)備分配的安全性為了提高設(shè)備的利用率,現(xiàn)代操作系統(tǒng)的設(shè)備分配大都采用了動態(tài)分配方式。從進程運行的安全性出發(fā)產(chǎn)生了兩種設(shè)備分配方式:(1)安全的分配方式在這種分配方式中,每當(dāng)進程以命令形式發(fā)出I/O請后,便進入阻塞狀態(tài),直到其I/O操作完成時才被喚醒。在采用這種分配方式時,一個進程只能提出一個I/O請求,一旦進程獲得某個設(shè)備后便阻塞、使它不可能再請求其它任何資源,而它運行時又不保持任何資源。因此,這種分配方式使得死鎖產(chǎn)生的四個必要條件之一的“請求和保持”條件就不會成立,因而分配是安全的。55這種分配方式的優(yōu)點是程序的編制更為方便。另一個優(yōu)點是設(shè)備分配安全,不會產(chǎn)生死鎖現(xiàn)象。其缺點是進程和I/O設(shè)備之間是串行工作,進程推進緩慢。(2)不安全的分配方式為了加快推進速度,使CPU和I/O設(shè)備能并行工作,應(yīng)使某些進程以命令形式發(fā)出I/O請求之后,仍可繼續(xù)進行,需要時又可發(fā)出第二個I/O請求、第三個I/O請求。僅當(dāng)進程所請求的設(shè)備已被另一進程占用時,進程才進入阻塞狀態(tài)。這種分配方式的優(yōu)點是一個進程可同時操作多個設(shè)備,從而使進程推進迅速。缺點是分配不安全,有可能產(chǎn)生死鎖現(xiàn)象。節(jié)目錄5.4.3設(shè)備獨立性

1.設(shè)備獨立性(DeviceIndependence)的概念為了提高操作系統(tǒng)的可擴展性和適應(yīng)性,人們提出了設(shè)備獨立性(即設(shè)備無關(guān)性)的概念。其含義是:用戶編寫的

應(yīng)用程序獨立于具體使用的物理設(shè)備,即使設(shè)備更換了,

應(yīng)用程序也不用改變。為了實現(xiàn)設(shè)備獨立性而引入了邏輯設(shè)備和物理設(shè)備的概念。

所謂邏輯設(shè)備是實際物理設(shè)備屬性的抽象,它并不局限于

某個具體設(shè)備。在應(yīng)用程序中,使用邏輯設(shè)備名稱來請

求使用某類設(shè)備;而系統(tǒng)在實際執(zhí)行時,還必須使用物理

設(shè)備名稱。因此,系統(tǒng)須具有將邏輯設(shè)備名稱轉(zhuǎn)換為某物

理設(shè)備名稱的功能。設(shè)備獨立性的功能可帶來以下兩方面的好處:

1)設(shè)備分配時的靈活性

當(dāng)應(yīng)用程序(進程)以物理設(shè)備名稱來請求使用指定的某臺設(shè)備時,如果該設(shè)備已經(jīng)被占用,而此時盡管還有幾臺其它相同的設(shè)備正在空閑,該進程仍然阻塞。但如進程以邏輯設(shè)備名稱請求某類設(shè)備時,系統(tǒng)可立即將該類設(shè)備中的任一臺分配給進程,僅當(dāng)所有此類設(shè)備已全部分配完畢時,進程才會阻塞。

2)易于實現(xiàn)I/O重定向

當(dāng)調(diào)試一個程序時,可將程序的輸出送屏幕顯示;而在調(diào)試完成后,如需要打印程序的輸出結(jié)果,系統(tǒng)只要將邏輯設(shè)備對應(yīng)的物理輸出設(shè)備由顯示器改為打印機即可,而不必修改應(yīng)用程序。5.4.4SPOOLing技術(shù)1.什么是SPOOLing為了緩和CPU的高速性與I/O設(shè)備低速性間的矛盾而引入了脫機輸入、脫機輸出技術(shù)。該技術(shù)是利用專門的外圍控制機,將低速I/O設(shè)備上的數(shù)據(jù)傳送到高速磁盤上;或者相反。

5.4.5SPOOLing技術(shù)1.什么是SPOOLing在多道程序的環(huán)境下,利用多道程序中的一道或兩道程序來模擬外圍控制機,把低速I/O設(shè)備上的數(shù)據(jù)傳送到高速磁盤上或把數(shù)據(jù)從磁盤傳送到低速輸出設(shè)備上。這樣,便可在主機的直接控制下,實現(xiàn)脫機輸入、輸出功能。此時的外圍操作與CPU對數(shù)據(jù)的處理同時進行,我們把這種在聯(lián)機情況下實現(xiàn)的同時外圍操作稱為SPOOLing(SimultaneausPeriphernalOperatingOn-Line),或稱為假脫機操作。2.SPOOLing系統(tǒng)的組成輸入井和輸出井。是在磁盤上開辟的兩個大存儲空間,輸入井是模擬脫機輸入時的磁盤,用于暫存I/O設(shè)備輸入的數(shù)據(jù);輸出井是模擬脫機輸出時的磁盤,用于暫存用戶程序的輸出數(shù)據(jù)。輸入緩沖區(qū)和輸出緩沖區(qū)。在內(nèi)存中開辟的兩個緩沖區(qū)。輸入緩沖區(qū)用于暫存由輸入設(shè)備送來的數(shù)據(jù),以后再傳送到輸入井。輸出緩沖區(qū)用于暫存從輸出井送來的數(shù)據(jù),以后再傳送給輸出設(shè)備。輸入進程SPi和輸出進程SPo。Spi模擬脫機輸入時的外圍控制機,將用戶要求的數(shù)據(jù)從輸入機通過輸入緩沖區(qū)再送到輸入井,當(dāng)CPU需要輸入數(shù)據(jù)時,直接從輸入井讀入內(nèi)存;Spo模擬脫機輸出時的外圍控制機,把用戶要求輸出的數(shù)據(jù),先從內(nèi)存送到輸出井,待輸出設(shè)備空閑,再將輸出井中的數(shù)據(jù)經(jīng)過輸出緩沖區(qū)送到輸出設(shè)備上。2.SPOOLing系統(tǒng)的組成圖5-19SPOOLing系統(tǒng)的組成3.共享打印機將一臺獨享打印機改造為可供多個用戶共享的打印機,是應(yīng)用SPOOLing技術(shù)的典型實例。共享打印機技術(shù)已被廣泛地用于多用戶系統(tǒng)和局域網(wǎng)絡(luò)中。當(dāng)用戶進程請求打印輸出時,SPOOLing系統(tǒng)同意為它打印輸出,但并不真正立即把打印機分配給該用戶進程,而只為它做兩件事:①由輸出進程在輸出井中為之申請一個空閑磁盤塊區(qū),并將要打印的數(shù)據(jù)送入其中;②輸出進程再為用戶進程申請一張空白的用戶請求打印表,并將用戶的打印要求填入其中,再將該表掛到請求打印隊列上。若打印機空閑,輸出程序從請求打印隊首取表,將要打印的數(shù)據(jù)從輸出井傳送到內(nèi)存緩沖區(qū),再進行打印,直到打印隊列為空。633、共享打印機4.SPOOLing系統(tǒng)的特點提高了I/O的速度。從對低速I/O設(shè)備進行的I/O操作變?yōu)閷斎刖蜉敵鼍牟僮?如同脫機操作一樣,提高了I/O速度,緩和了CPU與低速I/O設(shè)備速度不匹配的矛盾.

(2)將獨占設(shè)備改造為共享設(shè)備。設(shè)備并沒有分配給任何進程.在輸入井或輸出井中,分配給進程的是一個存儲區(qū)和建立一張I/O請求表.(3)實現(xiàn)了虛擬設(shè)備功能。多個進程同時使用一獨享設(shè)備,而對每一進程而言,都認(rèn)為自己獨占這一設(shè)備,不過,該設(shè)備是邏輯上的設(shè)備.5.5設(shè)備處理設(shè)備處理程序通常又稱為設(shè)備驅(qū)動程序,它是I/O進程與設(shè)備控制器之間的通信程序。其主要任務(wù)是接收上層軟件發(fā)來的抽象要求,如read或write命令,再把他轉(zhuǎn)換為具體要求后,發(fā)送給設(shè)備控制器,啟動設(shè)備去執(zhí)行;此外,它也將設(shè)備控制器發(fā)來的信號傳送給上層軟件。由于驅(qū)動程序與硬件密切相關(guān),每一類設(shè)備都應(yīng)配置一種驅(qū)動程序,也可為功能類似的多類設(shè)備配置一個驅(qū)動程序。5.5設(shè)備處理5.5.1設(shè)備驅(qū)動程序的功能和特點1.設(shè)備驅(qū)動程序的功能(1)接收由I/O進程發(fā)來的命令和參數(shù),并將命令中的抽象要求轉(zhuǎn)換為具體要求,例如,將磁盤塊號轉(zhuǎn)換為磁盤的盤面、磁道號及扇區(qū)號。

(2)檢查用戶I/O請求的合法性,了解I/O設(shè)備的狀態(tài),傳遞有關(guān)參數(shù),設(shè)置設(shè)備的工作方式。(3)發(fā)出I/O命令,如果設(shè)備空閑,便立即啟動I/O設(shè)備去完成指定的I/O操作;如果設(shè)備處于忙碌狀態(tài),則將請求者的請求塊掛在設(shè)備隊列上等待。(4)及時響應(yīng)由控制器或通道發(fā)來的中斷請求,并根據(jù)其中斷類型調(diào)用相應(yīng)的中斷處理程序進行處理。

(5)對于設(shè)置有通道的計算機系統(tǒng),驅(qū)動程序還應(yīng)能夠根據(jù)用戶的I/O請求,自動地構(gòu)成通道程序。2.設(shè)備驅(qū)動程序的特點(1)驅(qū)動程序主要是指在請求I/O的進程與設(shè)備控制器之間的一個通信和轉(zhuǎn)換程序。(2)驅(qū)動程序與設(shè)備控制器和I/O設(shè)備的硬件特性緊密相關(guān),因而對不同類型的設(shè)備應(yīng)配置不同的驅(qū)動程序。(3)驅(qū)動程序與I/O設(shè)備所采用的I/O控制方式緊密相關(guān)。常用的I/O控制方式是中斷驅(qū)動和DMA方式,兩種控制方式下的驅(qū)動程序也不同。(4)由于驅(qū)動程序與硬件緊密相關(guān),因而其中一部分必須用匯編語言書寫。目前許多驅(qū)動程序的基本部分已固化在ROM中。5.5.2設(shè)備驅(qū)動程序的處理過程不同類型的設(shè)備有不同的設(shè)備驅(qū)動程序,但大體可分成兩部分,除了有能夠驅(qū)動I/O設(shè)備工作的驅(qū)動程序外,還需設(shè)備中斷處理程序,以處理I/O完成后的工作。啟動設(shè)備之前,設(shè)備驅(qū)動程序的處理過程如下:將抽象要求轉(zhuǎn)換為具體要求2.檢查I/O請求的合法性3.讀出和檢查設(shè)備的狀態(tài)4.傳送必要的參數(shù)5.工作方式的設(shè)置6.啟動I/O設(shè)備5.5.3中斷處理程序的處理過程處理過程如下:喚醒被阻塞的驅(qū)動(程序)進程2.保護被中斷進程的CPU環(huán)境3.轉(zhuǎn)入相應(yīng)的設(shè)備處理程序4.中斷處理恢復(fù)被中斷進程的現(xiàn)場圖5-20中斷現(xiàn)場保護示意圖圖5-21中斷處理流程I/O操作完成后,驅(qū)動程序必須檢查本次I/O操作中是否發(fā)生了錯誤,并向上層軟件匯報,最終向調(diào)用者報告本次I/O的執(zhí)行情況。I/O軟件5.6磁盤存儲器管理5.6.1磁盤性能簡述數(shù)據(jù)的組織和格式包括一個或多個盤片,每個盤片分兩面,每面分成若干磁道(500~2000),每條磁道上存儲相同數(shù)目的二進制位,每條磁道又分成若干小扇區(qū)(10~100)。為在磁盤上存儲數(shù)據(jù),必須先將磁盤格式化。圖5-22磁盤的格式化2.磁盤的類型常見分類:硬盤和軟盤、單片盤和多片盤、固定頭磁盤和移動頭磁盤。1)固定頭磁盤這種磁盤在每條磁道上都有一讀/寫磁頭,所有的磁頭都被裝在一剛性磁臂中。通過這些磁頭可訪問所有各磁道,并進行并行讀/寫,有效地提高了磁盤的I/O速度。這種結(jié)構(gòu)的磁盤主要用于大容量磁盤上。

2)移動頭磁盤每一個盤面僅配有一個磁頭,也被裝入磁臂中。為能訪問該盤面上的所有磁道,該磁頭必須能移動以進行尋道。可見,移動磁頭僅能以串行方式讀/寫,致使其I/O速度較慢;但由于其結(jié)構(gòu)簡單,故仍廣泛應(yīng)用于中小型磁盤設(shè)備中。3.磁盤訪問時間磁盤設(shè)備工作時,以恒定速率旋轉(zhuǎn)。為了讀或?qū)?,磁頭必須移動到所要求的磁道上,并等待所要求的扇區(qū)的開始位置旋轉(zhuǎn)到磁頭下,然后開始讀寫數(shù)據(jù)。

1)尋道時間Ts這是指把磁臂(磁頭)移動到指定磁道上所經(jīng)歷的時間。該時間是啟動磁臂的時間s與磁頭移動n條磁道所花費的時間之和,即Ts=m×n+s其中,m是一常數(shù),與磁盤驅(qū)動器的速度有關(guān),對一般磁盤,m=0.2;對高速磁盤,m≤0.1,磁臂的啟動時間約為2ms。這樣,對一般的溫盤(溫切斯特),其尋道時間將隨尋道距離的增加而增大,大體上是5~30ms。2)旋轉(zhuǎn)延遲時間Tτ這是指定扇區(qū)移動到磁頭下面所經(jīng)歷的時間。對于硬盤,典型的旋轉(zhuǎn)速度大多為5400r/min,每轉(zhuǎn)需時11.1ms,平均旋轉(zhuǎn)延遲時間Tτ為5.55ms;對于軟盤,其旋轉(zhuǎn)速度為300r/min或600r/min,這樣,平均Tτ為50~100ms。3)傳輸時間Tt

這是指把數(shù)據(jù)從磁盤讀出或向磁盤寫入數(shù)據(jù)所經(jīng)歷的時間。Tt的大小與每次所讀/寫的字節(jié)數(shù)b和旋轉(zhuǎn)速度有關(guān):其中,r為磁盤每秒鐘的轉(zhuǎn)數(shù);N為一條磁道上的字節(jié)數(shù),當(dāng)一次讀/寫的字節(jié)數(shù)相當(dāng)于半條磁道上的字節(jié)數(shù)時,Tt與Tτ相同,因此,可將訪問時間Ta表示為:5.6.2磁盤調(diào)度1.先來先服務(wù)FCFS(First-Come,FirstServed)圖5-23FCFS調(diào)度算法優(yōu)點:公平、簡單,每個進程的請求都能依次得到處理。缺點:未對尋道進行優(yōu)化,平均尋道時間可能較長。FCFS算法僅適用于請求磁盤I/O的進程數(shù)目較少的場合。2.最短尋道時間優(yōu)先SSTF(ShortestSeekTimeFirst)圖5-24SSTF調(diào)度算法3.掃描(SCAN)算法1)進程“饑餓”現(xiàn)象SSTF算法雖然能獲得較好的尋道性能,但卻可能導(dǎo)致某個進程發(fā)生“饑餓”(Starvation)現(xiàn)象。因為只要不斷有新進程的請求到達,且其所要訪問的磁道與磁頭當(dāng)前所在磁道的距離較近,這種新進程的I/O請求必須優(yōu)先滿足。對SSTF算法略加修改后所形成的SCAN算法,即可防止老進程出現(xiàn)“饑餓”現(xiàn)象。2)SCAN算法(電梯調(diào)度算法)圖5-25SCAN調(diào)度算法示例4.循環(huán)掃描(CSCAN)算法圖5-26CSCAN調(diào)度算法示例5.6.3磁盤高速緩存(DiskCache)1.磁盤高速緩存的形式

是指利用內(nèi)存中的存儲空間,來暫存從磁盤中讀出的一系列盤塊中的信息。因此,這里的高速緩存是一

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論