操作系統(tǒng)課件第6章+四五六章作業(yè)答案_第1頁
操作系統(tǒng)課件第6章+四五六章作業(yè)答案_第2頁
操作系統(tǒng)課件第6章+四五六章作業(yè)答案_第3頁
操作系統(tǒng)課件第6章+四五六章作業(yè)答案_第4頁
操作系統(tǒng)課件第6章+四五六章作業(yè)答案_第5頁
已閱讀5頁,還剩106頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第六章 輸入/輸出系統(tǒng) 第六章第六章 輸入輸入/輸出系統(tǒng)輸出系統(tǒng) 6.1 I/O系統(tǒng)的硬件結(jié)構(gòu)系統(tǒng)的硬件結(jié)構(gòu) 6.2 采用通道模型的采用通道模型的I/O系統(tǒng)系統(tǒng) 6.3 I/O系統(tǒng)的軟件組織系統(tǒng)的軟件組織 6.4 緩沖技術(shù)緩沖技術(shù) 6.5 磁盤的驅(qū)動(dòng)調(diào)度磁盤的驅(qū)動(dòng)調(diào)度6.6 設(shè)備分配程序設(shè)備分配程序6.7 WindowsNT的的I/O系統(tǒng)系統(tǒng) 6.8 Windows 2000/XP 設(shè)備管理機(jī)制實(shí)例分析設(shè)備管理機(jī)制實(shí)例分析第六章 輸入/輸出系統(tǒng) I/O系統(tǒng)I/O硬件設(shè)備介紹磁盤時(shí)鐘設(shè)備視頻控制器RS-232I/O系統(tǒng)的硬件組織I/O系統(tǒng)的軟件組織I/O控制方式設(shè)備控制器通道模型I/O軟件設(shè)計(jì)目

2、標(biāo)I/O軟件層次結(jié)構(gòu)磁盤調(diào)度設(shè)備分配程序第六章 輸入/輸出系統(tǒng) I/O系統(tǒng)I/O硬件設(shè)備介紹硬件設(shè)備介紹磁盤時(shí)鐘設(shè)備視頻控制器RS-232I/O系統(tǒng)的硬件組織I/O系統(tǒng)的軟件組織I/O控制方式設(shè)備控制器通道模型第六章 輸入/輸出系統(tǒng) I/O設(shè)備硬件概覽第六章 輸入/輸出系統(tǒng) 3. 按資源分配角度分類按資源分配角度分類 (1) 獨(dú)占設(shè)備獨(dú)占設(shè)備。一經(jīng)分配給某進(jìn)程,在進(jìn)程釋放它之前,。一經(jīng)分配給某進(jìn)程,在進(jìn)程釋放它之前,其它設(shè)備不能使用。如打印機(jī)、紙帶讀入機(jī)等。其它設(shè)備不能使用。如打印機(jī)、紙帶讀入機(jī)等。 (2) 共享設(shè)備共享設(shè)備。允許若干進(jìn)程同時(shí)共享的設(shè)備。如磁盤。允許若干進(jìn)程同時(shí)共享的設(shè)備。如磁

3、盤機(jī)。機(jī)。(3) 虛擬設(shè)備虛擬設(shè)備。通過假脫機(jī)(。通過假脫機(jī)(Spooling)技術(shù)把原來的)技術(shù)把原來的獨(dú)占設(shè)備改造成可為若干個(gè)進(jìn)程所共享的設(shè)備。獨(dú)占設(shè)備改造成可為若干個(gè)進(jìn)程所共享的設(shè)備。 第六章 輸入/輸出系統(tǒng) 4. 按傳輸數(shù)據(jù)數(shù)量分類按傳輸數(shù)據(jù)數(shù)量分類 外部設(shè)備按傳輸數(shù)據(jù)的數(shù)量,分為字符設(shè)備和塊設(shè)備。 (1) 字符設(shè)備。每次傳輸數(shù)據(jù)以字節(jié)為單位字節(jié)為單位的設(shè)備稱為字符設(shè)備,如打印機(jī)、終端、鍵盤等低速設(shè)備。 (2) 塊設(shè)備。傳輸以數(shù)據(jù)塊為單位數(shù)據(jù)塊為單位進(jìn)行的設(shè)備稱為塊設(shè)備。 如磁盤、磁帶等高速外存儲(chǔ)器等。 第六章 輸入/輸出系統(tǒng) I/O系統(tǒng)I/O硬件設(shè)備介紹硬件設(shè)備介紹磁盤磁盤時(shí)鐘設(shè)備視

4、頻控制器RS-232I/O系統(tǒng)的硬件組織I/O系統(tǒng)的軟件組織I/O控制方式設(shè)備控制器通道模型第六章 輸入/輸出系統(tǒng) 2.2.磁盤結(jié)構(gòu)解析磁盤結(jié)構(gòu)解析第六章 輸入/輸出系統(tǒng) 磁盤結(jié)構(gòu)解析 cont. 第六章 輸入/輸出系統(tǒng) 磁盤結(jié)構(gòu)解析 cont.C,H,S第六章 輸入/輸出系統(tǒng) 表6-1 典型的軟盤和硬盤的技術(shù)參數(shù) 第六章 輸入/輸出系統(tǒng) I/O系統(tǒng)I/O硬件設(shè)備介紹磁盤時(shí)鐘設(shè)備時(shí)鐘設(shè)備視頻控制器RS-232I/O系統(tǒng)的硬件組織I/O系統(tǒng)的軟件組織I/O控制方式設(shè)備控制器通道模型第六章 輸入/輸出系統(tǒng) 2. 時(shí)鐘時(shí)鐘 晶振每個(gè)脈沖減少一次計(jì)數(shù)器使用保持寄存器裝載計(jì)數(shù)器圖圖 6.3 可編程時(shí)鐘可

5、編程時(shí)鐘 可編程時(shí)鐘的優(yōu)點(diǎn)是它的中斷頻率可由軟件控制。 如果使用振蕩頻率為1 MHz的晶體,那么計(jì)數(shù)器每一微秒接收到一個(gè)脈沖, 對(duì)于16位的寄存器, 中斷可編程為按 1s至 65536s 的間隔發(fā)生。時(shí)鐘采用民用電產(chǎn)生固定頻率的震蕩采用晶振RC電路第六章 輸入/輸出系統(tǒng) 思考題:對(duì)于震蕩頻率為1MHz的晶振,要產(chǎn)生1s的時(shí)鐘中斷,如果用32位計(jì)數(shù)器,該計(jì)數(shù)器的值應(yīng)該設(shè)置多大?第六章 輸入/輸出系統(tǒng) 時(shí)鐘硬件所做的工作僅僅是按給定的時(shí)間間隔產(chǎn)生中斷, 其它和時(shí)間有關(guān)的工作必須由軟件(時(shí)鐘驅(qū)動(dòng)程序)來做。 時(shí)鐘軟件的任務(wù)包括: 維護(hù)日期和時(shí)間; 防止進(jìn)程運(yùn)行時(shí)間超過允許界限; 對(duì)CPU使用進(jìn)行記帳

6、; 處理用戶進(jìn)程提出的時(shí)間鬧鐘系統(tǒng)調(diào)用; 對(duì)系統(tǒng)某些部分提供監(jiān)視定時(shí)器; 支持直方圖監(jiān)視和統(tǒng)計(jì)信息搜集。 第六章 輸入/輸出系統(tǒng) 3. 終端終端(1) 存儲(chǔ)映像終端。 圖 6.4 存儲(chǔ)映像終端直接寫入視頻RAM CPU存儲(chǔ)器并行口總線視頻 RAM卡視頻控制器監(jiān)視器模擬視頻信號(hào)(例如 16 MHz)鍵盤第六章 輸入/輸出系統(tǒng) 視頻RAM卡和監(jiān)視器像素(Pixel):像素的顯示:。字符的顯示:需要知道字符的像素矩陣,也就是字符的“位模”。 不同的字符有不同的位模,這些位模通常不會(huì)變化, 因此保存在視頻ROM中。行的顯示:一行顯示80個(gè)字符,每個(gè)字符被劃分為9*14個(gè)像素 (包括字符間隔)。每次只顯

7、示一行掃描線。大家計(jì)算一下,要顯示一行字符,需要花費(fèi)多大的視頻RAM空間?4*6矩陣9*5矩陣第六章 輸入/輸出系統(tǒng) (2) RS-232終端。 圖 6.5 RS-232終端與計(jì)算機(jī)通信 CPU存儲(chǔ)器接口卡RS-232總線UART計(jì)算機(jī)UART終端接收線傳輸線UART:Universal Asynchronous Receiver Transmitter第六章 輸入/輸出系統(tǒng) I/O系統(tǒng)I/O硬件設(shè)備介紹磁盤時(shí)鐘設(shè)備視頻控制器RS-232I/O系統(tǒng)的硬件組織系統(tǒng)的硬件組織I/O系統(tǒng)的軟件組織I/O控制方式控制方式設(shè)備控制器通道模型第六章 輸入/輸出系統(tǒng) 6.1.3 I/O系統(tǒng)的硬件組織系統(tǒng)的硬

8、件組織 1. I/O控制方式控制方式 (1) 循環(huán)I/O測試方式。程序通過in, out 指令直接控制I/O設(shè)備, 進(jìn)行數(shù)據(jù)傳輸。 (2) 程序中斷I/O方式。 I/O操作仍然由CPU控制,一次只能傳輸 一個(gè)字或字符。外設(shè)不能直接訪問內(nèi)存。(3) DMA方式。(4) 通道方式。 第六章 輸入/輸出系統(tǒng) 圖 6.7 DMA方式下的數(shù)據(jù)傳輸 CPU內(nèi)存計(jì)數(shù)系統(tǒng)總線內(nèi)存地址計(jì)數(shù)磁盤控制器驅(qū)動(dòng)器緩沖器DMA寄存器第六章 輸入/輸出系統(tǒng) 采用DMA方式的數(shù)據(jù)傳輸處理過程如下: 當(dāng)進(jìn)程要求設(shè)備輸入數(shù)據(jù)時(shí),CPU把準(zhǔn)備存放輸入數(shù)據(jù)的內(nèi)存始址及要傳輸?shù)淖止?jié)數(shù)分別送入DMA控制器中的內(nèi)存地址寄存器和傳送字節(jié)計(jì)數(shù)

9、器;另外,還要把控制/狀態(tài)寄存器中的中斷允許位和啟動(dòng)位置1,從而啟動(dòng)設(shè)備,開始數(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í)通過中斷請求線發(fā)出中斷信號(hào), CPU接到中斷信號(hào)后轉(zhuǎn)中斷處理程序進(jìn)行相應(yīng)處理。 中斷處理結(jié)束后, CPU返回被中斷的進(jìn)程或去運(yùn)行重新被調(diào)度的進(jìn)程。 第六章 輸入/輸出系統(tǒng) (3) 設(shè)備控制器圖 6.8 設(shè)備控制器的組成 數(shù)據(jù)寄存器控制/狀態(tài)寄存器CPU與控制器接口數(shù)據(jù)線地址線控制線I

10、/O邏輯控制器與設(shè)備接口1控制器與設(shè)備接口i數(shù)據(jù)狀態(tài)控制數(shù)據(jù)狀態(tài)控制控制器與設(shè)備接口用于存放從CPU送來的數(shù)據(jù)/從設(shè)備產(chǎn)生的數(shù)據(jù)用于存放從CPU送來的控制信息/從設(shè)備產(chǎn)生的狀態(tài)信息第六章 輸入/輸出系統(tǒng) I/O系統(tǒng)I/O硬件設(shè)備介紹磁盤時(shí)鐘設(shè)備視頻控制器RS-232I/O系統(tǒng)的硬件組織I/O系統(tǒng)的軟件組織I/O控制方式設(shè)備控制器通道模型通道模型第六章 輸入/輸出系統(tǒng) 6.2 采用通道模型的采用通道模型的I/O系統(tǒng)系統(tǒng) 6.2.1 通道類型通道類型 1.字節(jié)多路通道字節(jié)多路通道(Byte Multiplexor Channel)2. 選擇通道第六章 輸入/輸出系統(tǒng) IBM 370 的I/O結(jié)構(gòu)第

11、六章 輸入/輸出系統(tǒng) 6.2.4 CPU和通道間的通訊和通道間的通訊 1. 輸入輸入/輸出指令輸出指令 例如, 某系統(tǒng)中輸入輸出類指令主要有: SIO, TIO, HIO, TCH。 所有I/O指令都具有如下格式: 操作碼 B1 D1 由(B1)+D1形成的地址指出通道號(hào)和設(shè)備號(hào)的存放單元,該單元的內(nèi)容為: 通道號(hào)設(shè)備號(hào)第六章 輸入/輸出系統(tǒng) SIO(START I/O):用于啟動(dòng)指定通道和設(shè)備開始工作,SIO指令發(fā)出后,根據(jù)通道和設(shè)備狀態(tài)建立結(jié)果特征,即條件碼。 CPU根據(jù)執(zhí)行結(jié)果建立的條件碼得知此次啟動(dòng)是否成功,再確定下一步的動(dòng)作。 TIO(TEST I/O):用以檢查I/O操作是否完成,

12、建立相應(yīng)的條件碼。 HIO(HALT I/O):強(qiáng)行停止通道和I/O設(shè)備正在執(zhí)行的操作。 TCH(TEST CHANNEL):測試通道,根據(jù)對(duì)通道測試的結(jié)果建立相應(yīng)的條件碼。 第六章 輸入/輸出系統(tǒng) 2. CPU和通道間的通訊和通道間的通訊 中央處理機(jī)用戶進(jìn)程操作系統(tǒng)進(jìn)程 i系統(tǒng)調(diào)用(I/O 請求)保護(hù)進(jìn)程i的現(xiàn)場組織通道程序存CAW 到固定單元執(zhí)行 SIO 指令檢查條件碼啟動(dòng) 成功進(jìn)程i阻塞重新調(diào)度進(jìn)程j運(yùn)行進(jìn)程 j中斷進(jìn)程j保護(hù)現(xiàn)場分析中斷事件處理I/O中斷激活進(jìn)程i重新調(diào)度通道判斷狀態(tài)形成條件碼執(zhí)行通道程序控制設(shè)備操作執(zhí)行情況登記在CSW 中出現(xiàn)中斷事件CSW 送固定單元通道號(hào)、設(shè)備號(hào)送

13、入特定寄存器設(shè)備和設(shè)備控制器執(zhí)行規(guī)定操作圖 6.11 CPU啟動(dòng)通道的工作流程 第六章 輸入/輸出系統(tǒng) 通道I/O主要過程的時(shí)間關(guān)系示意圖第六章 輸入/輸出系統(tǒng) I/O系統(tǒng)I/O硬件設(shè)備介紹磁盤時(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)磁盤調(diào)度設(shè)備分配程序第六章 輸入/輸出系統(tǒng) 6.3 I/O系統(tǒng)的軟件組織系統(tǒng)的軟件組織 6.3.1 I/O軟件設(shè)計(jì)的目標(biāo)軟件設(shè)計(jì)的目標(biāo) p 設(shè)備無關(guān)性設(shè)備無關(guān)性:使程序員寫出的軟件無需任何修改便能讀出軟盤、硬盤以及CD-ROM等不同設(shè)備上的文件, 而與具體設(shè)備無關(guān)。不

14、同設(shè)備之間的差異由操作系統(tǒng)去處理,操作系統(tǒng)會(huì)調(diào)用不同的設(shè)備驅(qū)動(dòng)程序來真正地將輸入數(shù)據(jù)寫到輸出設(shè)備上。p 錯(cuò)誤處理錯(cuò)誤處理:錯(cuò)誤應(yīng)盡可能在接近硬件的地方處理。p 同步同步/異步傳輸異步傳輸:p必須能處理獨(dú)占設(shè)備和共享設(shè)備的必須能處理獨(dú)占設(shè)備和共享設(shè)備的I/O操作操作。第六章 輸入/輸出系統(tǒng) 6.3.6 I/O系統(tǒng)軟件的層次結(jié)構(gòu)系統(tǒng)軟件的層次結(jié)構(gòu) 圖 6.12 I/O系統(tǒng)的層次結(jié)構(gòu) 用戶進(jìn)程設(shè)備無關(guān)軟件設(shè)備驅(qū)動(dòng)程序中斷處理程序硬件層次I/O應(yīng)答I/O功能進(jìn)行I/O調(diào)用; 格式化I/O;Spooling命名,保護(hù),阻塞,緩沖,分配建立設(shè)備寄存器;檢查狀態(tài)當(dāng)I/O結(jié)束時(shí),喚醒驅(qū)動(dòng)程序執(zhí)行I/O操作I/

15、O請 求第六章 輸入/輸出系統(tǒng) 用戶進(jìn)程用戶進(jìn)程count=read(fd, buffer, nbytes)if(count= =nbytes).喚醒用戶進(jìn)程繼續(xù)執(zhí)行喚醒用戶進(jìn)程繼續(xù)執(zhí)行設(shè)備無關(guān)軟件設(shè)備無關(guān)軟件通過fd找到對(duì)應(yīng)的文件file結(jié)構(gòu)和數(shù)據(jù)緩沖區(qū),并在緩沖區(qū)中查看數(shù)據(jù);若沒有數(shù)據(jù),則調(diào)用驅(qū)動(dòng)程序讀數(shù)據(jù)。count=設(shè)備驅(qū)動(dòng)程序設(shè)備驅(qū)動(dòng)程序?qū)嵤┰O(shè)備讀控制所需的一系列操作硬件硬件 磁盤設(shè)備控制器 讀取數(shù)據(jù)完畢中斷處理程序第六章 輸入/輸出系統(tǒng) I/O請求處理過程系統(tǒng)功能調(diào)用第六章 輸入/輸出系統(tǒng) 6.4 緩緩 沖沖 技技 術(shù)術(shù) 6.4.1 單緩沖單緩沖 圖 6.13 無緩沖與單緩沖(a)

16、 無緩沖;(b) 單緩沖 用戶進(jìn)程操作系統(tǒng)I/O 設(shè)備(a)用戶進(jìn)程操作系統(tǒng)I/O 設(shè)備(b)第六章 輸入/輸出系統(tǒng) 單緩沖工作示意圖在單緩沖技術(shù)中CPU和外設(shè)輪流使用一個(gè)緩沖。每當(dāng)一個(gè)用戶進(jìn)程發(fā)出一個(gè)I/O請求時(shí),OS便在主存中為之分配一個(gè)緩沖區(qū)。圖7.10顯示了單緩沖的工作過程,處理一塊數(shù)據(jù)時(shí)間:Max(C,T)+M 。用戶區(qū)緩沖區(qū)輸入T傳送MI/O設(shè)備操作系統(tǒng)用戶進(jìn)程計(jì)算C第六章 輸入/輸出系統(tǒng) 6.4.2 雙緩沖雙緩沖 圖 6.14 雙緩沖 用戶進(jìn)程I/O 設(shè)備AB第六章 輸入/輸出系統(tǒng) 雙緩沖工作過程示意圖雙緩沖工作方式的基本方法是在設(shè)備輸入時(shí),先將數(shù)據(jù)輸入到緩沖區(qū)A,裝滿后便轉(zhuǎn)向緩

17、沖區(qū)B。此時(shí)操作系統(tǒng)可以從緩沖區(qū)A中提取數(shù)據(jù)傳送到用戶區(qū),最后由CPU對(duì)數(shù)據(jù)進(jìn)行計(jì)算。其工作過程如下圖所示。系統(tǒng)處理一塊數(shù)據(jù)的處理時(shí)間可粗略地認(rèn)為是MAX(C,T)。若CT,可使塊設(shè)備連續(xù)輸入;若CT,可使CPU不必等待設(shè)備輸入。也即采用雙緩沖區(qū),CPU和外設(shè)都可以連續(xù)處理而無需等待對(duì)方。但是,要求CPU和外設(shè)的速度相近。緩沖區(qū)A用戶區(qū)輸入T傳送M操作系統(tǒng)用戶進(jìn)程計(jì)算C緩沖區(qū)BI/O設(shè)備第六章 輸入/輸出系統(tǒng) 6.4.3 緩沖池緩沖池 1. 緩沖池的組成緩沖池的組成 對(duì)于既可用于輸入又可用于輸出的公用緩沖池, 其中至少應(yīng)包含以下三種類型的緩沖區(qū): 空閑緩沖區(qū); 裝滿輸入數(shù)據(jù)的緩沖區(qū); 裝滿輸出

18、數(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ì)列。 第六章 輸入/輸出系統(tǒng) 除了上述三個(gè)隊(duì)列外,還應(yīng)具有四種工作緩沖區(qū): (1) 用于收容輸入數(shù)據(jù)的工作緩沖區(qū); (2) 用于提取輸入數(shù)據(jù)的工作緩沖區(qū); (3) 用于收容輸出數(shù)據(jù)的工作緩沖區(qū); (4)用于提取輸出數(shù)據(jù)的工作緩沖區(qū)。 第六章 輸入/輸出系統(tǒng) 2. 緩沖池管理的基本操作緩沖池管理的基本操作 對(duì)緩沖池管理提供兩個(gè)基本操

19、作(過程): (1) getbuf(type):用于從type所指定的隊(duì)列的隊(duì)首, 摘下一個(gè)緩沖區(qū); (2) putbuf(type,number):用于將用參數(shù)number所指示的緩沖區(qū), 掛在type隊(duì)列上。 第六章 輸入/輸出系統(tǒng) 3. 緩沖池的工作方式緩沖池的工作方式 圖 6.15 緩沖池的工作方式 收容輸入hinsout提取輸出sinhout緩沖池收容輸出提取輸入用戶程序第六章 輸入/輸出系統(tǒng) 6.4.4 預(yù)先讀與延遲寫預(yù)先讀與延遲寫 1. 預(yù)先讀預(yù)先讀 操作系統(tǒng)讀塊設(shè)備時(shí),一般通過同步方式把一指定的數(shù)據(jù)塊讀入緩沖區(qū),此時(shí)用戶進(jìn)程不得不進(jìn)入阻塞狀態(tài),等待數(shù)據(jù)傳輸?shù)慕Y(jié)束。為了加快進(jìn)程的

20、推進(jìn)速度,提高CPU和塊設(shè)備工作的并行程度,最好在使用某一塊之前,用異步方式提早把它讀入緩沖區(qū)。當(dāng)用戶進(jìn)程實(shí)際需要該塊數(shù)據(jù)時(shí),可以立即從緩沖區(qū)取走而無需等待。 這種技術(shù)稱為預(yù)先讀。 第六章 輸入/輸出系統(tǒng) 2. 延遲寫延遲寫 當(dāng)塊設(shè)備進(jìn)行輸出時(shí),如果某一緩沖區(qū)只寫了一部分,則不要急于把該緩沖區(qū)的內(nèi)容寫到塊設(shè)備上,而是把寫塊操作推遲到某個(gè)適當(dāng)?shù)臅r(shí)機(jī)進(jìn)行。那么什么是適當(dāng)?shù)臅r(shí)機(jī)呢?一般有兩個(gè):其一是延遲寫的緩沖區(qū)被寫滿時(shí),其二是該緩沖區(qū)被重新分配時(shí)。 注意,文件關(guān)閉時(shí)緩沖區(qū)被強(qiáng)行物理寫入塊設(shè)備。第六章 輸入/輸出系統(tǒng) I/O系統(tǒng)I/O硬件設(shè)備介紹磁盤時(shí)鐘設(shè)備視頻控制器RS-232I/O系統(tǒng)的硬件組織

21、I/O系統(tǒng)的軟件組織I/O控制方式設(shè)備控制器通道模型I/O軟件設(shè)計(jì)目標(biāo)I/O軟件層次結(jié)構(gòu)磁盤調(diào)度磁盤調(diào)度設(shè)備分配程序第六章 輸入/輸出系統(tǒng) 6.5 磁盤的驅(qū)動(dòng)調(diào)度磁盤的驅(qū)動(dòng)調(diào)度 磁盤的驅(qū)動(dòng)調(diào)度是先進(jìn)行移臂(移動(dòng)存取臂)調(diào)度,再進(jìn)行旋轉(zhuǎn)調(diào)度。例如,某一時(shí)刻對(duì)磁盤的輸入/輸出請求序列是: 柱面(CC) 磁道(HH) 物理記錄R 7 4 1 7 4 8 7 4 5 40 6 4 2 7 7 第六章 輸入/輸出系統(tǒng) 進(jìn)一步考查 7 號(hào)柱面上的三個(gè)輸入/輸出請求。 按上述次序,磁盤需旋轉(zhuǎn)近兩周才能完成訪問。若將輸入/輸出請求按照下列的次序完成訪問: 柱面(CC) 磁道(HH) 物理記錄R 7 4 1 7

22、 4 5 7 4 8 第六章 輸入/輸出系統(tǒng) 移臂調(diào)度算法有: (1) 先來先服務(wù)算法(FCFS)。先來先服務(wù)調(diào)度算法是最簡單的一種方法,它按照輸入/輸出請求到達(dá)的順序, 逐一完成訪問請求。 (2) 最短查找時(shí)間優(yōu)先法(SSTF)。這種算法總是先完成距當(dāng)前存取臂距離最近的柱面上的輸入/輸出請求。 (3) 掃描法(SCAN)。由于請求序列具有動(dòng)態(tài)性質(zhì),所以可采用掃描法。存取臂從磁盤的一端出發(fā), 向另一端移動(dòng),遇到需要訪問的柱面就完成訪問請求,直至到達(dá)磁盤的另一端。到達(dá)另一端后,存取臂移動(dòng)方向就倒轉(zhuǎn)過來,繼續(xù)完成這一方向上的訪問請求。 第六章 輸入/輸出系統(tǒng) 圖 6.16 電梯調(diào)度算法流程 同當(dāng)前

23、柱面相同?現(xiàn)在是向里移?按最佳物理記錄存取有比當(dāng)前柱面號(hào)小的請求?有比當(dāng)前柱面號(hào)大的請求?A改變存取臂方向選擇柱面號(hào)最 大 者選擇柱面號(hào)最 小 者BYYNNNNNY有存取請求?執(zhí)行存取B改變存取臂方向A移臂到指定柱面登記當(dāng)前位置電梯調(diào)度入口結(jié)束YY第六章 輸入/輸出系統(tǒng) I/O系統(tǒng)I/O硬件設(shè)備介紹磁盤時(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è)備分配程序設(shè)備分配程序磁盤調(diào)度第六章 輸入/輸出系統(tǒng) 6.6 設(shè)備分配程序設(shè)備分配程序 6.6.1 設(shè)備分配的數(shù)據(jù)結(jié)構(gòu)設(shè)備分配的數(shù)據(jù)結(jié)構(gòu) 在配置有通道的計(jì)算

24、機(jī)系統(tǒng)中,設(shè)備分配程序至少應(yīng)解決以下三個(gè)問題: (1) 是否有能用來為I/O請求提供的通路?(2) 是否有一條以上的通路可用?(3) 如果當(dāng)前尚無通路可用, 那么通路何時(shí)才能空閑? 第六章 輸入/輸出系統(tǒng) 圖 6.17 設(shè)備管理中的三種控制塊 第六章 輸入/輸出系統(tǒng) 圖 6.18 UCB, CUCB, CCB間的連接間的連接與此控制器相連的通道表0設(shè)備 E的 U CB控制器C的 CU CB與此控制器相連的通道表控制器D 的 CU CB通道 A 的 CCB通道 B的 CCB0與此設(shè)備相連的控制器表第六章 輸入/輸出系統(tǒng) 設(shè)備 E的 UCB正在使用該設(shè)備的進(jìn)程等待該設(shè)備的進(jìn)程表PCBCC-PCB0

25、BB-PCBAA -PCB圖圖 6.19 UCB和PCB的連接 第六章 輸入/輸出系統(tǒng) 圖 6.20 系統(tǒng)設(shè)備表與UCB的關(guān)系 CARDUCB始址PRINTUCB始址MTUCB始址DISCUCB始址MT的 UCB集合SDTUCB(T00)UCB(T01)UCB(T02)UCB(T)第六章 輸入/輸出系統(tǒng) 對(duì)于所請求的I/O設(shè)備,根據(jù)上述的查找方法,可能出現(xiàn)三種情況: (1) 對(duì)于所請求的I/O設(shè)備, 僅有一條通路可用, 例如: 通道B控制器C設(shè)備E。 (2) 對(duì)于所請求的I/O設(shè)備,可以找到一條以上的可用通路, 例如上例中,最多可找出四條可用通路: 通道A控制器C設(shè)備E通道A控制器D設(shè)備E通道

26、B控制器C設(shè)備E通道B控制器D設(shè)備E (3) 對(duì)于所請求的I/O設(shè)備, 沒有一條可用的通路。 第六章 輸入/輸出系統(tǒng) 6.6.2 I/O調(diào)度程序調(diào)度程序 在多進(jìn)程的系統(tǒng)中,由于進(jìn)程數(shù)多于設(shè)備數(shù),就必然要引起進(jìn)程對(duì)資源的爭奪。為使系統(tǒng)有條不紊地工作,系統(tǒng)必須具有一套合理的設(shè)備分配原則。 這些原則與下述的四個(gè)因素有關(guān): (1 1)I/O設(shè)備的固有屬性 (2 2) I/O設(shè)備的分配算法 先請求先服務(wù)。先請求先服務(wù)。 優(yōu)先級(jí)高者優(yōu)先優(yōu)先級(jí)高者優(yōu)先。 (3 3) 設(shè)備分配的安全性 (4 4) 與設(shè)備的無關(guān)性 不能采用時(shí)間片輪轉(zhuǎn)法!第六章 輸入/輸出系統(tǒng) 6.6.3 設(shè)備分配的實(shí)施設(shè)備分配的實(shí)施 1. 單

27、通路單通路I/O系統(tǒng)的設(shè)備分配系統(tǒng)的設(shè)備分配在單通路I/O系統(tǒng)中, 按如下步驟實(shí)施設(shè)備分配:(1) 分配設(shè)備。 (2) 分配控制器。 (3) 分配通道。 第六章 輸入/輸出系統(tǒng) 2. 多通路多通路I/O系統(tǒng)的設(shè)備分配系統(tǒng)的設(shè)備分配 假定某進(jìn)程n向系統(tǒng)提出I/O請求,要求為它分配一臺(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請

28、求無法滿足, 只好把進(jìn)程n插入到等待該類設(shè)備的隊(duì)列中。 只要在該類設(shè)備中有一個(gè)空閑設(shè)備,系統(tǒng)便可對(duì)其計(jì)算分配該設(shè)備給進(jìn)程n的安全性。 若安全,則把設(shè)備分配給進(jìn)程n,否則將其插入該類設(shè)備的等待隊(duì)列。 第六章 輸入/輸出系統(tǒng) (2) 當(dāng)系統(tǒng)把第i個(gè)設(shè)備分配給進(jìn)程n后,便可通過檢查與此設(shè)備相連的第一個(gè)CUCB,而得知該控制器是否忙碌;若忙, 再檢查第二個(gè)CUCB表。若與此設(shè)備相連的所有的控制器都忙,則表明無控制器可分配給設(shè)備i。只要設(shè)備i不是該類設(shè)備中的最后一個(gè),便可返回到步驟(1),試圖再找下一個(gè)空閑設(shè)備;否則,仍將該進(jìn)程插入控制器等待隊(duì)列中。 第六章 輸入/輸出系統(tǒng) (3) 若有空閑的控制器,便

29、可進(jìn)一步檢查與此控制器相連的第一個(gè)通道是否忙碌。若忙,再查看第二個(gè)CCB表,若與此控制器相連的全部通道都忙,表明無通道可分配給控制器j。只要控制器j不是該設(shè)備i的最后一個(gè)控制器,便返回到步驟(2),試圖找出一個(gè)空閑的控制器,否則,將該進(jìn)程插入通道等待隊(duì)列。 若有空閑通道可用,則此次設(shè)備分配成功,將相應(yīng)的設(shè)備、控制器和通道分配給進(jìn)程n,接著便可啟動(dòng)I/O設(shè)備,開始信息傳送。 多通路I/O系統(tǒng)設(shè)備分配的流程示于圖 6.21。 第六章 輸入/輸出系統(tǒng) 圖 6.21 設(shè)備分配流程圖 從SDT查該類設(shè)備的UC B始址檢查UC B狀態(tài) 忙?安全?分配設(shè)備i 設(shè)備i 最后?控制器j最后?最后一個(gè)?12NYN

30、YNYNNY為進(jìn)程分配一臺(tái)物理設(shè)備設(shè)備等待鏈查找C UC B 最后一個(gè)?Y1控制器等待鏈Y2NY通道等待鏈分配結(jié)束N 忙?分配通道k分配控制器j查找C C B 忙? 最后一個(gè)?NYY第六章 輸入/輸出系統(tǒng) 圖 6.22 I/O系統(tǒng)概貌 1. I/O系統(tǒng)概貌系統(tǒng)概貌 6.7.1 I/O系統(tǒng)的結(jié)構(gòu)系統(tǒng)的結(jié)構(gòu) 6.7 Windows NT的的I/O系統(tǒng)系統(tǒng) 第六章 輸入/輸出系統(tǒng) NT執(zhí)行體的I/O系統(tǒng)接收用戶態(tài)和核心態(tài)進(jìn)程的I/O請求, 以不同的方式傳送到I/O設(shè)備。I/O系統(tǒng)由一組負(fù)責(zé)處理各種設(shè)備的輸入/輸出部件構(gòu)成。 這些部件有: (1) I/O管理程序; (2) 文件系統(tǒng); (3) 緩沖存儲(chǔ)

31、管理器(Cache Manager); (4) 設(shè)備驅(qū)動(dòng)程序(Device Driver); (5) 網(wǎng)絡(luò)轉(zhuǎn)發(fā)程序(NetWork Redirector)和網(wǎng)絡(luò)服務(wù)程序(Network Server)。 第六章 輸入/輸出系統(tǒng) 2. I/O管理程序管理程序 I/O管理程序建立了NT執(zhí)行體的I/O模型,它實(shí)現(xiàn)與設(shè)備無關(guān)的輸入/輸出,即它并不進(jìn)行實(shí)際的I/O處理。它的主要工作是建立一個(gè)代表I/O操作的I/O請求包IRP(I/O Request Packet),把IRP傳送給適當(dāng)?shù)尿?qū)動(dòng)程序并在I/O完成后處理其結(jié)果,最后撤消IRP。 與此相反,驅(qū)動(dòng)程序接收IRP,執(zhí)行IRP規(guī)定的操作,并在完成后將I

32、RP傳回I/O管理程序或通過驅(qū)動(dòng)程序再傳到另一驅(qū)動(dòng)程序, 以求進(jìn)一步的處理。 I/O系統(tǒng)采用包驅(qū)動(dòng)方式,每個(gè)I/O請求都用一個(gè)I/O請求包來表達(dá)。每個(gè)IRP是一個(gè)數(shù)據(jù)結(jié)構(gòu),用以控制在每一操作步驟上的I/O操作的處理。 第六章 輸入/輸出系統(tǒng) 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建立的邏輯模型吸收了UNIX I/O系統(tǒng)的概念,認(rèn)為“所有的讀寫數(shù)據(jù)都看成是直接送往虛擬文件的字節(jié)流”。虛

33、擬文件用文件描述符表示, 處理虛擬文件就像處理一個(gè)真正的文件。由操作系統(tǒng)判定這個(gè)虛擬文件究竟是設(shè)備、管道、網(wǎng)絡(luò)還是磁盤上的真正文件。 第六章 輸入/輸出系統(tǒng) 圖 6.23 打開一個(gè)文件對(duì)象 系統(tǒng)服務(wù)對(duì)象管理程序安全性參考監(jiān)視程序進(jìn)程管理程序本地過程調(diào)用功能虛擬內(nèi)存管理程序文件系統(tǒng)高速緩沖管理程序設(shè)備驅(qū)動(dòng)程序網(wǎng)絡(luò)驅(qū)動(dòng)程序I/O 管理程序 創(chuàng)建文件對(duì)象 返回對(duì)象句柄內(nèi)核Win32DLLCRuntimeDLLWin32應(yīng) 用 程 序 fp fopen(D:myfile.dat,r) CreateFile(D:myfile.dat, ) 返 回 文 件 句 柄 NtCreateFile(D:myfil

34、e.dat, )用戶態(tài)核心態(tài)Win32子 系 統(tǒng)第六章 輸入/輸出系統(tǒng) 6.7.2 驅(qū)動(dòng)程序模型驅(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(延遲過程調(diào)用)程序; (6) 一個(gè)完成例程; (7) 一個(gè)撤消I/O例程; (8) 一個(gè)卸載例程; (9) 一個(gè)出錯(cuò)記錄例程。 第六章 輸入/輸出系統(tǒng) 6.7.3 同步同步I/O操作與異步操作與異步I/O操作操作 圖圖 6.24 同步同步I/O操作操作 應(yīng)用程序WriteFile(file_handle

35、,data, )Win32子系統(tǒng)調(diào)用NT寫文件服務(wù)I/O管理器檢查參數(shù),建立 IRP調(diào)用設(shè)備驅(qū)動(dòng)程序設(shè)備驅(qū)動(dòng)程序I/O對(duì)設(shè)備排隊(duì)執(zhí) 行 I/O轉(zhuǎn)換中斷服務(wù)設(shè)備處理中斷完成IRP返回核心態(tài)用戶態(tài)返回?cái)?shù)據(jù)(等待服務(wù)完成)ReadFile(file_handle, data, )時(shí)間第六章 輸入/輸出系統(tǒng) 同步I/O操作過程可歸納如下: (1) 按用戶要求,I/O管理程序?yàn)橹纬蒊RP, 并把它傳送給驅(qū)動(dòng)程序, 由驅(qū)動(dòng)程序完成I/O操作。 (2) 設(shè)備完成I/O操作后,發(fā)中斷請求,設(shè)備驅(qū)動(dòng)程序中的中斷處理程序進(jìn)行相應(yīng)中斷處理。 (3) I/O管理程序完成I/O請求。 在大多數(shù)操作系統(tǒng)中,同步I/O是

36、標(biāo)準(zhǔn)的,Windows NT除了提供同步I/O外還提供異步I/O,允許子系統(tǒng)選用同步I/O或異步I/O, 并根據(jù)它的應(yīng)用程序接口操作的不同,為客戶應(yīng)用程序提供不同類型的I/O。 第六章 輸入/輸出系統(tǒng) 圖 6.25 異步I/O 應(yīng)用程序WriteFile(file_handle,data, overlapped)Win32子系統(tǒng)調(diào)用NT寫文件服務(wù)I/O管理程序檢查參數(shù),建立 IRP調(diào)用設(shè)備驅(qū)動(dòng)程序設(shè)備驅(qū)動(dòng)程序I/O對(duì)設(shè)備排隊(duì)執(zhí) 行 I/O轉(zhuǎn)換中斷服務(wù)設(shè)備處理中斷完成IRP設(shè)備文件句柄為有信號(hào)狀態(tài)核心態(tài)用戶態(tài)(執(zhí)行其它任務(wù))ReadFile(file_handle,data, overlappe

37、d)時(shí)間返回返回返回I/O掛起狀態(tài)Wait(file_handle)(等待結(jié)束)第六章 輸入/輸出系統(tǒng) 6.8 Windows 2000/XP 設(shè)備管理機(jī)制實(shí)例分析 6.8.1 Windosw 2000/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è)備五花八門、種類繁雜,小到傳感器、鼠標(biāo),大到磁盤、磁帶、繪圖儀等等,它們的性能截然不同??傊鋽?shù)據(jù)格式、數(shù)據(jù)組織到使用方法都有很大差別。如何規(guī)范化設(shè)計(jì),這對(duì)操作系統(tǒng)設(shè)計(jì)也是需要研究的。第六章 輸入/輸出系統(tǒng) Windows 2000/XP操作系統(tǒng)采用和強(qiáng)調(diào)了軟件工程中抽象的原則,在

38、設(shè)計(jì)中全力找出各種事務(wù)的共性,用一致的模型、方法和界面來使其規(guī)范化,如用客戶/服務(wù)器模型來規(guī)范各個(gè)用戶進(jìn)程之間的關(guān)系。 Windows 2000/XP 的I/O系統(tǒng)體系結(jié)構(gòu)如圖6.26所示,它由幾個(gè)可執(zhí)行模塊和大量設(shè)備驅(qū)動(dòng)程序組成。 通過這張圖我們可以看到,Windows 2000的I/O體系的設(shè)計(jì)使用了分層結(jié)構(gòu),這有利于實(shí)現(xiàn)其平臺(tái)無關(guān)性,也為其他目標(biāo)的實(shí)現(xiàn)帶來了便利。 第六章 輸入/輸出系統(tǒng) 核心態(tài)安裝組件安裝組件用戶態(tài).inf.cat注冊表執(zhí)行體其他接口ACPI硬件抽象層HAL應(yīng)用程序WIN32系統(tǒng)服務(wù)WMI服務(wù)用戶模式即插即用管理器安裝組件WDM WMI 例程即插即用管理器電源管理器I/

39、O管理器即插即用接口電源管理器接口I/O接口WDM接口PC卡USBPCIWDM即插即用總線驅(qū)動(dòng)技術(shù)WDM設(shè)備驅(qū)動(dòng)程序Windows 2000即插即用驅(qū)動(dòng)程序圖6.26 Windows 2000/XP的I/O系統(tǒng)體系結(jié)構(gòu)第六章 輸入/輸出系統(tǒng) 6.8.2 核心態(tài)模塊 大部分I/O操作并不會(huì)涉及所有的組件,一個(gè)典型的I/O操作從應(yīng)用程序調(diào)用一個(gè)與I/O操作有關(guān)的函數(shù)開始,通常會(huì)涉及I/O管理器、一個(gè)或多個(gè)設(shè)備驅(qū)動(dòng)程序以及硬件抽象層。I/O系統(tǒng)相關(guān)的核心態(tài)模塊的主要功能如下。第六章 輸入/輸出系統(tǒng) I/O管理器:把應(yīng)用程序和系統(tǒng)組件連接到各種虛擬的、邏輯的和物理的設(shè)備上,并定義了一個(gè)支持設(shè)備驅(qū)動(dòng)程序

40、的基本構(gòu)架,負(fù)責(zé)驅(qū)動(dòng)I/O請求的處理,為設(shè)備驅(qū)動(dòng)程序提供核心服務(wù)。它把用戶態(tài)的讀寫轉(zhuǎn)化為I/O請求包IRP。第六章 輸入/輸出系統(tǒng) 即插即用管理器:通過與I/O管理器和總線驅(qū)動(dòng)程序的協(xié)同工作來檢測硬件資源的分配,并檢測相應(yīng)硬件設(shè)備的添加和刪除。 電源管理器:通過與I/O管理器的協(xié)調(diào)工作,來檢測整個(gè)系統(tǒng)和單個(gè)硬件設(shè)備,完成不同電源狀態(tài)的轉(zhuǎn)換。 WMI支持例程:也叫做Windows驅(qū)動(dòng)程序模型 WDM(Windows Driver Model)的提供者,運(yùn)行驅(qū)動(dòng)程序使用這些支持例程作為媒介,與用戶態(tài)運(yùn)行的WMI服務(wù)通信。第六章 輸入/輸出系統(tǒng) 設(shè)備驅(qū)動(dòng)程序:為某種類型的設(shè)備提供一個(gè)I/O接口。設(shè)備

41、驅(qū)動(dòng)程序從I/O管理器接收命令,當(dāng)處理完畢后通知I/O管理器。設(shè)備驅(qū)動(dòng)程序之間的協(xié)同工作也通過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ì)象。第六章 輸入/輸出系統(tǒng) 注冊表:存儲(chǔ)基本硬件、驅(qū)動(dòng)程序的初始化和配置信息的數(shù)據(jù)庫。 硬件抽象層:I/O訪問例程把設(shè)備驅(qū)動(dòng)程序與多種多樣的硬件平臺(tái)隔離開來,使它們在給定的體系結(jié)構(gòu)中是二進(jìn)制可移植的,并在Windows 2000/XP支持的硬件體系結(jié)構(gòu)中是源代碼可移植的。第六章 輸入/輸出系統(tǒng) HAL I/O服務(wù)例程核心設(shè)備驅(qū)動(dòng)程序

42、I/O管理器I/O系統(tǒng)服務(wù)API(NtXXX)用戶模式API驅(qū)動(dòng)程序支持例程圖6.27 一個(gè)典型的I/O請求流程第六章 輸入/輸出系統(tǒng) 6.8.3 輸入/輸出系統(tǒng)的數(shù)據(jù)結(jié)構(gòu) 1文件對(duì)象 文件對(duì)象提供了基于內(nèi)存的共享物理資源的表示法(除了被命名的管道和郵箱外,它們雖然是基于內(nèi)存的但不是物理的)。在Windows 2000/XP的I/O系統(tǒng)中,文件對(duì)象也代表這些資源。當(dāng)調(diào)用者打開文件或單一設(shè)備時(shí),I/O管理器將為文件對(duì)象返回一個(gè)句柄。文件對(duì)象的主要屬性如表6-2所示。第六章 輸入/輸出系統(tǒng) 表6-2 文件對(duì)象屬性屬 性目 的文件名標(biāo)識(shí)文件對(duì)象指向的物理文件字節(jié)偏移量在文件中標(biāo)識(shí)當(dāng)前位置(只對(duì)同步I

43、/O有效)共享模式表示當(dāng)調(diào)用者正在使用文件時(shí),其他調(diào)用者是否可以打開文件進(jìn)行讀、寫操作或刪除操作指向設(shè)備對(duì)象的指針表示文件在其上駐留的設(shè)備類型指向卷參數(shù)塊的指針表示文件在其上駐留的卷或分區(qū)指向區(qū)域?qū)ο蟮闹羔樏枋鲆粋€(gè)映射文件的根結(jié)構(gòu)指向?qū)S酶咚倬彺嬗成涞闹羔槺硎疚募哪囊徊糠钟筛咚倬彺婀芾砥鞴芾恚约八鼈凂v留在高速緩存的什么地方第六章 輸入/輸出系統(tǒng) 圖6.29說明打開一個(gè)文件時(shí)系統(tǒng)所發(fā)生的情況。在這個(gè)實(shí)例中,C程序調(diào)用庫函數(shù)fopen,由它去調(diào)用WIN32的CreatFile函數(shù)。然后由系統(tǒng)DLL在NTDLL.DLL中調(diào)用本地NTCreatFile函數(shù),在NTDLL.DLL中的例程包含引發(fā)到核

44、心態(tài)系統(tǒng)服務(wù)調(diào)度程序轉(zhuǎn)換適當(dāng)?shù)闹噶?。最后,系統(tǒng)服務(wù)調(diào)度程序在NTOSKRNL.EXE中調(diào)用真正的NTCreatFile例程。第六章 輸入/輸出系統(tǒng) 用戶態(tài)I/O管理器對(duì)象管理器安全引用監(jiān)視器本地過程調(diào)用工具核心WIN32應(yīng)用子程序運(yùn)行時(shí)的DLL3.NTCreateFile(D:myfile.dat,)4.創(chuàng)建文件對(duì)象虛擬內(nèi)存管理器文件系統(tǒng)高速緩存管理器設(shè)備驅(qū)動(dòng)程序網(wǎng)絡(luò)驅(qū)動(dòng)程序5.返回對(duì)象句柄系統(tǒng)服務(wù)核心態(tài)2.CreateFile(D:myfile.dat,)1.fpfopen(D:myfile.dat,r)WIN32 DLL6.返回文件句柄圖6.29 打開一個(gè)文件對(duì)象的過程第六章 輸入/輸出系

45、統(tǒng) 2驅(qū)動(dòng)程序?qū)ο蠛驮O(shè)備對(duì)象 當(dāng)線程為一個(gè)文件對(duì)象打開一個(gè)句柄時(shí),I/O管理器必須根據(jù)文件對(duì)象名稱來決定它將調(diào)用哪個(gè)驅(qū)動(dòng)程序來處理請求。而且,I/O管理器必須在線程下一次使用同一個(gè)文件句柄時(shí)可定位這個(gè)信息。第六章 輸入/輸出系統(tǒng) 驅(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ì)齊方式和它用來保存即將到來的I/O請求包的設(shè)備隊(duì)列的位置。第六章 輸入/輸出系統(tǒng) 圖6.30顯示了一個(gè)設(shè)備驅(qū)動(dòng)器對(duì)象。從圖中可以看出,設(shè)備對(duì)象反過來指向自己的驅(qū)動(dòng)程

46、序?qū)ο?,這樣I/O管理器就知道在接收一個(gè)I/O請求時(shí)應(yīng)該調(diào)用哪個(gè)驅(qū)動(dòng)程序,即它使用設(shè)備對(duì)象找到代表該設(shè)備驅(qū)動(dòng)程序的驅(qū)動(dòng)程序?qū)ο?,然后利用在初始化請求中提供的功能碼來索引驅(qū)動(dòng)程序?qū)ο蟆C總€(gè)功能碼都對(duì)應(yīng)于一個(gè)驅(qū)動(dòng)程序的入口。第六章 輸入/輸出系統(tǒng) IRPIRP讀該驅(qū)動(dòng)程序操作的設(shè)備功能碼2文件讀寫卸載撤消設(shè)備對(duì)象IRPI/O請求隊(duì)列文件對(duì)象屬性(磁盤分區(qū))設(shè)備對(duì)象(磁盤分區(qū))(磁盤)設(shè)備對(duì)象啟動(dòng)I/O驅(qū)動(dòng)控制器驅(qū)動(dòng)程序?qū)ο蠊δ艽a1功能碼n文件名設(shè)備類型字節(jié)位移共享模式打開模式指向設(shè)備對(duì)象指針指向卷參數(shù)塊指針文件處理圖6.30 Windows 2000/XP輸入/輸出的數(shù)據(jù)結(jié)構(gòu)第六章 輸入/輸出系統(tǒng)

47、 3IO請求包 IRP是I/O系統(tǒng)用來存儲(chǔ)處理I/O請求所需信息的地方。當(dāng)線程調(diào)用I/O服務(wù)時(shí),I/O管理器就構(gòu)造一個(gè)IRP來表示在整個(gè)I/O過程中要進(jìn)行的操作。I/O管理器在IRP中保存一個(gè)指向調(diào)用者的文件對(duì)象指針。IRP由兩部分組成:固定部分(標(biāo)題)和一個(gè)或多個(gè)堆棧單元。 第六章 輸入/輸出系統(tǒng) IRP設(shè)備驅(qū)動(dòng)程序2. I/O管理器創(chuàng)建IRP并初始化第一個(gè)堆棧單元核心態(tài)I/O系統(tǒng)服務(wù)環(huán)境子系統(tǒng)或動(dòng)態(tài)鏈接庫IRP堆棧單元I/O管理器1.應(yīng)用程序?qū)⑽募懙酱蛴C(jī),將句柄傳給文件對(duì)象用戶態(tài)調(diào)度例程啟動(dòng)I/OISRDPC例程WRITE參數(shù)IRP標(biāo)題驅(qū)動(dòng)程序?qū)ο笤O(shè)備對(duì)象文件對(duì)象3. I/O管理器用驅(qū)

48、動(dòng)程序?qū)ο髞矶ㄎ籛RITE調(diào)度例程并調(diào)用它,同時(shí)將IRP傳給它圖6.31 單層驅(qū)動(dòng)程序中一個(gè)I/O請求涉及的數(shù)據(jù)結(jié)構(gòu)第六章 輸入/輸出系統(tǒng) 6.8.4 Windows 2000/XP的設(shè)備驅(qū)動(dòng)程序 1核心驅(qū)動(dòng)程序 核心驅(qū)動(dòng)程序主要分為如下幾種: (1) 文件系統(tǒng)驅(qū)動(dòng)程序:接收訪問文件的I/O請求,主要針對(duì)大容量的設(shè)備和網(wǎng)絡(luò)設(shè)備。 (2) PnP管理器和電源管理器設(shè)備驅(qū)動(dòng)程序:包括大容量存儲(chǔ)設(shè)備、協(xié)議棧和網(wǎng)絡(luò)適配器等。第六章 輸入/輸出系統(tǒng) (3) 為NT編寫的驅(qū)動(dòng)程序:可在Windows 2000/XP下工作,但一般不支持電源管理和PnP。 (4) WIN32子系統(tǒng)顯示和打印驅(qū)動(dòng)程序:把與設(shè)備

49、無關(guān)的圖形(GDI)請求轉(zhuǎn)換為設(shè)備專用請求。這些驅(qū)動(dòng)的集合稱為“核心態(tài)圖形驅(qū)動(dòng)程序”。 (5) WDM驅(qū)動(dòng)程序:包括對(duì)PnP、電源管理和WMI的支持。 第六章 輸入/輸出系統(tǒng) 2Windows 2000/XP支持的其他驅(qū)動(dòng)程序 Windows 2000/XP支持的其他驅(qū)動(dòng)程序主要有: (1) 虛擬設(shè)備驅(qū)動(dòng)程序:用于模擬16位的MS DOS的驅(qū)動(dòng)程序,它們捕獲MS DOS應(yīng)用程序?qū)Χ丝诘囊?,并將其轉(zhuǎn)化為本機(jī)WIN32 I/O函數(shù)。 (2) WIN32子系統(tǒng)的打印驅(qū)動(dòng)程序:把與設(shè)備無關(guān)的圖形(GDI)請求轉(zhuǎn)換為打印機(jī)相關(guān)命令,這些命令再發(fā)給核心模式的驅(qū)動(dòng)程序,例如,并口驅(qū)動(dòng)(Parprot.sy

50、s)、USB打印機(jī)驅(qū)動(dòng) (Usbprint.sys)等。第六章 輸入/輸出系統(tǒng) 3硬件支持的驅(qū)動(dòng)程序 硬件支持的驅(qū)動(dòng)程序主要有: (1) 類驅(qū)動(dòng)程序:該驅(qū)動(dòng)程序一般提供某類設(shè)備的基本支持接口,如磁盤、CD-ROM等,它通過端口驅(qū)動(dòng)程序提供的邏輯端口操作硬件。 第六章 輸入/輸出系統(tǒng) (2) 端口驅(qū)動(dòng)程序:用于提供某種接口(如串行接口、并行接口、USB接口等)的操作例程庫,它是小端口驅(qū)動(dòng)程序的一個(gè)功能包裝,通過這些接口,類驅(qū)動(dòng)程序可以直接訪問接口而不必去和連接它們的總線交互了。 (3) 小端口驅(qū)動(dòng)程序:該驅(qū)動(dòng)程序用于對(duì)實(shí)際硬件適配器的I/O請求映射,它負(fù)責(zé)最后驅(qū)動(dòng)硬件工作。 當(dāng)文件系統(tǒng)收到一個(gè)特定文件“寫”數(shù)據(jù)的請求時(shí),如何轉(zhuǎn)換為磁盤上的柱面/磁道/扇區(qū)?圖6.32便說明了數(shù)據(jù)“寫”到磁盤上的過程。第六章 輸入/輸出系統(tǒng) 5. 將相對(duì)地址轉(zhuǎn)換為物理 地址,并寫數(shù)據(jù)文 件 系 統(tǒng)驅(qū) 動(dòng) 程 序環(huán)境子系統(tǒng)或動(dòng)態(tài)鏈接庫I/O管理器文件系統(tǒng)驅(qū)動(dòng)程序用戶態(tài)4. 調(diào)用驅(qū)動(dòng)程序在相對(duì)地址處 寫數(shù)據(jù)3. 將文件的字節(jié)偏移量轉(zhuǎn)換為磁 盤上的字節(jié)偏移量,通過I/O管 理器調(diào)用下一個(gè)驅(qū)動(dòng)程序2. 在文件指定的偏移量處寫數(shù)據(jù)I/O系統(tǒng)服務(wù)核心態(tài)1. Nt WriteFile(file_handle, char_buffer)圖6.32

溫馨提示

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

評(píng)論

0/150

提交評(píng)論