操作系統(tǒng)第5章課件_第1頁
操作系統(tǒng)第5章課件_第2頁
操作系統(tǒng)第5章課件_第3頁
操作系統(tǒng)第5章課件_第4頁
操作系統(tǒng)第5章課件_第5頁
已閱讀5頁,還剩69頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、24 七月 2022第5章 設(shè)備管理 24 七月 2022目 錄5.1 I/O系統(tǒng)5.2 I/O控制方式5.3 緩沖管理5.4 I/O軟件5.5 設(shè)備分配5.6 磁盤存儲器的管理24 七月 2022教學(xué)目標(biāo)熟練掌握: I/O系統(tǒng)的硬件結(jié)構(gòu);軟件結(jié)構(gòu);I/O系統(tǒng)的控制方式;緩沖管理。掌握: 緩沖的分類;設(shè)備分配;磁盤調(diào)度算法。了解: 磁盤的性能。 24 七月 2022 操作系統(tǒng)的輸入/輸出管理(簡稱I/O管理,或稱設(shè)備管理)負(fù)責(zé)管理和控制I/O操作和I/O設(shè)備。 1. I/O設(shè)備類型 1)按所屬關(guān)系分類 系統(tǒng)設(shè)備、用戶設(shè)備 2)按I/O特性分類 字符設(shè)備、字符塊設(shè)備 3)按自愿分配方式分類 獨占

2、設(shè)備、共享設(shè)備、虛擬設(shè)備5.1 I/O系統(tǒng) 5.1.1 I/O設(shè)備24 七月 2022緩沖轉(zhuǎn)換器控制邏輯I/O設(shè)備數(shù)據(jù)信號線狀態(tài)信號線控制信號線至設(shè)備控制器信號數(shù)據(jù)設(shè)備與控制器間接口的信號線2. 設(shè)備與控制器之間接口的數(shù)據(jù)線24 七月 20225.1.2 設(shè)備控制器 接收和識別命令Vision 01標(biāo)志和報告設(shè)備的狀態(tài)Vision 03交換數(shù)據(jù)Vision 02地址識別Vision 04基本功能1. 設(shè)備控制器的基本功能24 七月 2022組成123CPU與設(shè)備控制器的接口設(shè)備控制器與設(shè)備的接口I/O邏輯2. 設(shè)備控制器的組成24 七月 20225.1.3 I/O通道1.I/O通道設(shè)備的引入

3、當(dāng)主機(jī)配置的外設(shè)很多時,僅有設(shè)備控制器是遠(yuǎn)遠(yuǎn)不夠的,CPU的負(fù)擔(dān)依然很重,于是在CPU和設(shè)備控制器之間又增設(shè)了通道,這樣可使一些原來由CPU處理的I/O任務(wù)轉(zhuǎn)由通道來承擔(dān),從而把CPU從繁雜的I/O任務(wù)中解脫出來,提高了計算機(jī)系統(tǒng)的I/O效率。2.通道類型 1)字節(jié)多路通道 2)數(shù)組選擇通道 3)數(shù)組多路通道 3.瓶頸問題24 七月 20225.2.1 程序I/O方式CPU發(fā)start命令等待執(zhí)行下一條指令開始數(shù)據(jù)傳送控制/狀態(tài)寄存器置為done(a)輸入是外圍設(shè)備接收到start命令控制/狀態(tài)寄存器置為done等待CPU的下一條指令準(zhǔn)備完畢?(b)輸出是做接收或發(fā)送數(shù)據(jù)準(zhǔn)備否5.2 I/O控

4、制方式 24 七月 2022使用中斷機(jī)制的系統(tǒng),輸入請求的執(zhí)行步驟如下:(1)應(yīng)用程序請求讀操作(2)設(shè)備驅(qū)動程序查詢設(shè)備狀態(tài)寄存器,確定設(shè)備的忙閑狀態(tài)。(3)驅(qū)動程序向設(shè)備控制器命令寄存器輸入命令,啟動設(shè)備。(4)當(dāng)驅(qū)動程序完成上述工作后,根據(jù)操作情況保存相應(yīng)信息,這些信息一開始是保存在設(shè)備表中,系統(tǒng)中的每臺設(shè)備都有對應(yīng)的表項,然后CPU就可以分配其他應(yīng)用程序使用。(5)設(shè)備完成了I/OCAOZUO ,中斷CPU,引起中斷處理程序的運行。(6)中斷處理程序確定哪個設(shè)備引起的中斷,然后轉(zhuǎn)移到該設(shè)備對應(yīng)的設(shè)備處理程序執(zhí)行。(7)設(shè)備處理程序重新從設(shè)備表中找到等待I/O操作的狀態(tài)信息。(8)設(shè)備處

5、理程序讀控制器數(shù)據(jù)寄存器的內(nèi)容,然后寫到用戶進(jìn)程的內(nèi)存區(qū)。5.2.2 中斷驅(qū)動I/O控制方式24 七月 20225.2.3 直接存儲器訪問I/O控制方式1DMA控制器的組成DMA控制器由三部分組成:主機(jī)與DMA控制器的接口;DMA控制器與塊設(shè)備的接口;I/O控制邏輯。圖示出了DMA控制器的組成。這里主要介紹主機(jī)與控制器之間的接口。 24 七月 2022DMA控制器的組成 DRMARDCCRI/O控制邏輯主機(jī)控制器接口控制器與塊設(shè)備接口count內(nèi)存CPU命令系統(tǒng)總線DMA控制器24 七月 20222.DMA工作過程DMA方式的工作流程圖 設(shè)置MAR和DC初值啟動DMA傳送命令挪用存儲器周期傳送

6、數(shù)據(jù)字存儲器地址增1字計數(shù)寄存器減1DC=0?請求中斷在繼續(xù)執(zhí)行用戶程序的同時,準(zhǔn)備又一次傳送否是24 七月 20221I/O通道控制方式的引入雖然DMA方式比起中斷方式來已經(jīng)顯著地減少了CPU的干預(yù),即已由以字(節(jié))為單位的干預(yù)減少到以數(shù)據(jù)塊為單位的干預(yù),但CPU每發(fā)出一條I/O指令,也只能去讀(或?qū)?一個連續(xù)的數(shù)據(jù)塊。而當(dāng)我們需要一次去讀多個數(shù)據(jù)塊且將它們分別傳送到不同的內(nèi)存區(qū)域,或者相反時,則須由CPU分別發(fā)出多條I/O指令及進(jìn)行多次中斷處理才能完成。 5.2.4 I/O通道控制方式24 七月 2022I/O通道控制方式24 七月 2022I/O通道方式是DMA方式的發(fā)展,它可進(jìn)一步減少

7、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ù)。 24 七月 20222通道程序通道是通過執(zhí)行通道程序,并與設(shè)備控制器共同實現(xiàn)對I/O設(shè)備的控制的。通道程序是由一系列通道指令(或稱為通道命令)所構(gòu)成的。通道指令與一般的機(jī)器指令

8、不同,在它的每條指令中都包含下列諸信息:(1) 操作碼。操作碼規(guī)定了指令所執(zhí)行的操作,如讀、寫、控制等操作。(2) 內(nèi)存地址。內(nèi)存地址標(biāo)明字符送入內(nèi)存(讀操作)和從內(nèi)存取出(寫操作)時的內(nèi)存首址。(3) 計數(shù)。該信息表示本條指令所要讀(或?qū)?數(shù)據(jù)的字節(jié)數(shù)。 (4) 通道程序結(jié)束位P。該位用于表示通道程序是否結(jié)束。P=1表示本條指令是通道程序的最后一條指令。(5) 記錄結(jié)束標(biāo)志R。R=0表示本通道指令與下一條指令所處理的數(shù)據(jù)是同屬于一個記錄;R=1表示這是處理某記錄的最后一條指令。 24 七月 20225.3 緩沖管理 引入緩沖的原因有如下幾點:(1)緩和CPU與I/O設(shè)備間速度不匹配的矛盾。

9、(2)協(xié)調(diào)邏輯記錄大小和物理記錄大小不一致的問題。 (3)減少對CPU的中斷次數(shù),放寬對中斷響應(yīng)時間的限制。5.3.1 緩沖的引入24 七月 20221單緩沖(Single Buffer)在單緩沖情況下,每當(dāng)用戶進(jìn)程發(fā)出一I/O請求時,操作系統(tǒng)便在主存中為之分配一緩沖區(qū),如圖所示。在塊設(shè)備輸入時,假定從磁盤把一塊數(shù)據(jù)輸入到緩沖區(qū)的時間為T,操作系統(tǒng)將該緩沖區(qū)中的數(shù)據(jù)傳送到用戶區(qū)的時間為M,而CPU對這一塊數(shù)據(jù)處理(計算)的時間為C。由于T和C是可以并行的(見書中圖5-11),當(dāng)TC時,系統(tǒng)對每一塊數(shù)據(jù)的處理時間為M+T,反之則為M+C,故可把系統(tǒng)對每一塊數(shù)據(jù)的處理時間表示為Max(C,T)+M

10、。 5.3.2 單緩沖和雙緩沖24 七月 2022單緩沖工作示意圖 24 七月 20222雙緩沖(Double Buffer)為了加快輸入和輸出速度,提高設(shè)備利用率,人們又引入了雙緩沖區(qū)機(jī)制,也稱為緩沖對換(Buffer Swapping)。在設(shè)備輸入時,先將數(shù)據(jù)送入第一緩沖區(qū),裝滿后便轉(zhuǎn)向第二緩沖區(qū)。此時操作系統(tǒng)可以從第一緩沖區(qū)中移出數(shù)據(jù),并送入用戶進(jìn)程。接著由CPU對數(shù)據(jù)進(jìn)行計算。在雙緩沖時,系統(tǒng)處理一塊數(shù)據(jù)的時間可以粗略地認(rèn)為是Max(C,T)。如果CT,則可使CPU不必等待設(shè)備輸入。對于字符設(shè)備,若采用行輸入方式,則采用雙緩沖通常能消除用戶的等待時間,即用戶在輸入完第一行之后,在CPU

11、執(zhí)行第一行中的命令時,用戶可繼續(xù)向第二緩沖區(qū)輸入下一行數(shù)據(jù)。 24 七月 2022循環(huán)緩沖主要由以下幾部分組成: (1) 多個緩沖區(qū)。在循環(huán)緩沖中包括多個緩沖區(qū),其每個緩沖區(qū)的大小相同。作為輸入的多緩沖區(qū)可分為三種類型:用于裝輸入數(shù)據(jù)的空緩沖區(qū)R、已裝滿數(shù)據(jù)的緩沖區(qū)G以及計算進(jìn)程正在使用的現(xiàn)行工作緩沖區(qū)C。 (2) 多個指針。作為輸入的緩沖區(qū)可設(shè)置三個指針:用于指示計算進(jìn)程下一個可用緩沖區(qū)G的指針Nextg、指示輸入進(jìn)程下次可用的空緩沖區(qū)R的指針Nexti,以及用于指示計算進(jìn)程正在使用的緩沖區(qū)C的指針Current。 5.3.3 循環(huán)緩沖24 七月 20221緩沖池的組成對于既可用于輸入又可用

12、于輸出的公用緩沖池,其中至少應(yīng)含有以下三種類型的緩沖區(qū): 空(閑)緩沖區(qū); 裝滿輸入數(shù)據(jù)的緩沖區(qū); 裝滿輸出數(shù)據(jù)的緩沖區(qū)。 5.3.4 緩沖池24 七月 20222緩沖區(qū)的工作方式緩沖區(qū)可以工作在收容輸入、提取輸入、收容輸出和提取輸出四種工作方式下,如圖所示。 緩沖區(qū)的工作方式24 七月 2022(1) 收容輸入。在輸入進(jìn)程需要輸入數(shù)據(jù)時,便調(diào)用Getbuf(emq)過程,從空緩沖隊列emq的隊首摘下一空緩沖區(qū),把它作為收容輸入工作緩沖區(qū)hin。然后,把數(shù)據(jù)輸入其中,裝滿后再調(diào)用Putbuf(inq,hin)過程,將該緩沖區(qū)掛在輸入隊列inq上。(2) 提取輸入。當(dāng)計算進(jìn)程需要輸入數(shù)據(jù)時,調(diào)用

13、Getbuf(inq)過程,從輸入隊列inq的隊首取得一個緩沖區(qū),作為提取輸入工作緩沖區(qū)(sin),計算進(jìn)程從中提取數(shù)據(jù)。計算進(jìn)程用完該數(shù)據(jù)后,再調(diào)用Putbuf(emq,sin)過程,將該緩沖區(qū)掛到空緩沖隊列emq上。 24 七月 2022(3) 收容輸出。當(dāng)計算進(jìn)程需要輸出時,調(diào)用Getbuf(emq)過程從空緩沖隊列emq的隊首取得一個空緩沖區(qū),作為收容輸出工作緩沖區(qū)hout。當(dāng)其中裝滿輸出數(shù)據(jù)后,又調(diào)用Putbuf(outq,hout)過程,將該緩沖區(qū)掛在outq末尾。(4) 提取輸出。由輸出進(jìn)程調(diào)用Getbuf(outq)過程,從輸出隊列的隊首取得一裝滿輸出數(shù)據(jù)的緩沖區(qū),作為提取輸出

14、工作緩沖區(qū)sout。在數(shù)據(jù)提取完后,再調(diào)用Putbuf(emq,sout)過程,將該緩沖區(qū)掛在空緩沖隊列末尾。 24 七月 20225.4 I/O 軟件 用戶必須掌握I/O 系統(tǒng)的原理,對接口和控制器及設(shè)備的物理特性要有深入了解,這就使計算機(jī)的推廣應(yīng)用受到很大限制。所以,設(shè)法消除或屏蔽設(shè)備硬件內(nèi)部的低級處理過程,為用戶提供一個簡便、易用、抽象的邏輯設(shè)備接口,保證用戶安全、方便地使用各類設(shè)備,也是I/O軟件設(shè)計的一個重要原則。 5.4.1 I/O軟件的設(shè)計目標(biāo)和原則24 七月 2022設(shè)備無關(guān)性Vision 01錯誤處理Vision 03同步/異步傳輸Vision 02設(shè)備的分配和釋放Visio

15、n 04目標(biāo)具體而言,I/O軟件應(yīng)達(dá)到下面的幾個目標(biāo):24 七月 2022在層次式結(jié)構(gòu)的I/O軟件中,只要層次間的接口不變,對每個層次中的軟件進(jìn)行的修改都不會引起其下層或高層代碼的變更,僅最低層才會涉及到硬件的具體特性。通常把I/O 軟件組織成四個層次,各層次及其功能如下所述:(1) 用戶層軟件:實現(xiàn)與用戶交互的接口,用戶可直接調(diào)用在用戶層提供的、與I/O操作有關(guān)的庫函數(shù),對設(shè)備進(jìn)行操作。 24 七月 2022(2) 設(shè)備獨立性軟件:負(fù)責(zé)實現(xiàn)與設(shè)備驅(qū)動器的統(tǒng)一接口、設(shè)備命名、設(shè)備的保護(hù)以及設(shè)備的分配與釋放等,同時為設(shè)備管理和數(shù)據(jù)傳送提供必要的存儲空間。(3) 設(shè)備驅(qū)動程序:與硬件直接相關(guān),負(fù)責(zé)

16、具體實現(xiàn)系統(tǒng)對設(shè)備發(fā)出的操作指令,驅(qū)動I/O設(shè)備工作的驅(qū)動程序。(4) 中斷處理程序:用于保存被中斷進(jìn)程的CPU環(huán)境,轉(zhuǎn)入相應(yīng)的中斷處理程序進(jìn)行處理,處理完后再恢復(fù)被中斷進(jìn)程的現(xiàn)場后返回到被中斷進(jìn)程。 24 七月 2022中斷是指設(shè)備發(fā)送給CPU的硬件信號。中斷將通知CPU需要注意設(shè)備,并且CPU應(yīng)該停止任何當(dāng)前活動并對設(shè)備進(jìn)行響應(yīng)。如果CPU未執(zhí)行優(yōu)先級比中斷優(yōu)先級高的任務(wù),則CPU會暫停當(dāng)前線程。然后,CPU會調(diào)用發(fā)送中斷信號的設(shè)備的中斷處理程序。中斷處理程序的工作時服務(wù)設(shè)備并防止此設(shè)備中斷。中斷處理程序返回后,CPU便會恢復(fù)出現(xiàn)中斷之前所執(zhí)行的工作。5.4.2 中斷處理程序24 七月 2

17、02212345發(fā)出I/O命令。接收由設(shè)備獨立性軟件發(fā)來的命令和參數(shù),并將命令中的抽象要求轉(zhuǎn)換為具體要求。檢查用戶I/O請求的合理性。響應(yīng)中斷請求根據(jù)用戶的I/O請求,自動地構(gòu)成通道程序。1.設(shè)備驅(qū)動程序的功能5.4.3 設(shè)備驅(qū)動程序24 七月 2022方式123為每一類設(shè)備設(shè)置一個進(jìn)程,專門用于執(zhí)行這類設(shè)備的I/O操作。在整個系統(tǒng)中設(shè)置一個I/O進(jìn)程,專門用于執(zhí)行系統(tǒng)中所有各類設(shè)備的I/O操作。不設(shè)置專門的設(shè)備處理進(jìn)程,而只為各類設(shè)備設(shè)置響應(yīng)的設(shè)備處理程序,共用戶進(jìn)程或系統(tǒng)進(jìn)程調(diào)用。2.設(shè)備處理方式24 七月 20223.設(shè)備驅(qū)動程序的特點設(shè)備驅(qū)動程序?qū)儆诘图壍南到y(tǒng)例程,它與一般的應(yīng)用程序及

18、系統(tǒng)程序之間有下述明顯差異:(1) 驅(qū)動程序主要是指在請求I/O的進(jìn)程與設(shè)備控制器之間的一個通信和轉(zhuǎn)換程序。它將進(jìn)程的I/O請求經(jīng)過轉(zhuǎn)換后,傳送給控制器;又把控制器中所記錄的設(shè)備狀態(tài)和I/O操作完成情況及時地反映給請求I/O的進(jìn)程。 24 七月 2022(2) 驅(qū)動程序與設(shè)備控制器和I/O設(shè)備的硬件特性緊密相關(guān),因而對不同類型的設(shè)備應(yīng)配置不同的驅(qū)動程序。例如,可以為相同的多個終端設(shè)置一個終端驅(qū)動程序,但有時即使是同一類型的設(shè)備,由于其生產(chǎn)廠家不同,它們也可能并不完全兼容,此時也須為它們配置不同的驅(qū)動程序。(3) 驅(qū)動程序與I/O設(shè)備所采用的I/O控制方式緊密相關(guān)。常用的I/O控制方式是中斷驅(qū)動

19、和DMA方式,這兩種方式的驅(qū)動程序明顯不同,因為后者應(yīng)按數(shù)組方式啟動設(shè)備及進(jìn)行中斷處理。 24 七月 2022(4) 由于驅(qū)動程序與硬件緊密相關(guān),因而其中的一部分必須用匯編語言書寫。目前有很多驅(qū)動程序的基本部分,已經(jīng)固化在ROM中。(5) 驅(qū)動程序應(yīng)允許可重入。一個正在運行的驅(qū)動程序常會在一次調(diào)用完成前被再次調(diào)用。例如,網(wǎng)絡(luò)驅(qū)動程序正在處理一個到來的數(shù)據(jù)包時,另一個數(shù)據(jù)包可能到達(dá)。(6) 驅(qū)動程序不允許系統(tǒng)調(diào)用。但是為了滿足其與內(nèi)核其它部分的交互,可以允許對某些內(nèi)核過程的調(diào)用,如通過調(diào)用內(nèi)核過程來分配和釋放內(nèi)存頁面作為緩沖區(qū),以及調(diào)用其它過程來管理MMU定時器、DMA控制器、中斷控制器等。 2

20、4 七月 20221設(shè)備獨立性的概念為了提高OS的可適應(yīng)性和可擴(kuò)展性,在現(xiàn)代OS中都毫無例外地實現(xiàn)了設(shè)備獨立性(Device Independence),也稱為設(shè)備無關(guān)性。其基本含義是: 用戶 編寫的應(yīng)用程序獨立于具體使用的物理設(shè)備,及時設(shè)備更換了,應(yīng)用程序也不用改變。在實現(xiàn)了設(shè)備獨立性的功能后,可帶來以下兩方面的好處。 1)設(shè)備分配更加靈活 2)可以實現(xiàn)I/O重定向5.4.4 設(shè)備獨立性軟件24 七月 2022設(shè)備獨立性軟件的功能包括 (1) 執(zhí)行所有設(shè)備的公有操作。這些公有操作包括: 對獨立設(shè)備的分配與回收; 將邏輯設(shè)備名映射為物理設(shè)備名,進(jìn)一步可以找到相應(yīng)物理設(shè)備的驅(qū)動程序; 對設(shè)備進(jìn)行

21、保護(hù),禁止用戶直接訪問設(shè)備; 緩沖管理,即對字符設(shè)備和塊設(shè)備的緩沖區(qū)進(jìn)行有效的管理,以提高I/O的效率; 差錯控制,由于在I/O操作中的絕大多數(shù)錯誤都與設(shè)備無關(guān),故主要由設(shè)備驅(qū)動程序處理,而設(shè)備獨立性軟件只處理那些設(shè)備驅(qū)動程序無法處理的錯誤; 2.與設(shè)備無關(guān)的軟件24 七月 2022 提供獨立于設(shè)備的邏輯塊,不同類型的設(shè)備信息交換單位是不同的,讀取和傳輸速率也各不相同,如字符型設(shè)備以單個字符為單位,塊設(shè)備是以一個數(shù)據(jù)塊為單位,即使同一類型的設(shè)備,其信息交換單位大小也是有差異的,如不同磁盤由于扇區(qū)大小的不同,可能造成數(shù)據(jù)塊大小的不一致,因此設(shè)備獨立性軟件應(yīng)負(fù)責(zé)隱藏這些差異,對邏輯設(shè)備使用并向高層

22、軟件提供大小統(tǒng)一的邏輯數(shù)據(jù)塊。 24 七月 2022(2)向用戶層(或文件層)軟件提供統(tǒng)一接口。無論何種設(shè)備,它們向用戶所提供的接口應(yīng)該是相同的。例如,對各種設(shè)備的讀操作,在應(yīng)用程序中都使用read;而對各種設(shè)備的寫操作,也都使用write。 (3)設(shè)備維護(hù)。操作系統(tǒng)影響各個用戶賦予不同的設(shè)備訪問權(quán)限,以實現(xiàn)對設(shè)備的保護(hù)。24 七月 2022一般而言,大部分的I/O軟件都在操作系統(tǒng)內(nèi)部,但仍有一小部分在用戶層,包括與用戶程序鏈接在一起的庫函數(shù),以及完全運行于內(nèi)核之外的一些程序。用戶層軟件必須通過一組系統(tǒng)調(diào)用來取得操作系統(tǒng)服務(wù)。在現(xiàn)代的高級語言以及C語言中,通常提供了與各系統(tǒng)調(diào)用一一對應(yīng)的庫函數(shù)

23、,用戶程序通過調(diào)用對應(yīng)的庫函數(shù)使用系統(tǒng)調(diào)用。這些庫函數(shù)與調(diào)用程序連接在一起,包含在運行時裝入在內(nèi)存的二進(jìn)制程序中,如C語言中的庫函數(shù)write等,顯然這些庫函數(shù)的集合也是I/O系統(tǒng)的組成部分。但在許多現(xiàn)代操作系統(tǒng)中,系統(tǒng)調(diào)用本身已經(jīng)采用C語言編寫,并以函數(shù)形式提供,所以在使用C語言編寫的用戶程序中,可以直接使用這些系統(tǒng)調(diào)用。 5.4.5 用戶層的I/O軟件24 七月 20225.5 設(shè)備分配 1設(shè)備控制表(DCT)系統(tǒng)為每一個設(shè)備都配置了一張設(shè)備控制表,用于記錄本設(shè)備的情況,如圖所示。 5.5.1 設(shè)備分配中的數(shù)據(jù)結(jié)構(gòu)24 七月 2022設(shè)備控制表 24 七月 2022設(shè)備控制表中,除了有用于

24、指示設(shè)備類型的字段type和設(shè)備標(biāo)識字段deviceid外,還應(yīng)含有下列字段: (1) 設(shè)備狀態(tài)。當(dāng)設(shè)備自身正處于使用狀態(tài)時,應(yīng)將設(shè)備的忙/閑標(biāo)志置“1”。若與該設(shè)備相連接的控制器或通道正忙,也不能啟動該設(shè)備,此時則應(yīng)將設(shè)備的等待標(biāo)志置“1”。 (2) 指向控制器表的指針。該指針指向該設(shè)備所連接的控制器的控制表。在設(shè)備到主機(jī)之間具有多條通路的情況下,一個設(shè)備將與多個控制器相連接。此時,在DCT中還應(yīng)設(shè)置多個控制器表指針。24 七月 2022(3) 重復(fù)執(zhí)行次數(shù)或時間。由于外部設(shè)備在傳送數(shù)據(jù)時,較易發(fā)生數(shù)據(jù)傳送錯誤,因而在許多系統(tǒng)中,如果發(fā)生傳送錯誤,并不立即認(rèn)為傳送失敗,而是令它重新傳送,并由

25、系統(tǒng)規(guī)定設(shè)備在工作中發(fā)生錯誤時應(yīng)重復(fù)執(zhí)行的次數(shù)。在重復(fù)執(zhí)行時,若能恢復(fù)正常傳送,則仍認(rèn)為傳送成功。僅當(dāng)屢次失敗,致使重復(fù)執(zhí)行次數(shù)達(dá)到規(guī)定值而傳送仍不成功時,才認(rèn)為傳送失敗。 (4)設(shè)備隊列隊首指針。凡因請求本設(shè)備而未得到滿足的進(jìn)程,其PCB都應(yīng)按照一定的策略排成一個隊列,稱該隊列為設(shè)備請求隊列或簡稱設(shè)備隊列。其隊首指針指向隊首PCB。在有的系統(tǒng)中還設(shè)置了隊尾指針。24 七月 20222控制器控制表、通道控制表和系統(tǒng)設(shè)備表(1) 控制器控制表(COCT)。系統(tǒng)為每一個控制器都設(shè)置了一張用于記錄本控制器情況的控制器控制表,如圖a所示。(2) 通道控制表(CHCT)。每個通道都配有一張通道控制表,如

26、圖b所示。 (3) 系統(tǒng)設(shè)備表(SDT)。這是系統(tǒng)范圍的數(shù)據(jù)結(jié)構(gòu),其中記錄了系統(tǒng)中全部設(shè)備的情況。每個設(shè)備占一個表目,其中包括有設(shè)備類型、設(shè)備標(biāo)識符、設(shè)備控制表及設(shè)備驅(qū)動程序的入口等項,如圖c所示。 24 七月 2022COCT、CHCT和SDT 24 七月 2022為了使系統(tǒng)有條不紊地工作,系統(tǒng)在分配設(shè)備時,應(yīng)考慮這樣幾個因素:因素123設(shè)備的固有屬性設(shè)備分配算法設(shè)備分配時的安全性5.5.2 設(shè)備分配時應(yīng)考慮的因素24 七月 20221設(shè)備的固有屬性在分配設(shè)備時,首先應(yīng)考慮與設(shè)備分配有關(guān)的設(shè)備屬性。設(shè)備的固有屬性可分成三種: 第一種是獨占性,是指這種設(shè)備在一段時間內(nèi)只允許一個進(jìn)程獨占,此即第

27、二章所說的“臨界資源”; 第二種是共享性,指這種設(shè)備允許多個進(jìn)程同時共享; 第三種是可虛擬設(shè)備,指設(shè)備本身雖是獨占設(shè)備,但經(jīng)過某種技術(shù)處理,可以把它改造成虛擬設(shè)備。對上述的獨占、 共享、可虛擬三種設(shè)備應(yīng)采取不同的分配策略。 24 七月 2022(1) 獨占設(shè)備。對于獨占設(shè)備,應(yīng)采用獨享分配策略,即將一個設(shè)備分配給某進(jìn)程后,便由該進(jìn)程獨占,直至該進(jìn)程完成或釋放該設(shè)備,然后,系統(tǒng)才能再將該設(shè)備分配給其他進(jìn)程使用。這種分配策略的缺點是,設(shè)備得不到充分利用,而且還可能引起死鎖。(2) 共享設(shè)備。對于共享設(shè)備,可同時分配給多個進(jìn)程使用,此時須注意對這些進(jìn)程訪問該設(shè)備的先后次序進(jìn)行合理的調(diào)度。(3) 可虛

28、擬設(shè)備。由于可虛擬設(shè)備是指一臺物理設(shè)備在采用虛擬技術(shù)后,可變成多臺邏輯上的所謂虛擬設(shè)備,因而說,一臺可虛擬設(shè)備是可共享的設(shè)備,可以將它同時分配給多個進(jìn)程使用,并對這些訪問該(物理)設(shè)備的先后次序進(jìn)行控制。 24 七月 2022因素123先來先服務(wù)算法,即先申請的先被滿足。優(yōu)先級算法,即優(yōu)先級高的I/O請求先被滿足。按時間片輪轉(zhuǎn)分配。2設(shè)備分配算法對設(shè)備進(jìn)行分配的算法,一般多采用以下幾種:24 七月 20223設(shè)備分配中的安全性安全性控制過稱如下: (1)系統(tǒng)需要根據(jù)用戶提出的邏輯設(shè)備查看PCB的LUT,獲得該類設(shè)備的物理標(biāo)志和訪問方式。 (2)判斷此次訪問是否與規(guī)定的方式一致。24 七月 20

29、221基本的設(shè)備分配程序1) 分配設(shè)備首先根據(jù)I/O請求中的物理設(shè)備名,查找系統(tǒng)設(shè)備表(SDT),從中找出該設(shè)備的DCT,再根據(jù)DCT中的設(shè)備狀態(tài)字段,可知該設(shè)備是否正忙。若忙,便將請求I/O進(jìn)程的PCB掛在設(shè)備隊列上;否則,便按照一定的算法來計算本次設(shè)備分配的安全性。如果不會導(dǎo)致系統(tǒng)進(jìn)入不安全狀態(tài),便將設(shè)備分配給請求進(jìn)程;否則,仍將其PCB插入設(shè)備等待隊列。 5.5.3 獨占設(shè)備的分配程序24 七月 20222) 分配控制器在系統(tǒng)把設(shè)備分配給請求I/O的進(jìn)程后,再到其DCT中找出與該設(shè)備連接的控制器的COCT,從COCT的狀態(tài)字段中可知該控制器是否忙碌。若忙,便將請求I/O進(jìn)程的PCB掛在該

30、控制器的等待隊列上;否則,便將該控制器分配給進(jìn)程。3) 分配通道在該COCT中又可找到與該控制器連接的通道的CHCT,再根據(jù)CHCT內(nèi)的狀態(tài)信息,可知該通道是否忙碌。若忙,便將請求I/O的進(jìn)程掛在該通道的等待隊列上;否則,將該通道分配給進(jìn)程。只有在設(shè)備、 控制器和通道三者都分配成功時,這次的設(shè)備分配才算成功。然后,便可啟動該I/O設(shè)備進(jìn)行數(shù)據(jù)傳送。 24 七月 20222設(shè)備分配程序的改進(jìn)仔細(xì)研究上述基本的設(shè)備分配程序后可以發(fā)現(xiàn): 進(jìn)程是以物理設(shè)備名來提出I/O請求的; 采用的是單通路的I/O系統(tǒng)結(jié)構(gòu),容易產(chǎn)生“瓶頸”現(xiàn)象。為此,應(yīng)從以下兩方面對基本的設(shè)備分配程序加以改進(jìn),以使獨占設(shè)備的分配程

31、序具有更強(qiáng)的靈活性,并提高分配的成功率。 24 七月 20221) 增加設(shè)備的獨立性為了獲得設(shè)備的獨立性,進(jìn)程應(yīng)使用邏輯設(shè)備名請求I/O。這樣,系統(tǒng)首先從SDT中找出第一個該類設(shè)備的DCT。若該設(shè)備忙,又查找第二個該類設(shè)備的DCT,僅當(dāng)所有該類設(shè)備都忙時,才把進(jìn)程掛在該類設(shè)備的等待隊列上;而只要有一個該類設(shè)備可用,系統(tǒng)便進(jìn)一步計算分配該設(shè)備的安全性。 24 七月 20222) 考慮多通路情況為了防止在I/O系統(tǒng)中出現(xiàn)“瓶頸”現(xiàn)象,通常都采用多通路的I/O系統(tǒng)結(jié)構(gòu)。此時對控制器和通道的分配同樣要經(jīng)過幾次反復(fù),即若設(shè)備(控制器)所連接的第一個控制器(通道)忙時,應(yīng)查看其所連接的第二個控制器(通道)

32、,僅當(dāng)所有的控制器(通道)都忙時,此次的控制器(通道)分配才算失敗,才把進(jìn)程掛在控制器(通道)的等待隊列上。而只要有一個控制器(通道)可用,系統(tǒng)便可將它分配給進(jìn)程。 24 七月 20221SPOOLing系統(tǒng)的組成SPOOLing技術(shù)是對脫機(jī)輸入、輸出系統(tǒng)的模擬。相應(yīng)地,SPOOLing系統(tǒng)必須建立在具有多道程序功能的操作系統(tǒng)上,而且還應(yīng)有高速隨機(jī)外存的支持,這通常是采用磁盤存儲技術(shù)。SPOOLing系統(tǒng)主要有以下三部分:(1) 輸入井和輸出井。這是在磁盤上開辟的兩個大存儲空間。輸入井是模擬脫機(jī)輸入時的磁盤設(shè)備,用于暫存I/O設(shè)備輸入的數(shù)據(jù);輸出井是模擬脫機(jī)輸出時的磁盤,用于暫存用戶程序的輸出

33、數(shù)據(jù)。 5.5.4 SPOOLing技術(shù)24 七月 2022(2) 輸入緩沖區(qū)和輸出緩沖區(qū)。為了緩和CPU和磁盤之間速度不匹配的矛盾,在內(nèi)存中要開辟兩個緩沖區(qū):輸入緩沖區(qū)和輸出緩沖區(qū)。輸入緩沖區(qū)用于暫存由輸入設(shè)備送來的數(shù)據(jù),以后再傳送到輸入井。輸出緩沖區(qū)用于暫存從輸出井送來的數(shù)據(jù),以后再傳送給輸出設(shè)備。(3) 輸入進(jìn)程SPi和輸出進(jìn)程SPo。這里利用兩個進(jìn)程來模擬脫機(jī)I/O時的外圍控制機(jī)。其中,進(jìn)程SPi模擬脫機(jī)輸入時的外圍控制機(jī),將用戶要求的數(shù)據(jù)從輸入機(jī)通過輸入緩沖區(qū)再送到輸入井,當(dāng)CPU需要輸入數(shù)據(jù)時,直接從輸入井讀入內(nèi)存;進(jìn)程SPo模擬脫機(jī)輸出時的外圍控制機(jī),把用戶要求輸出的數(shù)據(jù)先從內(nèi)存

34、送到輸出井,待輸出設(shè)備空閑時,再將輸出井中的數(shù)據(jù)經(jīng)過輸出緩沖區(qū)送到輸出設(shè)備上。 24 七月 2022SPOOLing系統(tǒng)的組成 24 七月 20222共享打印機(jī)打印機(jī)是經(jīng)常要用到的輸出設(shè)備,屬于獨占設(shè)備。利用SPOOLing技術(shù),可將之改造為一臺可供多個用戶共享的設(shè)備,從而提高設(shè)備的利用率,也方便了用戶。共享打印機(jī)技術(shù)已被廣泛地用于多用戶系統(tǒng)和局域網(wǎng)絡(luò)中。當(dāng)用戶進(jìn)程請求打印輸出時,SPOOLing系統(tǒng)同意為它打印輸出,但并不真正立即把打印機(jī)分配給該用戶進(jìn)程,而只為它做兩件事: 由輸出進(jìn)程在輸出井中為之申請一個空閑磁盤塊區(qū),并將要打印的數(shù)據(jù)送入其中; 輸出進(jìn)程再為用戶進(jìn)程申請一張空白的用戶請求打

35、印表,并將用戶的打印要求填入其中,再將該表掛到請求打印隊列上。如果還有進(jìn)程要求打印輸出,系統(tǒng)仍可接受該請求,也同樣為該進(jìn)程做上述兩件事。 24 七月 2022如果打印機(jī)空閑,輸出進(jìn)程將從請求打印隊列的隊首取出一張請求打印表,根據(jù)表中的要求將要打印的數(shù)據(jù),從輸出井傳送到內(nèi)存緩沖區(qū),再由打印機(jī)進(jìn)行打印。打印完后,輸出進(jìn)程再查看請求打印隊列中是否還有等待打印的請求表。若有,又取出隊列中的第一張表,并根據(jù)其中的要求進(jìn)行打印,如此下去,直至請求打印隊列為空,輸出進(jìn)程才將自己阻塞起來。僅當(dāng)下次再有打印請求時,輸出進(jìn)程才被喚醒。 24 七月 20223SPOOLing系統(tǒng)的特點SPOOLing系統(tǒng)具有如下主

36、要特點:(1) 提高了I/O的速度。從對低速I/O設(shè)備進(jìn)行的I/O操作,演變?yōu)閷斎刖蜉敵鼍袛?shù)據(jù)的存取,如同脫機(jī)輸入輸出一樣,提高了I/O速度,緩和了CPU與低速I/O設(shè)備之間速度不匹配的矛盾。(2) 將獨占設(shè)備改造為共享設(shè)備。因為在SPOOLing系統(tǒng)中,實際上并沒為任何進(jìn)程分配設(shè)備,而只是在輸入井或輸出井中為進(jìn)程分配一個存儲區(qū)和建立一張I/O請求表。這樣,便把獨占設(shè)備改造為共享設(shè)備。(3) 實現(xiàn)了虛擬設(shè)備功能。多個進(jìn)程在同時使用一臺獨占設(shè)備,而對于每一個進(jìn)程而言,他們都會認(rèn)為自己是獨占了一個設(shè)備。當(dāng)然,該設(shè)備只是邏輯上的設(shè)備。24 七月 20225.6 磁盤存儲器的管理 磁盤設(shè)備可包括

37、一或多個物理盤片,每個磁盤片分一個或兩個存儲面(surface),見圖a,每個磁盤面被組織成若干個同心環(huán),這種環(huán)稱為磁道(track),各磁道之間留有必要的間隙。為使處理簡單起見,在每條磁道上可存儲相同數(shù)目的二進(jìn)制位。這樣,磁盤密度即每英寸中所存儲的位數(shù),顯然是內(nèi)層磁道的密度較外層磁道的密度高。每條磁道又被邏輯上劃分成若干個扇區(qū)(sectors),軟盤大約為832個扇區(qū),硬盤則可多達(dá)數(shù)百個,圖 b顯示了一個磁道分成8個扇區(qū)。一個扇區(qū)稱為一個盤塊(或數(shù)據(jù)塊),常常叫做磁盤扇區(qū)。各扇區(qū)之間保留一定的間隙。 5.6.1 磁盤性能簡述24 七月 2022磁盤的結(jié)構(gòu)和布局 ab24 七月 20225.6

38、.2 磁盤調(diào)度 1先來先服務(wù)(FCFS)這是一種最簡單的磁盤調(diào)度算法。它根據(jù)進(jìn)程請求訪問磁盤的先后次序進(jìn)行調(diào)度。此算法的優(yōu)點是公平、簡單,且每個進(jìn)程的請求都能依次地得到處理,不會出現(xiàn)某一進(jìn)程的請求長期得不到滿足的情況。但此算法由于未對尋道進(jìn)行優(yōu)化,致使平均尋道時間可能較長。2最短尋道時間優(yōu)先(SSTF)該算法選擇這樣的進(jìn)程:其要求訪問的磁道與當(dāng)前磁頭所在的磁道距離最近,以使每次的尋道時間最短。但這種算法不能保證平均尋道時間最短。24 七月 20223掃描(SCAN)算法SCAN算法所考慮的下一個訪問對象,應(yīng)是其欲訪問的磁道既在當(dāng)前磁道之外,又是距離最近的。這樣自里向外地訪問,直至再無更外的磁道

39、需要訪問時,才將磁臂換向為自外向里移動。這時,同樣也是每次選擇這樣的進(jìn)程來調(diào)度,即要訪問的磁道在當(dāng)前位置內(nèi)距離最近者,這樣,磁頭又逐步地從外向里移動,直至再無更里面的磁道要訪問,從而避免了出現(xiàn)“饑餓”現(xiàn)象。由于在這種算法中磁頭移動的規(guī)律頗似電梯的運行,因而又常稱之為電梯調(diào)度算法。4循環(huán)掃描(CSCAN)算法CSCAN算法規(guī)定磁頭單向移動,例如,只是自里向外移動,當(dāng)磁頭移到最外的磁道并訪問后,磁頭立即返回到最里的欲訪問的磁道,亦即將最小磁道號緊接著最大磁道號構(gòu)成循環(huán),進(jìn)行循環(huán)掃描。24 七月 20225.6.3 磁盤高速緩存1磁盤高速緩存的形式 高速緩存在內(nèi)存中可分成兩種形式。 第一種是在內(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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論