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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

磁盤(pán)結(jié)構(gòu)解析

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

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

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

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

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

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

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

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

幾個(gè)重要概念:

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

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

通道程序存放在哪里呢?

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

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

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

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

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

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

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

TCH(TESTCHANNEL):測(cè)試通道,根據(jù)對(duì)通道測(cè)試的結(jié)果建立相應(yīng)的條件碼。2.CPU和通道間的通訊圖6.11CPU啟動(dòng)通道的工作流程

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

錯(cuò)誤處理:錯(cuò)誤應(yīng)盡可能在接近硬件的地方處理。

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

磁盤(pán)設(shè)備控制器

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

。雙緩沖工作過(guò)程示意圖

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

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

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

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

磁盤(pán)的驅(qū)動(dòng)調(diào)度是先進(jìn)行移臂(移動(dòng)存取臂)調(diào)度,再進(jìn)行旋轉(zhuǎn)調(diào)度。例如,某一時(shí)刻對(duì)磁盤(pán)的輸入/輸出請(qǐng)求序列是:柱面(CC)磁道(HH)物理記錄R7417487454064277

進(jìn)一步考查7號(hào)柱面上的三個(gè)輸入/輸出請(qǐng)求。按上述次序,磁盤(pán)需旋轉(zhuǎn)近兩周才能完成訪問(wèn)。若將輸入/輸出請(qǐng)求按照下列的次序完成訪問(wèn):柱面(CC)磁道(HH)物理記錄R741745748

移臂調(diào)度算法有:

(1)先來(lái)先服務(wù)算法(FCFS)。先來(lái)先服務(wù)調(diào)度算法是最簡(jiǎn)單的一種方法,它按照輸入/輸出請(qǐng)求到達(dá)的順序,逐一完成訪問(wèn)請(qǐng)求。

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

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

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

圖6.20系統(tǒng)設(shè)備表與UCB的關(guān)系

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

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

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

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

這些原則與下述的四個(gè)因素有關(guān):

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

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

①先請(qǐng)求先服務(wù)。②優(yōu)先級(jí)高者優(yōu)先。

(3)設(shè)備分配的安全性

(4)與設(shè)備的無(wú)關(guān)性

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

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

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

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

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

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

圖6.24同步I/O操作

同步I/O操作過(guò)程可歸納如下:

(1)按用戶要求,I/O管理程序?yàn)橹纬蒊RP,并把它傳送給驅(qū)動(dòng)程序,由驅(qū)動(dòng)程序完成I/O操作。

(2)設(shè)備完成I/O操作后,發(fā)中斷請(qǐng)求,設(shè)備驅(qū)動(dòng)程序中的中斷處理程序進(jìn)行相應(yīng)中斷處理。

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

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

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

IRP是I/O系統(tǒng)用來(lái)存儲(chǔ)處理I/O請(qǐng)求所需信息的地方。當(dāng)線程調(diào)用I/O服務(wù)時(shí),I/O管理器就構(gòu)造一個(gè)IRP來(lái)表示在整個(gè)I/O過(guò)程中要進(jìn)行的操作。I/O管理器在IRP中保存一個(gè)指向調(diào)用者的文件對(duì)象指針。IRP由兩部分組成:固定部分(標(biāo)題)和一個(gè)或多個(gè)堆棧單元。圖6.31單層驅(qū)動(dòng)程序中一個(gè)I/O請(qǐng)求涉及的數(shù)據(jù)結(jié)構(gòu)

6.8.4Windows2000/XP的設(shè)備驅(qū)動(dòng)程序1.核心驅(qū)動(dòng)程序核心驅(qū)動(dòng)程序主要分為如下幾種:

(1)文件系統(tǒng)驅(qū)動(dòng)程序:接收訪問(wèn)文件的I/O請(qǐng)求,主要針對(duì)大容量的設(shè)備和網(wǎng)絡(luò)設(shè)備。

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

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

(4)WIN32子系統(tǒng)顯示和打印驅(qū)動(dòng)程序:把與設(shè)備無(wú)關(guān)的圖形(GDI)請(qǐng)求轉(zhuǎn)換為設(shè)備專用請(qǐng)求。這些驅(qū)動(dòng)的集合稱為“核心態(tài)圖形驅(qū)動(dòng)程序”。

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

Windows2000/XP支持的其他驅(qū)動(dòng)程序主要有:

(1)虛擬設(shè)備驅(qū)動(dòng)程序:用于模擬16位的MSDOS的驅(qū)動(dòng)程序,它們捕獲MSDOS應(yīng)用程序?qū)Χ丝诘囊?,并將其轉(zhuǎn)化為本機(jī)WIN32I/O函數(shù)。

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

3.硬件支持的驅(qū)動(dòng)程序硬件支持的驅(qū)動(dòng)程序主要有:

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

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

(3)小端口驅(qū)動(dòng)程序:該驅(qū)動(dòng)程序用于對(duì)實(shí)際硬件適配器的I/O請(qǐng)求映射,它負(fù)責(zé)最后驅(qū)動(dòng)硬件工作。當(dāng)文件系統(tǒng)收到一個(gè)特定文件“寫(xiě)”數(shù)據(jù)的請(qǐng)求時(shí),如何轉(zhuǎn)換為磁盤(pán)上的柱面/磁道/扇區(qū)?圖6.32便說(shuō)明了數(shù)據(jù)“寫(xiě)”到磁盤(pán)上的過(guò)程。圖6.32文件驅(qū)動(dòng)和磁盤(pán)驅(qū)動(dòng)的層次

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

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

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

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

(3)I/O管理器以IRP的形式給設(shè)備驅(qū)動(dòng)程序發(fā)送請(qǐng)求。

(4)驅(qū)動(dòng)程序驅(qū)動(dòng)I/O操作。

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論