第6章+四五六章作業(yè)_第1頁
第6章+四五六章作業(yè)_第2頁
第6章+四五六章作業(yè)_第3頁
第6章+四五六章作業(yè)_第4頁
第6章+四五六章作業(yè)_第5頁
已閱讀5頁,還剩122頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第六章輸入/輸出系統(tǒng)6.1I/O系統(tǒng)的硬件結構6.2采用通道模型的I/O系統(tǒng)6.3I/O系統(tǒng)的軟件組織6.4緩沖技術6.5磁盤的驅動調度6.6設備分配程序6.7WindowsNT的I/O系統(tǒng)6.8Windows2000/XP設備管理機制實例分析I/O系統(tǒng)I/O硬件設備介紹磁盤時鐘設備視頻控制器RS-232I/O系統(tǒng)的硬件組織I/O系統(tǒng)的軟件組織I/O控制方式設備控制器通道模型I/O軟件設計目標I/O軟件層次結構磁盤調度設備分配程序I/O系統(tǒng)I/O硬件設備介紹磁盤時鐘設備視頻控制器RS-232I/O系統(tǒng)的硬件組織I/O系統(tǒng)的軟件組織I/O控制方式設備控制器通道模型I/O設備硬件概覽3.按資源分配角度分類獨占設備。一經分配給某進程,在進程釋放它之前,其它設備不能使用。如打印機、紙帶讀入機等。

(2)共享設備。允許若干進程同時共享的設備。如磁盤機。(3)虛擬設備。通過假脫機(Spooling)技術把原來的獨占設備改造成可為若干個進程所共享的設備。4.按傳輸數(shù)據(jù)數(shù)量分類外部設備按傳輸數(shù)據(jù)的數(shù)量,分為字符設備和塊設備。

(1)字符設備。每次傳輸數(shù)據(jù)以字節(jié)為單位的設備稱為字符設備,如打印機、終端、鍵盤等低速設備。

(2)塊設備。傳輸以數(shù)據(jù)塊為單位進行的設備稱為塊設備。如磁盤、磁帶等高速外存儲器等。I/O系統(tǒng)I/O硬件設備介紹磁盤時鐘設備視頻控制器RS-232I/O系統(tǒng)的硬件組織I/O系統(tǒng)的軟件組織I/O控制方式設備控制器通道模型2.磁盤結構解析磁盤結構解析cont.

磁盤結構解析

cont.C,H,S表6-1典型的軟盤和硬盤的技術參數(shù)I/O系統(tǒng)I/O硬件設備介紹磁盤時鐘設備視頻控制器RS-232I/O系統(tǒng)的硬件組織I/O系統(tǒng)的軟件組織I/O控制方式設備控制器通道模型2.時鐘圖6.3可編程時鐘

可編程時鐘的優(yōu)點是它的中斷頻率可由軟件控制。如果使用振蕩頻率為1MHz的晶體,那么計數(shù)器每一微秒接收到一個脈沖,對于16位的寄存器,中斷可編程為按1μs至65536μs的間隔發(fā)生。時鐘采用民用電產生固定頻率的震蕩采用晶振RC電路思考題:對于震蕩頻率為1MHz的晶振,要產生1s的時鐘中斷,如果用32位計數(shù)器,該計數(shù)器的值應該設置多大?0100001001000000F4240

時鐘硬件所做的工作僅僅是按給定的時間間隔產生中斷,其它和時間有關的工作必須由軟件(時鐘驅動程序)來做。時鐘軟件的任務包括:①維護日期和時間;②防止進程運行時間超過允許界限;③對CPU使用進行記帳;④處理用戶進程提出的時間鬧鐘系統(tǒng)調用;⑤對系統(tǒng)某些部分提供監(jiān)視定時器;⑥支持直方圖監(jiān)視和統(tǒng)計信息搜集。3.終端(1)存儲映像終端。圖6.4存儲映像終端直接寫入視頻RAM視頻RAM卡和監(jiān)視器像素(Pixel):像素的顯示:<位置,灰度>。字符的顯示:需要知道字符的像素矩陣,也就是字符的“位?!?。

不同的字符有不同的位模,這些位模通常不會變化,因此保存在視頻ROM中。行的顯示:一行顯示80個字符,每個字符被劃分為9*14個像素

(包括字符間隔)。每次只顯示一行掃描線。大家計算一下,要顯示一行字符,需要花費多大的視頻RAM空間?4*6矩陣9*5矩陣(2)RS-232終端。圖6.5RS-232終端與計算機通信UART:UniversalAsynchronousReceiverTransmitterI/O系統(tǒng)I/O硬件設備介紹磁盤時鐘設備視頻控制器RS-232I/O系統(tǒng)的硬件組織I/O系統(tǒng)的軟件組織I/O控制方式設備控制器通道模型6.1.3I/O系統(tǒng)的硬件組織1.I/O控制方式循環(huán)I/O測試方式。程序通過in,out指令直接控制I/O設備,

進行數(shù)據(jù)傳輸。(2)程序中斷I/O方式。I/O操作仍然由CPU控制,一次只能傳輸

一個字或字符。外設不能直接訪問內存。(3)DMA方式。(4)通道方式。圖6.7DMA方式下的數(shù)據(jù)傳輸

采用DMA方式的數(shù)據(jù)傳輸處理過程如下:①當進程要求設備輸入數(shù)據(jù)時,CPU把準備存放輸入數(shù)據(jù)的內存始址及要傳輸?shù)淖止?jié)數(shù)分別送入DMA控制器中的內存地址寄存器和傳送字節(jié)計數(shù)器;另外,還要把控制/狀態(tài)寄存器中的中斷允許位和啟動位置1,從而啟動設備,開始數(shù)據(jù)輸入。②發(fā)出數(shù)據(jù)輸入要求的進程進入阻塞狀態(tài),進程調度程序調度其它進程占有CPU。③輸入設備不斷地挪用CPU工作周期,將數(shù)據(jù)從內部緩沖區(qū)源源不斷地送入內存,直至所要求的字節(jié)數(shù)全部傳送完畢。④DMA控制器在傳輸完成時通過中斷請求線發(fā)出中斷信號,CPU接到中斷信號后轉中斷處理程序進行相應處理。⑤中斷處理結束后,CPU返回被中斷的進程或去運行重新被調度的進程。(3)設備控制器圖6.8設備控制器的組成用于存放從CPU送來的數(shù)據(jù)/從設備產生的數(shù)據(jù)用于存放從CPU送來的控制信息/從設備產生的狀態(tài)信息I/O系統(tǒng)I/O硬件設備介紹磁盤時鐘設備視頻控制器RS-232I/O系統(tǒng)的硬件組織I/O系統(tǒng)的軟件組織I/O控制方式設備控制器通道模型選擇型DMA多路型DMAI/O發(fā)展階段I/O通道的特點:I/O通道本質上是一個專用于I/O處理的處理器,它能夠執(zhí)行I/O指令,因此擁有對I/O操作的完全控制。這些指令被編制成一個I/O程序,保存在內存中。因此CPU通過指示I/O通道去執(zhí)行內存中的一段程序的方式來啟動I/O傳輸。這些程序會說明將要訪問的設備、內存中的存儲區(qū)域地址、優(yōu)先級以及錯誤條件下所采取的動作等。I/O通道按照這些指令控制數(shù)據(jù)的傳輸。I/O通道的特點:I/O通道本質上是一個專用于I/O處理的處理器,它能夠執(zhí)行I/O指令,因此擁有對I/O操作的完全控制。這些指令被編制成一個I/O程序,保存在內存中。因此CPU通過指示I/O通道去執(zhí)行內存中的一段程序的方式來啟動I/O傳輸。這些程序會說明將要訪問的設備、內存中的存儲區(qū)域地址、優(yōu)先級以及錯誤條件下所采取的動作等。I/O通道按照這些指令控制數(shù)據(jù)的傳輸。

幾個重要概念:

通道命令:又稱為通道命令字(CCW,ChannelcommandWord),它是規(guī)定設備的某一種動作的指令。

通道程序:是由通道命令編制出來的一段程序,用于控制設備的工作。整個通道程序確定了外圍設備應執(zhí)行的操作及操作順序。

通道程序存放在哪里呢?

通道地址字:通道程序是存放在主存中的,為了使通道能夠正確快速地找到通道程序的起始地址,系統(tǒng)在主存中安排一個固定的單元,用來存放通道程序的起始地址,這個固定的單元稱為通道地址字(CAW,ChanneladdressWord)。通道狀態(tài)字:通道被啟動后,控制指定的設備完成規(guī)定的操作,同時,通道在執(zhí)行對外圍設備控制的過程中,要記錄通道與設備執(zhí)行情況,為此系統(tǒng)在主存中安排另一個固定單元,用于存放這些被記錄狀態(tài),這個固定單元稱為通道狀態(tài)字(CSW,ChannelStatusWord)。

通道程序:中央處理器執(zhí)行“啟動I/O”指令啟動通道工作,通道被啟動后執(zhí)行事先編制好的由通道命令組成的通道程序來控制設備工作。通道命令又稱為通道命令字(CCW,ChannelCommandWord),每一條通道命令規(guī)定了設備的某一種操作,整個通道程序就確定了設備應執(zhí)行的操作和操作順序。通道程序是存放在內存中的,為了使通道能夠正確快速地找到通道程序的起始地址,系統(tǒng)在內存中安排了一個固定的單元,用來存放通道程序的起始地址,這個固定的單元稱為通道地址字(CAW,ChannelAddressWord)。通道被啟動后,控制指定的設備完成規(guī)定的操作,同時記錄通道與設備執(zhí)行情況,為此系統(tǒng)在內存中安排另一個固定單元,用于存放這些被記錄狀態(tài),這個固定的單元稱為通道狀態(tài)字(CSW,ChannelStatusWord)。

6.2采用通道模型的I/O系統(tǒng)6.2.1通道類型字節(jié)多路通道(ByteMultiplexorChannel)2.選擇通道3.數(shù)組多路通道IBM370的I/O結構6.2.4CPU和通道間的通訊1.輸入/輸出指令

例如,某系統(tǒng)中輸入輸出類指令主要有:SIO,TIO,HIO,TCH。所有I/O指令都具有如下格式:操作碼B1D1

由(B1)+D1形成的地址指出通道號和設備號的存放單元,該單元的內容為:通道號設備號SIO(STARTI/O):用于啟動指定通道和設備開始工作,SIO指令發(fā)出后,根據(jù)通道和設備狀態(tài)建立結果特征,即條件碼。CPU根據(jù)執(zhí)行結果建立的條件碼得知此次啟動是否成功,再確定下一步的動作。

TIO(TESTI/O):用以檢查I/O操作是否完成,建立相應的條件碼。

HIO(HALTI/O):強行停止通道和I/O設備正在執(zhí)行的操作。

TCH(TESTCHANNEL):測試通道,根據(jù)對通道測試的結果建立相應的條件碼。2.CPU和通道間的通訊圖6.11CPU啟動通道的工作流程

通道I/O主要過程的時間關系示意圖I/O系統(tǒng)I/O硬件設備介紹磁盤時鐘設備視頻控制器RS-232I/O系統(tǒng)的硬件組織I/O系統(tǒng)的軟件組織I/O控制方式設備控制器通道模型I/O軟件設計目標I/O軟件層次結構磁盤調度設備分配程序6.3I/O系統(tǒng)的軟件組織6.3.1I/O軟件設計的目標設備無關性:使程序員寫出的軟件無需任何修改便能讀出軟盤、硬盤以及CD-ROM等不同設備上的文件,而與具體設備無關。不同設備之間的差異由操作系統(tǒng)去處理,操作系統(tǒng)會調用不同的設備驅動程序來真正地將輸入數(shù)據(jù)寫到輸出設備上。

錯誤處理:錯誤應盡可能在接近硬件的地方處理。

同步/異步傳輸:必須能處理獨占設備和共享設備的I/O操作。6.3.6I/O系統(tǒng)軟件的層次結構圖6.12I/O系統(tǒng)的層次結構用戶進程count=read(fd,buffer,nbytes)if(count==nbytes){….}喚醒用戶進程繼續(xù)執(zhí)行設備無關軟件通過fd找到對應的文件file結構和數(shù)據(jù)緩沖區(qū),并在緩沖區(qū)中查看數(shù)據(jù);若沒有數(shù)據(jù),則調用驅動程序讀數(shù)據(jù)。count=設備驅動程序實施設備讀控制所需的一系列操作硬件

磁盤設備控制器

讀取數(shù)據(jù)完畢中斷處理程序I/O請求處理過程系統(tǒng)功能調用為什么要引入緩沖?6.4緩沖技術I/O與用戶進程直接進行數(shù)據(jù)交換的方法存在下面幾個問題:盡管采用DMA和通道技術,提高了CPU的使用效率,但是仍然沒有縮小一個用戶進程等到I/O操作結束的時間;有可能出現(xiàn)單進程死鎖現(xiàn)象。當一個進程發(fā)送一個I/O命令后處于阻塞狀態(tài),等待I/O完成事件的發(fā)生,然后在開始I/O操作之前被換出,也就是操作系統(tǒng)將該進程的內存空間換出到磁盤上的交換區(qū),此時I/O操作也將被阻塞,因為它要等待該進程被換入,于是就出現(xiàn)了死鎖;為了避免死鎖,在發(fā)出I/O請求之前,參與I/O操作的用戶存儲空間必須被鎖定在內存中,這樣帶來兩個問題:一是干擾了操作系統(tǒng)的交換決策,二是如果這個I/O操作正在排隊,而內存頁面的鎖定使得正在等待該I/O完成的進程不能被交換出去,那么就會造成內存空間浪費。6.4.1單緩沖當用戶進程發(fā)出I/O請求時,操作系統(tǒng)給該操作分配一個位于內存中系統(tǒng)部分的緩沖區(qū)。輸入傳送的數(shù)據(jù)被放到系統(tǒng)緩沖區(qū)中。當傳送完成時,進程把該塊移到用戶空間,并立即請求另一塊,這稱做“預讀”,或者預先輸入。根據(jù)程序的局部性原理,程序在不久的將來很可能就會讀取預讀的數(shù)據(jù)。當準備將數(shù)據(jù)發(fā)送到一臺設備時,首先把這些數(shù)據(jù)從用戶空間復制到系統(tǒng)緩沖區(qū),然后就立即返回繼續(xù)執(zhí)行,而系統(tǒng)緩沖區(qū)中的數(shù)據(jù)最終是被寫入到設備中。單緩沖工作示意圖在單緩沖技術中CPU和外設輪流使用一個緩沖。每當一個用戶進程發(fā)出一個I/O請求時,OS便在主存中為之分配一個緩沖區(qū)。圖7.10顯示了單緩沖的工作過程,處理一塊數(shù)據(jù)時間:Max(C,T)+M

。雙緩沖工作過程示意圖

雙緩沖工作方式的基本方法是在設備輸入時,先將數(shù)據(jù)輸入到緩沖區(qū)A,裝滿后便轉向緩沖區(qū)B。此時操作系統(tǒng)可以從緩沖區(qū)A中提取數(shù)據(jù)傳送到用戶區(qū),最后由CPU對數(shù)據(jù)進行計算。其工作過程如下圖所示。系統(tǒng)處理一塊數(shù)據(jù)的處理時間可粗略地認為是MAX(C,T)。若C<T,可使塊設備連續(xù)輸入;若C>T,可使CPU不必等待設備輸入。也即采用雙緩沖區(qū),CPU和外設都可以連續(xù)處理而無需等待對方。但是,要求CPU和外設的速度相近。對于單緩沖和雙緩沖,當C<=T時,可以使外部設備全速運行;當C>T時,可以使CPU全速運行,也就是進程不需要等待I/O,在任何一種情況下,都有性能的提高,但這種提高是以增加了復雜性為代價的。6.4.3緩沖池1.緩沖池的組成

對于既可用于輸入又可用于輸出的公用緩沖池,其中至少應包含以下三種類型的緩沖區(qū):①空閑緩沖區(qū);②裝滿輸入數(shù)據(jù)的緩沖區(qū);③裝滿輸出數(shù)據(jù)的緩沖區(qū)。為了管理方便,可將相同類型的緩沖區(qū)鏈成一個隊列。于是,可形成以下三個隊列:(1)空緩沖區(qū)隊列emq:由空緩沖區(qū)所鏈成的隊列;(2)輸入隊列inq:由裝滿輸入數(shù)據(jù)的緩沖區(qū)所鏈成的隊列;(3)輸出隊列outq:由裝滿輸出數(shù)據(jù)的緩沖區(qū)所鏈成的隊列。除了上述三個隊列外,還應具有四種工作緩沖區(qū):(1)用于收容輸入數(shù)據(jù)的工作緩沖區(qū);(2)用于提取輸入數(shù)據(jù)的工作緩沖區(qū);(3)用于收容輸出數(shù)據(jù)的工作緩沖區(qū);(4)用于提取輸出數(shù)據(jù)的工作緩沖區(qū)。2.緩沖池管理的基本操作對緩沖池管理提供兩個基本操作(過程):

(1)getbuf(type):用于從type所指定的隊列的隊首,摘下一個緩沖區(qū);

(2)putbuf(type,number):用于將用參數(shù)number所指示的緩沖區(qū),掛在type隊列上。3.緩沖池的工作方式圖6.15緩沖池的工作方式6.4.4預先讀與延遲寫1.預先讀操作系統(tǒng)讀塊設備時,一般通過同步方式把一指定的數(shù)據(jù)塊讀入緩沖區(qū),此時用戶進程不得不進入阻塞狀態(tài),等待數(shù)據(jù)傳輸?shù)慕Y束。為了加快進程的推進速度,提高CPU和塊設備工作的并行程度,最好在使用某一塊之前,用異步方式提早把它讀入緩沖區(qū)。當用戶進程實際需要該塊數(shù)據(jù)時,可以立即從緩沖區(qū)取走而無需等待。這種技術稱為預先讀。2.延遲寫當塊設備進行輸出時,如果某一緩沖區(qū)只寫了一部分,則不要急于把該緩沖區(qū)的內容寫到塊設備上,而是把寫塊操作推遲到某個適當?shù)臅r機進行。那么什么是適當?shù)臅r機呢?一般有兩個:其一是延遲寫的緩沖區(qū)被寫滿時,其二是該緩沖區(qū)被重新分配時。注意,文件關閉時緩沖區(qū)被強行物理寫入塊設備。I/O系統(tǒng)I/O硬件設備介紹磁盤時鐘設備視頻控制器RS-232I/O系統(tǒng)的硬件組織I/O系統(tǒng)的軟件組織I/O控制方式設備控制器通道模型I/O軟件設計目標I/O軟件層次結構磁盤調度設備分配程序6.5磁盤的驅動調度

磁盤的驅動調度是先進行移臂(移動存取臂)調度,再進行旋轉調度。例如,某一時刻對磁盤的輸入/輸出請求序列是:柱面(CC)磁道(HH)物理記錄R7417487454064277

進一步考查7號柱面上的三個輸入/輸出請求。按上述次序,磁盤需旋轉近兩周才能完成訪問。若將輸入/輸出請求按照下列的次序完成訪問:柱面(CC)磁道(HH)物理記錄R741745748

移臂調度算法有:

(1)先來先服務算法(FCFS)。先來先服務調度算法是最簡單的一種方法,它按照輸入/輸出請求到達的順序,逐一完成訪問請求。

(2)最短查找時間優(yōu)先法(SSTF)。這種算法總是先完成距當前存取臂距離最近的柱面上的輸入/輸出請求。

(3)掃描法(SCAN)。由于請求序列具有動態(tài)性質,所以可采用掃描法。存取臂從磁盤的一端出發(fā),向另一端移動,遇到需要訪問的柱面就完成訪問請求,直至到達磁盤的另一端。到達另一端后,存取臂移動方向就倒轉過來,繼續(xù)完成這一方向上的訪問請求。圖6.16電梯調度算法流程I/O系統(tǒng)I/O硬件設備介紹磁盤時鐘設備視頻控制器RS-232I/O系統(tǒng)的硬件組織I/O系統(tǒng)的軟件組織I/O控制方式設備控制器通道模型I/O軟件設計目標I/O軟件層次結構設備分配程序磁盤調度6.6設備分配程序6.6.1設備分配的數(shù)據(jù)結構

在配置有通道的計算機系統(tǒng)中,設備分配程序至少應解決以下三個問題:(1)是否有能用來為I/O請求提供的通路?(2)是否有一條以上的通路可用?(3)如果當前尚無通路可用,那么通路何時才能空閑?圖6.17設備管理中的三種控制塊圖6.18UCB,CUCB,CCB間的連接圖6.19UCB和PCB的連接

圖6.20系統(tǒng)設備表與UCB的關系

對于所請求的I/O設備,根據(jù)上述的查找方法,可能出現(xiàn)三種情況:

(1)對于所請求的I/O設備,僅有一條通路可用,例如:通道B——控制器C——設備E。

(2)對于所請求的I/O設備,可以找到一條以上的可用通路,例如上例中,最多可找出四條可用通路:通道A——控制器C——設備E通道A——控制器D——設備E通道B——控制器C——設備E通道B——控制器D——設備E(3)對于所請求的I/O設備,沒有一條可用的通路。6.6.2I/O調度程序

在多進程的系統(tǒng)中,由于進程數(shù)多于設備數(shù),就必然要引起進程對資源的爭奪。為使系統(tǒng)有條不紊地工作,系統(tǒng)必須具有一套合理的設備分配原則。

這些原則與下述的四個因素有關:

(1)I/O設備的固有屬性

(2)I/O設備的分配算法

①先請求先服務。②優(yōu)先級高者優(yōu)先。

(3)設備分配的安全性

(4)與設備的無關性

不能采用時間片輪轉法!!!6.6.3設備分配的實施1.單通路I/O系統(tǒng)的設備分配在單通路I/O系統(tǒng)中,按如下步驟實施設備分配:分配設備。(2)分配控制器。(3)分配通道。2.多通路I/O系統(tǒng)的設備分配

假定某進程n向系統(tǒng)提出I/O請求,要求為它分配一臺I/O設備。于是系統(tǒng)可選取該類設備中的任何一臺設備分配給該進程。其步驟如下:

(1)根據(jù)要求I/O的進程n所提供的設備類型,檢索SDT表,找到第一個該類物理設備的UCB,由狀態(tài)信息可知其忙閑情況。若忙,則檢查第二個物理設備的UCB。若該類型的全部設備都處于忙碌狀態(tài),表明該類設備已分配完畢。進程n的此次I/O請求無法滿足,只好把進程n插入到等待該類設備的隊列中。只要在該類設備中有一個空閑設備,系統(tǒng)便可對其計算分配該設備給進程n的安全性。若安全,則把設備分配給進程n,否則將其插入該類設備的等待隊列。(2)當系統(tǒng)把第i個設備分配給進程n后,便可通過檢查與此設備相連的第一個CUCB,而得知該控制器是否忙碌;若忙,再檢查第二個CUCB表。若與此設備相連的所有的控制器都忙,則表明無控制器可分配給設備i。只要設備i不是該類設備中的最后一個,便可返回到步驟(1),試圖再找下一個空閑設備;否則,仍將該進程插入控制器等待隊列中。(3)若有空閑的控制器,便可進一步檢查與此控制器相連的第一個通道是否忙碌。若忙,再查看第二個CCB表,若與此控制器相連的全部通道都忙,表明無通道可分配給控制器j。只要控制器j不是該設備i的最后一個控制器,便返回到步驟(2),試圖找出一個空閑的控制器,否則,將該進程插入通道等待隊列。若有空閑通道可用,則此次設備分配成功,將相應的設備、控制器和通道分配給進程n,接著便可啟動I/O設備,開始信息傳送。多通路I/O系統(tǒng)設備分配的流程示于圖6.21。圖6.21設備分配流程圖圖6.22I/O系統(tǒng)概貌1.I/O系統(tǒng)概貌6.7.1I/O系統(tǒng)的結構6.7WindowsNT的I/O系統(tǒng)NT執(zhí)行體的I/O系統(tǒng)接收用戶態(tài)和核心態(tài)進程的I/O請求,以不同的方式傳送到I/O設備。I/O系統(tǒng)由一組負責處理各種設備的輸入/輸出部件構成。這些部件有:(1)I/O管理程序;(2)文件系統(tǒng);(3)緩沖存儲管理器(CacheManager);(4)設備驅動程序(DeviceDriver);(5)網(wǎng)絡轉發(fā)程序(NetWorkRedirector)和網(wǎng)絡服務程序(NetworkServer)。2.I/O管理程序

I/O管理程序建立了NT執(zhí)行體的I/O模型,它實現(xiàn)與設備無關的輸入/輸出,即它并不進行實際的I/O處理。它的主要工作是建立一個代表I/O操作的I/O請求包IRP(I/ORequestPacket),把IRP傳送給適當?shù)尿寗映绦虿⒃贗/O完成后處理其結果,最后撤消IRP。與此相反,驅動程序接收IRP,執(zhí)行IRP規(guī)定的操作,并在完成后將IRP傳回I/O管理程序或通過驅動程序再傳到另一驅動程序,以求進一步的處理。

I/O系統(tǒng)采用包驅動方式,每個I/O請求都用一個I/O請求包來表達。每個IRP是一個數(shù)據(jù)結構,用以控制在每一操作步驟上的I/O操作的處理。3.虛擬文件除了I/O管理程序,該結構中還有四類驅動程序:文件系統(tǒng)、緩沖存儲管理程序、設備驅動程序、網(wǎng)絡轉發(fā)程序。要把這四類功能、特性均不相同的部件組合在一起,并建立一個一體化的統(tǒng)一系統(tǒng),必須進行高層的抽象,建立一個統(tǒng)一的邏輯模型。

NT建立的邏輯模型吸收了UNIXI/O系統(tǒng)的概念,認為“所有的讀寫數(shù)據(jù)都看成是直接送往虛擬文件的字節(jié)流”。虛擬文件用文件描述符表示,處理虛擬文件就像處理一個真正的文件。由操作系統(tǒng)判定這個虛擬文件究竟是設備、管道、網(wǎng)絡還是磁盤上的真正文件。圖6.23打開一個文件對象6.7.2驅動程序模型每一個驅動程序都由以下標準成套(或組合)組成:(1)一個初始化程序;(2)一組調度程序;(3)一個啟動I/O的程序;(4)一個中斷服務程序;(5)一個中斷服務DPC(延遲過程調用)程序;(6)一個完成例程;(7)一個撤消I/O例程;(8)一個卸載例程;(9)一個出錯記錄例程。6.7.3同步I/O操作與異步I/O操作

圖6.24同步I/O操作

同步I/O操作過程可歸納如下:

(1)按用戶要求,I/O管理程序為之形成IRP,并把它傳送給驅動程序,由驅動程序完成I/O操作。

(2)設備完成I/O操作后,發(fā)中斷請求,設備驅動程序中的中斷處理程序進行相應中斷處理。

(3)I/O管理程序完成I/O請求。在大多數(shù)操作系統(tǒng)中,同步I/O是標準的,WindowsNT除了提供同步I/O外還提供異步I/O,允許子系統(tǒng)選用同步I/O或異步I/O,并根據(jù)它的應用程序接口操作的不同,為客戶應用程序提供不同類型的I/O。圖6.25異步I/O6.8Windows2000/XP設備管理機制實例分析6.8.1Windosw2000/XP輸入/輸出系統(tǒng)的體系結構傳統(tǒng)上認為,輸入/輸出(I/O)系統(tǒng)是操作系統(tǒng)設計中最難規(guī)范化的領域,因為I/O設備五花八門、種類繁雜,小到傳感器、鼠標,大到磁盤、磁帶、繪圖儀等等,它們的性能截然不同。總之,其數(shù)據(jù)格式、數(shù)據(jù)組織到使用方法都有很大差別。如何規(guī)范化設計,這對操作系統(tǒng)設計也是需要研究的。Windows2000/XP操作系統(tǒng)采用和強調了軟件工程中抽象的原則,在設計中全力找出各種事務的共性,用一致的模型、方法和界面來使其規(guī)范化,如用客戶/服務器模型來規(guī)范各個用戶進程之間的關系。

Windows2000/XP的I/O系統(tǒng)體系結構如圖6.26所示,它由幾個可執(zhí)行模塊和大量設備驅動程序組成。通過這張圖我們可以看到,Windows2000的I/O體系的設計使用了分層結構,這有利于實現(xiàn)其平臺無關性,也為其他目標的實現(xiàn)帶來了便利。圖6.26Windows2000/XP的I/O系統(tǒng)體系結構6.8.2核心態(tài)模塊大部分I/O操作并不會涉及所有的組件,一個典型的I/O操作從應用程序調用一個與I/O操作有關的函數(shù)開始,通常會涉及I/O管理器、一個或多個設備驅動程序以及硬件抽象層。I/O系統(tǒng)相關的核心態(tài)模塊的主要功能如下。I/O管理器:把應用程序和系統(tǒng)組件連接到各種虛擬的、邏輯的和物理的設備上,并定義了一個支持設備驅動程序的基本構架,負責驅動I/O請求的處理,為設備驅動程序提供核心服務。它把用戶態(tài)的讀寫轉化為I/O請求包IRP。

即插即用管理器:通過與I/O管理器和總線驅動程序的協(xié)同工作來檢測硬件資源的分配,并檢測相應硬件設備的添加和刪除。電源管理器:通過與I/O管理器的協(xié)調工作,來檢測整個系統(tǒng)和單個硬件設備,完成不同電源狀態(tài)的轉換。WMI支持例程:也叫做Windows驅動程序模型WDM(WindowsDriverModel)的提供者,運行驅動程序使用這些支持例程作為媒介,與用戶態(tài)運行的WMI服務通信。設備驅動程序:為某種類型的設備提供一個I/O接口。設備驅動程序從I/O管理器接收命令,當處理完畢后通知I/O管理器。設備驅動程序之間的協(xié)同工作也通過I/O管理器進行。即插即用組件:用于控制和配置設備的用戶態(tài)API。即插即用WDM接口:I/O系統(tǒng)為驅動程序提供了分層結構,這一結構包括WDM驅動程序、驅動程序層和設備對象。注冊表:存儲基本硬件、驅動程序的初始化和配置信息的數(shù)據(jù)庫。硬件抽象層:I/O訪問例程把設備驅動程序與多種多樣的硬件平臺隔離開來,使它們在給定的體系結構中是二進制可移植的,并在Windows2000/XP支持的硬件體系結構中是源代碼可移植的。圖6.27一個典型的I/O請求流程6.8.3輸入/輸出系統(tǒng)的數(shù)據(jù)結構1.文件對象文件對象提供了基于內存的共享物理資源的表示法(除了被命名的管道和郵箱外,它們雖然是基于內存的但不是物理的)。在Windows2000/XP的I/O系統(tǒng)中,文件對象也代表這些資源。當調用者打開文件或單一設備時,I/O管理器將為文件對象返回一個句柄。文件對象的主要屬性如表6-2所示。表6-2文件對象屬性屬性目的文件名標識文件對象指向的物理文件字節(jié)偏移量在文件中標識當前位置(只對同步I/O有效)共享模式表示當調用者正在使用文件時,其他調用者是否可以打開文件進行讀、寫操作或刪除操作指向設備對象的指針表示文件在其上駐留的設備類型指向卷參數(shù)塊的指針表示文件在其上駐留的卷或分區(qū)指向區(qū)域對象的指針描述一個映射文件的根結構指向專用高速緩存映射的指針表示文件的哪一部分由高速緩存管理器管理,以及它們駐留在高速緩存的什么地方圖6.29說明打開一個文件時系統(tǒng)所發(fā)生的情況。在這個實例中,C程序調用庫函數(shù)fopen,由它去調用WIN32的CreatFile函數(shù)。然后由系統(tǒng)DLL在NTDLL.DLL中調用本地NTCreatFile函數(shù),在NTDLL.DLL中的例程包含引發(fā)到核心態(tài)系統(tǒng)服務調度程序轉換適當?shù)闹噶?。最后,系統(tǒng)服務調度程序在NTOSKRNL.EXE中調用真正的NTCreatFile例程。圖6.29打開一個文件對象的過程2.驅動程序對象和設備對象當線程為一個文件對象打開一個句柄時,I/O管理器必須根據(jù)文件對象名稱來決定它將調用哪個驅動程序來處理請求。而且,I/O管理器必須在線程下一次使用同一個文件句柄時可定位這個信息。驅動程序對象代表系統(tǒng)中一個獨立的驅動程序,I/O管理器從這些驅動程序對象中獲得并為I/O記錄每個驅動程序的調度例程的入口。設備對象在系統(tǒng)中代表一個物理的、邏輯的或虛擬的設備,并描述它們的特征,如緩沖區(qū)的對齊方式和它用來保存即將到來的I/O請求包的設備隊列的位置。圖6.30顯示了一個設備驅動器對象。從圖中可以看出,設備對象反過來指向自己的驅動程序對象,這樣I/O管理器就知道在接收一個I/O請求時應該調用哪個驅動程序,即它使用設備對象找到代表該設備驅動程序的驅動程序對象,然后利用在初始化請求中提供的功能碼來索引驅動程序對象。每個功能碼都對應于一個驅動程序的入口。圖6.30Windows2000/XP輸入/輸出的數(shù)據(jù)結構3.IO請求包

IRP是I/O系統(tǒng)用來存儲處理I/O請求所需信息的地方。當線程調用I/O服務時,I/O管理器就構造一個IRP來表示在整個I/O過程中要進行的操作。I/O管理器在IRP中保存一個指向調用者的文件對象指針。IRP由兩部分組成:固定部分(標題)和一個或多個堆棧單元。圖6.31單層驅動程序中一個I/O請求涉及的數(shù)據(jù)結構

6.8.4Windows2000/XP的設備驅動程序1.核心驅動程序核心驅動程序主要分為如下幾種:

(1)文件系統(tǒng)驅動程序:接收訪問文件的I/O請求,主要針對大容量的設備和網(wǎng)絡設備。

(2)PnP管理器和電源管理器設備驅動程序:包括大容量存儲設備、協(xié)議棧和網(wǎng)絡適配器等。

(3)為NT編寫的驅動程序:可在Windows2000/XP下工作,但一般不支持電源管理和PnP。

(4)WIN32子系統(tǒng)顯示和打印驅動程序:把與設備無關的圖形(GDI)請求轉換為設備專用請求。這些驅動的集合稱為“核心態(tài)圖形驅動程序”。

(5)WDM驅動程序:包括對PnP、電源管理和WMI的支持。2.Windows2000/XP支持的其他驅動程序

Windows2000/XP支持的其他驅動程序主要有:

(1)虛擬設備驅動程序:用于模擬16位的MSDOS的驅動程序,它們捕獲MSDOS應用程序對端口的引用,并將其轉化為本機WIN32I/O函數(shù)。

(2)WIN32子系統(tǒng)的打印驅動程序:把與設備無關的圖形(GDI)請求轉換為打印機相關命令,這些命令再發(fā)給核心模式的驅動程序,例如,并口驅動(Parprot.sys)、USB打印機驅動(Usbprint.sys)等。

3.硬件支持的驅動程序硬件支持的驅動程序主要有:

(1)類驅動程序:該驅動程序一般提供某類設備的基本支持接口,如磁盤、CD-ROM等,它通過端口驅動程序提供的邏輯端口操作硬件。

(2)端口驅動程序:用于提供某種接口(如串行接口、并行接口、USB接口等)的操作例程庫,它是小端口驅動程序的一個功能包裝,通過這些接口,類驅動程序可以直接訪問接口而不必去和連接它們的總線交互了。

(3)小端口驅動程序:該驅動程序用于對實際硬件適配器的I/O請求映射,它負責最后驅動硬件工作。當文件系統(tǒng)收到一個特定文件“寫”數(shù)據(jù)的請求時,如何轉換為磁盤上的柱面/磁道/扇區(qū)?圖6.32便說明了數(shù)據(jù)“寫”到磁盤上的過程。圖6.32文件驅動和磁盤驅動的層次

6.8.5Windows2000/XP的I/O處理Windows2000/XP允許用戶以同步或異步的方式進行I/O操作。若是同步方式,設備執(zhí)行數(shù)據(jù)傳輸并在I/O完成時返回一個狀態(tài)碼,然后程序就可以立即訪問被傳輸?shù)臄?shù)據(jù)。若是異步方式,則允許應用程序發(fā)布I/O請求,在設備傳輸數(shù)據(jù)的同時,應用程序繼續(xù)執(zhí)行。

快速I/O是一個特殊的機制,它允許I/O系統(tǒng)不產生IRP而直接到文件系統(tǒng)驅動程序或高速緩存管理器去執(zhí)行I/O請求。映射文件I/O是I/O系統(tǒng)的一個重要特性,是由I/O系統(tǒng)管理器和內存管理器共同產生的?!坝成湮募笔侵赴汛疟P中的文件視為進程的虛擬內存的一部分,程序可以將文件作為一個大數(shù)組來訪問,而無需做緩沖數(shù)據(jù)或執(zhí)行磁盤I/O的工作。下面通過對單層驅動程序的同步I/O請求例子,來介紹Windows2000/XP是如何進行I/O處理的。對單層驅動程序的同步I/O請求處理有如下六個步驟:

(1)?I/O請求通過子系統(tǒng)DLL。

(2)子系統(tǒng)調用I/O管理器的NTWriteFile服務。

(3)I/O管理器以IRP的形式給設備驅動程序發(fā)送請求。

(4)驅動程序驅動I/O操作。

溫馨提示

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

最新文檔

評論

0/150

提交評論