管理學(xué)第六章 湯小丹,計(jì)算機(jī)操作系統(tǒng),官方通用課件,第四版,計(jì)算機(jī),操作系統(tǒng), 通用課件,
《管理學(xué)第六章 湯小丹,計(jì)算機(jī)操作系統(tǒng),官方通用課件,第四版,計(jì)算機(jī),操作系統(tǒng), 通用課件,》由會(huì)員分享,可在線閱讀,更多相關(guān)《管理學(xué)第六章 湯小丹,計(jì)算機(jī)操作系統(tǒng),官方通用課件,第四版,計(jì)算機(jī),操作系統(tǒng), 通用課件,(129頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、1 1第六章 輸入輸出系統(tǒng)第六章第六章 輸入輸出系統(tǒng)輸入輸出系統(tǒng)6.1 I/O系統(tǒng)的功能、模型和接口6.2 I/O設(shè)備和設(shè)備控制器6.3中斷機(jī)構(gòu)和中斷處理程序6.4 設(shè)備驅(qū)動(dòng)程序6.5 與設(shè)備無(wú)關(guān)的I/O軟件6.6 用戶層的I/O軟件6.7 緩沖區(qū)管理6.8 磁盤(pán)存儲(chǔ)器的性能和調(diào)度習(xí)題2 2第六章 輸入輸出系統(tǒng)6.1 I/O系統(tǒng)的功能、模型和接口I/O系統(tǒng)管理的主要對(duì)象是I/O設(shè)備和相應(yīng)的設(shè)備控制器。其最主要的任務(wù)是,完成用戶提出的I/O請(qǐng)求,提高I/O速率,以及提高設(shè)備的利用率,并能為更高層的進(jìn)程方便地使用這些設(shè)備提供手段。3 3第六章 輸入輸出系統(tǒng)6.1.1 I/O系統(tǒng)的基本功能1.隱藏物
2、理設(shè)備的細(xì)節(jié)I/O設(shè)備的類(lèi)型非常多,且彼此間在多方面都有差異,諸如它們接收和產(chǎn)生數(shù)據(jù)的速度,傳輸方向、粒度、數(shù)據(jù)的表示形式及可靠性等方面。4 4第六章 輸入輸出系統(tǒng)2.與設(shè)備的無(wú)關(guān)性隱藏物理設(shè)備的細(xì)節(jié),在早期的OS中就已實(shí)現(xiàn),它可方便用戶對(duì)設(shè)備的使用。與設(shè)備的無(wú)關(guān)性是在較晚時(shí)才實(shí)現(xiàn)的,這是在隱藏物理設(shè)備細(xì)節(jié)的基礎(chǔ)上實(shí)現(xiàn)的。5 5第六章 輸入輸出系統(tǒng)3.提高處理機(jī)和I/O設(shè)備的利用率在一般的系統(tǒng)中,許多I/O設(shè)備間是相互獨(dú)立的,能夠并行操作,在處理機(jī)與設(shè)備之間也能并行操作。因此,I/O系統(tǒng)的第三個(gè)功能是要盡可能地讓處理機(jī)和I/O設(shè)備并行操作,以提高它們的利用率。為此,一方面要求處理機(jī)能快速響應(yīng)用
3、戶的I/O請(qǐng)求,使I/O設(shè)備盡快地運(yùn)行起來(lái);另一方面也應(yīng)盡量減少在每個(gè)I/O設(shè)備運(yùn)行時(shí)處理機(jī)的干預(yù)時(shí)間。6 6第六章 輸入輸出系統(tǒng)4.對(duì)I/O設(shè)備進(jìn)行控制對(duì)I/O設(shè)備進(jìn)行控制是驅(qū)動(dòng)程序的功能。目前對(duì)I/O設(shè)備有四種控制方式:采用輪詢(xún)的可編程I/O方式;采用中斷的可編程I/O方式;直接存儲(chǔ)器訪問(wèn)方式;I/O通道方式。7 7第六章 輸入輸出系統(tǒng)5.確保對(duì)設(shè)備的正確共享從設(shè)備的共享屬性上,可將系統(tǒng)中的設(shè)備分為如下兩類(lèi):(1)獨(dú)占設(shè)備,進(jìn)程應(yīng)互斥地訪問(wèn)這類(lèi)設(shè)備,即系統(tǒng)一旦把這類(lèi)設(shè)備分配給了某進(jìn)程后,便由該進(jìn)程獨(dú)占,直至用完釋放。典型的獨(dú)占設(shè)備有打印機(jī)、磁帶機(jī)等。系統(tǒng)在對(duì)獨(dú)占設(shè)備進(jìn)行分配時(shí),還應(yīng)考慮到分
4、配的安全性。(2)共享設(shè)備,是指在一段時(shí)間內(nèi)允許多個(gè)進(jìn)程同時(shí)訪問(wèn)的設(shè)備。典型的共享設(shè)備是磁盤(pán),當(dāng)有多個(gè)進(jìn)程需對(duì)磁盤(pán)執(zhí)行讀、寫(xiě)操作時(shí),可以交叉進(jìn)行,不會(huì)影響到讀、寫(xiě)的正確性。8 8第六章 輸入輸出系統(tǒng)6.錯(cuò)誤處理大多數(shù)的設(shè)備都包括了較多的機(jī)械和電氣部分,運(yùn)行時(shí)容易出現(xiàn)錯(cuò)誤和故障。從處理的角度,可將錯(cuò)誤分為臨時(shí)性錯(cuò)誤和持久性錯(cuò)誤。對(duì)于臨時(shí)性錯(cuò)誤,可通過(guò)重試操作來(lái)糾正,只有在發(fā)生了持久性錯(cuò)誤時(shí),才需要向上層報(bào)告。9 9第六章 輸入輸出系統(tǒng)6.1.2 I/O系統(tǒng)的層次結(jié)構(gòu)和模型 1.I/O軟件的層次結(jié)構(gòu)通常把I/O 軟件組織成四個(gè)層次,如圖6-1所示。10 10第六章 輸入輸出系統(tǒng)圖6-1 I/O系統(tǒng)
5、的層次結(jié)構(gòu)11 11第六章 輸入輸出系統(tǒng)2.I/O系統(tǒng)中各種模塊之間的層次視圖為了能更清晰地描述I/O系統(tǒng)中主要模塊之間的關(guān)系,我們進(jìn)一步介紹I/O系統(tǒng)中各種I/O模塊之間的層次視圖。見(jiàn)圖6-2所示。1)I/O系統(tǒng)的上、下接口(1)I/O系統(tǒng)接口。(2)軟件/硬件(RW/HW)接口。12 12第六章 輸入輸出系統(tǒng)圖6-2 I/O系統(tǒng)中各種模塊之間的層次視圖13 13第六章 輸入輸出系統(tǒng)2)I/O系統(tǒng)的分層與前面所述的I/O軟件組織的層次結(jié)構(gòu)相對(duì)應(yīng),I/O系統(tǒng)本身也可分為如下三個(gè)層次:(1)中斷處理程序。(2)設(shè)備驅(qū)動(dòng)程序。(3)設(shè)備獨(dú)立性軟件。14 14第六章 輸入輸出系統(tǒng)6.1.3 I/O系
6、統(tǒng)接口 在I/O系統(tǒng)與高層之間的接口中,根據(jù)設(shè)備類(lèi)型的不同,又進(jìn)一步分為若干個(gè)接口。在圖6-2中示出了塊設(shè)備接口、流設(shè)備接口和網(wǎng)絡(luò)接口。1.塊設(shè)備接口(1)塊設(shè)備。(2)隱藏了磁盤(pán)的二維結(jié)構(gòu)。(3)將抽象命令映射為低層操作。15 15第六章 輸入輸出系統(tǒng)2.流設(shè)備接口流設(shè)備接口是流設(shè)備管理程序與高層之間的接口。該接口又稱(chēng)為字符設(shè)備接口,它反映了大部分字符設(shè)備的本質(zhì)特征,用于控制字符設(shè)備的輸入或輸出。(1)字符設(shè)備。(2)get和put操作。(3)in-control指令。16 16第六章 輸入輸出系統(tǒng)3.網(wǎng)絡(luò)通信接口在現(xiàn)代OS中,都提供了面向網(wǎng)絡(luò)的功能。但首先還需要通過(guò)某種方式把計(jì)算機(jī)連接到網(wǎng)
7、絡(luò)上。同時(shí)操作系統(tǒng)也必須提供相應(yīng)的網(wǎng)絡(luò)軟件和網(wǎng)絡(luò)通信接口,使計(jì)算機(jī)能通過(guò)網(wǎng)絡(luò)與網(wǎng)絡(luò)上的其它計(jì)算機(jī)進(jìn)行通信或上網(wǎng)瀏覽。17 17第六章 輸入輸出系統(tǒng)6.2 I/O設(shè)備和設(shè)備控制器I/O設(shè)備一般是由執(zhí)行I/O操作的機(jī)械部分和執(zhí)行控制I/O的電子部件組成。通常將這兩部分分開(kāi),執(zhí)行I/O操作的機(jī)械部分就是一般的I/O設(shè)備,而執(zhí)行控制I/O的電子部件則稱(chēng)為設(shè)備控制器或適配器(adapter)。在微型機(jī)和小型機(jī)中的控制器常做成印刷電路卡形式,因而也常稱(chēng)為控制卡、接口卡或網(wǎng)卡,可將它插入計(jì)算機(jī)的擴(kuò)展槽中。在有的大、中型計(jì)算機(jī)系統(tǒng)中,還配置了I/O通道或I/O處理機(jī)。18 18第六章 輸入輸出系統(tǒng)6.2.1
8、I/O設(shè)備 1.I/O設(shè)備的類(lèi)型1)按使用特性分類(lèi)2)按傳輸速率分類(lèi)19 19第六章 輸入輸出系統(tǒng)2.設(shè)備與控制器之間的接口通常,設(shè)備并不是直接與CPU進(jìn)行通信,而是與設(shè)備控制器通信,因此,在I/O設(shè)備中應(yīng)含有與設(shè)備控制器間的接口,在該接口中有三種類(lèi)型的信號(hào)(見(jiàn)圖6-3所示),各對(duì)應(yīng)一條信號(hào)線。(1)數(shù)據(jù)信號(hào)線。(2)控制信號(hào)線。(3)狀態(tài)信號(hào)線。2020第六章 輸入輸出系統(tǒng)圖6-3設(shè)備與控制器間的接口21 21第六章 輸入輸出系統(tǒng)6.2.2 設(shè)備控制器1.設(shè)備控制器的基本功能(1)接收和識(shí)別命令。(2)數(shù)據(jù)交換。(3)標(biāo)識(shí)和報(bào)告設(shè)備的狀態(tài)。(4)地址識(shí)別。(5)數(shù)據(jù)緩沖區(qū)。(6)差錯(cuò)控制。2
9、222第六章 輸入輸出系統(tǒng)2.設(shè)備控制器的組成由于設(shè)備控制器位于CPU與設(shè)備之間,它既要與CPU通信,又要與設(shè)備通信,還應(yīng)具有按照CPU所發(fā)來(lái)的命令去控制設(shè)備工作的功能,因此,現(xiàn)有的大多數(shù)控制器都是由以下三部分組成:(1)設(shè)備控制器與處理機(jī)的接口。(2)設(shè)備控制器與設(shè)備的接口。(3)I/O邏輯。2323第六章 輸入輸出系統(tǒng)圖6-4 設(shè)備控制器的組成 2424第六章 輸入輸出系統(tǒng)6.2.3 內(nèi)存映像I/O 1.利用特定的I/O指令在早期的計(jì)算機(jī)中,包括大型計(jì)算機(jī),為實(shí)現(xiàn)CPU和設(shè)備控制器之間的通信,為每個(gè)控制寄存器分配一個(gè)I/O端口,這是一個(gè)8位或16位的整數(shù),如圖6-5(a)所示。另外還設(shè)置了
10、一些特定的I/O指令。2525第六章 輸入輸出系統(tǒng)2.內(nèi)存映像I/O在這種方式中,在編址上不再區(qū)分內(nèi)存單元地址和設(shè)備控制器中的寄存器地址,都采用k。當(dāng)k值處于0n-1范圍時(shí),被認(rèn)為是內(nèi)存地址,若k大于等于n時(shí),被認(rèn)為是某個(gè)控制器的寄存器地址。2626第六章 輸入輸出系統(tǒng)圖6-5 設(shè)備尋址形式2727第六章 輸入輸出系統(tǒng)6.2.4I/O通道1.I/O通道設(shè)備的引入雖然在CPU與I/O設(shè)備之間增加了設(shè)備控制器后,已能大大減少CPU對(duì)I/O的干預(yù),但當(dāng)主機(jī)所配置的外設(shè)很多時(shí),CPU的負(fù)擔(dān)仍然很重。為此,在CPU和設(shè)備控制器之間又增設(shè)了I/O通道(I/O Channel)。2828第六章 輸入輸出系統(tǒng)
11、2.通道類(lèi)型1)字節(jié)多路通道(Byte Multiplexor Channel)這是一種按字節(jié)交叉方式工作的通道。它通常都含有許多非分配型子通道,其數(shù)量可從幾十到數(shù)百個(gè),每一個(gè)子通道連接一臺(tái)I/O設(shè)備,并控制該設(shè)備的I/O操作。這些子通道按時(shí)間片輪轉(zhuǎn)方式共享主通道。2929第六章 輸入輸出系統(tǒng)圖6-6 字節(jié)多路通道的工作原理3030第六章 輸入輸出系統(tǒng) 2)數(shù)組選擇通道(Block Selector Channel)字節(jié)多路通道不適于連接高速設(shè)備,這推動(dòng)了按數(shù)組方式進(jìn)行數(shù)據(jù)傳送的數(shù)組選擇通道的形成。31 31第六章 輸入輸出系統(tǒng)3)數(shù)組多路通道(Block Multiplexor Channe
12、l)數(shù)組選擇通道雖有很高的傳輸速率,但它卻每次只允許一個(gè)設(shè)備傳輸數(shù)據(jù)。數(shù)組多路通道是將數(shù)組選擇通道傳輸速率高和字節(jié)多路通道能使各子通道(設(shè)備)分時(shí)并行操作的優(yōu)點(diǎn)相結(jié)合而形成的一種新通道。3232第六章 輸入輸出系統(tǒng)3.“瓶頸”問(wèn)題由于通道價(jià)格昂貴,致使機(jī)器中所設(shè)置的通道數(shù)量勢(shì)必較少,這往往又使它成了I/O的瓶頸,進(jìn)而造成整個(gè)系統(tǒng)吞吐量的下降。3333第六章 輸入輸出系統(tǒng)圖6-7單通路I/O系統(tǒng)3434第六章 輸入輸出系統(tǒng)圖6-8多通路I/O系統(tǒng)3535第六章 輸入輸出系統(tǒng)6.3中斷機(jī)構(gòu)和中斷處理程序?qū)τ诓僮飨到y(tǒng)中的I/O系統(tǒng),本章采取從低層向高層的介紹方法,從本節(jié)開(kāi)始首先介紹中斷處理程序。中斷
13、在操作系統(tǒng)中有著特殊重要的地位,它是多道程序得以實(shí)現(xiàn)的基礎(chǔ),沒(méi)有中斷,就不可能實(shí)現(xiàn)多道程序,因?yàn)檫M(jìn)程之間的切換是通過(guò)中斷來(lái)完成的。另一方面,中斷也是設(shè)備管理的基礎(chǔ),為了提高處理機(jī)的利用率和實(shí)現(xiàn)CPU與I/O設(shè)備并行執(zhí)行,也必需有中斷的支持。中斷處理程序是I/O系統(tǒng)中最低的一層,它是整個(gè)I/O系統(tǒng)的基礎(chǔ)。3636第六章 輸入輸出系統(tǒng)6.3.1 中斷簡(jiǎn)介 1.中斷和陷入1)中斷2)陷入3737第六章 輸入輸出系統(tǒng)2.中斷向量表和中斷優(yōu)先級(jí)1)中斷向量表2)中斷優(yōu)先級(jí)3838第六章 輸入輸出系統(tǒng)3.對(duì)多中斷源的處理方式 1)屏蔽(禁止)中斷2)嵌套中斷3939第六章 輸入輸出系統(tǒng)圖6-9 對(duì)多中斷的
14、處理方式4040第六章 輸入輸出系統(tǒng)6.3.2 中斷處理程序 當(dāng)一個(gè)進(jìn)程請(qǐng)求I/O 操作時(shí),該進(jìn)程將被掛起,直到I/O設(shè)備完成I/O操作后,設(shè)備控制器便向CPU發(fā)送一個(gè)中斷請(qǐng)求,CPU響應(yīng)后便轉(zhuǎn)向中斷處理程序,中斷處理程序執(zhí)行相應(yīng)的處理,處理完后解除相應(yīng)進(jìn)程的阻塞狀態(tài)。41 41第六章 輸入輸出系統(tǒng)圖6-10 中斷現(xiàn)場(chǎng)保護(hù)示意圖4242第六章 輸入輸出系統(tǒng)圖6-11 中斷處理流程4343第六章 輸入輸出系統(tǒng)6.4 設(shè)備驅(qū)動(dòng)程序設(shè)備處理程序通常又稱(chēng)為設(shè)備驅(qū)動(dòng)程序,它是I/O系統(tǒng)的高層與設(shè)備控制器之間的通信程序,其主要任務(wù)是接收上層軟件發(fā)來(lái)的抽象I/O要求,如read或write命令,再把它轉(zhuǎn)換為
15、具體要求后,發(fā)送給設(shè)備控制器,啟動(dòng)設(shè)備去執(zhí)行;反之,它也將由設(shè)備控制器發(fā)來(lái)的信號(hào)傳送給上層軟件。由于驅(qū)動(dòng)程序與硬件密切相關(guān),故通常應(yīng)為每一類(lèi)設(shè)備配置一種驅(qū)動(dòng)程序。例如,打印機(jī)和顯示器需要不同的驅(qū)動(dòng)程序。4444第六章 輸入輸出系統(tǒng)6.4.1 設(shè)備驅(qū)動(dòng)程序概述 1.設(shè)備驅(qū)動(dòng)程序的功能 (1)接收由與設(shè)備無(wú)關(guān)的軟件發(fā)來(lái)的命令和參數(shù),并將命令中的抽象要求轉(zhuǎn)換為與設(shè)備相關(guān)的低層操作序列。(2)檢查用戶I/O請(qǐng)求的合法性,了解I/O設(shè)備的工作狀態(tài),傳遞與I/O設(shè)備操作有關(guān)的參數(shù),設(shè)置設(shè)備的工作方式。(3)發(fā)出I/O命令,如果設(shè)備空閑,便立即啟動(dòng)I/O設(shè)備,完成指定的I/O操作;如果設(shè)備忙碌,則將請(qǐng)求者的
16、請(qǐng)求塊掛在設(shè)備隊(duì)列上等待。(4)及時(shí)響應(yīng)由設(shè)備控制器發(fā)來(lái)的中斷請(qǐng)求,并根據(jù)其中斷類(lèi)型,調(diào)用相應(yīng)的中斷處理程序進(jìn)行處理。4545第六章 輸入輸出系統(tǒng)2.設(shè)備驅(qū)動(dòng)程序的特點(diǎn) 設(shè)備驅(qū)動(dòng)程序?qū)儆诘图?jí)的系統(tǒng)例程,它與一般的應(yīng)用程序及系統(tǒng)程序之間有下述明顯差異:(1)驅(qū)動(dòng)程序是實(shí)現(xiàn)在與設(shè)備無(wú)關(guān)的軟件和設(shè)備控制器之間通信和轉(zhuǎn)換的程序,具體說(shuō),它將抽象的I/O請(qǐng)求轉(zhuǎn)換成具體的I/O操作后傳送給控制器。又把控制器中所記錄的設(shè)備狀態(tài)和I/O操作完成情況,及時(shí)地反映給請(qǐng)求I/O的進(jìn)程。(2)驅(qū)動(dòng)程序與設(shè)備控制器以及I/O設(shè)備的硬件特性緊密相關(guān),對(duì)于不同類(lèi)型的設(shè)備,應(yīng)配置不同的驅(qū)動(dòng)程序。但可以為相同的多個(gè)終端設(shè)置一個(gè)
17、終端驅(qū)動(dòng)程序。4646第六章 輸入輸出系統(tǒng)(3)驅(qū)動(dòng)程序與I/O設(shè)備所采用的I/O控制方式緊密相關(guān),常用的I/O控制方式是中斷驅(qū)動(dòng)和DMA方式。(4)由于驅(qū)動(dòng)程序與硬件緊密相關(guān),因而其中的一部分必須用匯編語(yǔ)言書(shū)寫(xiě)。目前有很多驅(qū)動(dòng)程序的基本部分已經(jīng)固化在ROM中。(5)驅(qū)動(dòng)程序應(yīng)允許可重入。一個(gè)正在運(yùn)行的驅(qū)動(dòng)程序常會(huì)在一次調(diào)用完成前被再次調(diào)用。4747第六章 輸入輸出系統(tǒng)3.設(shè)備處理方式 在不同的操作系統(tǒng)中,所采用的設(shè)備處理方式并不完全相同。4848第六章 輸入輸出系統(tǒng)6.4.2 設(shè)備驅(qū)動(dòng)程序的處理過(guò)程設(shè)備驅(qū)動(dòng)程序的主要任務(wù)是啟動(dòng)指定設(shè)備,完成上層指定的I/O工作。但在啟動(dòng)之前,應(yīng)先完成必要的準(zhǔn)
18、備工作,如檢測(cè)設(shè)備狀態(tài)是否為“忙”等。在完成所有的準(zhǔn)備工作后,才向設(shè)備控制器發(fā)送一條啟動(dòng)命令。4949第六章 輸入輸出系統(tǒng)圖6-12 狀態(tài)寄存器中的格式5050第六章 輸入輸出系統(tǒng)6.4.3 對(duì)I/O設(shè)備的控制方式對(duì)設(shè)備的控制,早期是使用輪詢(xún)的可編程I/O方式,后來(lái)發(fā)展為使用中斷的可編程I/O方式。51 51第六章 輸入輸出系統(tǒng)1.使用輪詢(xún)的可編程I/O方式處理機(jī)對(duì)I/O設(shè)備的控制采取輪詢(xún)的可編程I/O方式,即在處理機(jī)向控制器發(fā)出一條I/O指令,啟動(dòng)輸入設(shè)備輸入數(shù)據(jù)時(shí),要同時(shí)把狀態(tài)寄存器中的忙/閑標(biāo)志busy置為1,然后便不斷地循環(huán)測(cè)試busy(稱(chēng)為輪詢(xún))。當(dāng)busy=1時(shí),表示輸入機(jī)尚未輸完
19、一個(gè)字(符),處理機(jī)應(yīng)繼續(xù)對(duì)該標(biāo)志進(jìn)行測(cè)試,直至busy=0,表明輸入機(jī)已將輸入數(shù)據(jù)送入控制器的數(shù)據(jù)寄存器中。于是處理機(jī)將數(shù)據(jù)寄存器中的數(shù)據(jù)取出,送入內(nèi)存指定單元中,這樣便完成了一個(gè)字(符)的I/O。接著再去啟動(dòng)讀下一個(gè)數(shù)據(jù),并置busy=1。5252第六章 輸入輸出系統(tǒng)圖6-13 程序I/O和中斷驅(qū)動(dòng)方式的流程5353第六章 輸入輸出系統(tǒng)2.使用中斷的可編程I/O方式當(dāng)前,對(duì)I/O設(shè)備的控制,廣泛采用中斷的可編程I/O方式,即當(dāng)某進(jìn)程要啟動(dòng)某個(gè)I/O設(shè)備工作時(shí),便由CPU向相應(yīng)的設(shè)備控制器發(fā)出一條I/O命令,然后立即返回繼續(xù)執(zhí)行原來(lái)的任務(wù)。設(shè)備控制器于是按照該命令的要求去控制指定I/O設(shè)備。
20、此時(shí),CPU與I/O設(shè)備并行操作。5454第六章 輸入輸出系統(tǒng)3.直接存儲(chǔ)器訪問(wèn)方式1)接存儲(chǔ)器訪問(wèn)方式的引入雖然中斷驅(qū)動(dòng)I/O比程序I/O方式更有效,但它仍是以字(節(jié))為單位進(jìn)行I/O的。每當(dāng)完成一個(gè)字(節(jié))的I/O時(shí),控制器便要向CPU請(qǐng)求一次中斷。5555第六章 輸入輸出系統(tǒng)該方式的特點(diǎn)是:(1)數(shù)據(jù)傳輸?shù)幕締挝皇菙?shù)據(jù)塊,即在CPU與I/O設(shè)備之間,每次傳送至少一個(gè)數(shù)據(jù)塊。(2)所傳送的數(shù)據(jù)是從設(shè)備直接送入內(nèi)存的,或者相反。(3)僅在傳送一個(gè)或多個(gè)數(shù)據(jù)塊的開(kāi)始和結(jié)束時(shí),才需CPU干預(yù),整塊數(shù)據(jù)的傳送是在控制器的控制下完成的??梢?jiàn),DMA方式較之中斷驅(qū)動(dòng)方式又進(jìn)一步提高了CPU與I/O設(shè)
21、備的并行操作程度。5656第六章 輸入輸出系統(tǒng)2)DMA控制器的組成DMA控制器由三部分組成:主機(jī)與DMA控制器的接口;DMA控制器與塊設(shè)備的接口;I/O控制邏輯。圖6-14示出了DMA控制器的組成。這里主要介紹主機(jī)與控制器之間的接口。5757第六章 輸入輸出系統(tǒng)圖6-14 DMA控制器的組成5858第六章 輸入輸出系統(tǒng)3)DMA工作過(guò)程當(dāng)CPU要從磁盤(pán)讀入一數(shù)據(jù)塊時(shí),便向磁盤(pán)控制器發(fā)送一條讀命令。該命令被送入命令寄存器CR中。同時(shí),需要將本次要讀入數(shù)據(jù)在內(nèi)存的起始目標(biāo)地址送入內(nèi)存地址寄存器MAR中。5959第六章 輸入輸出系統(tǒng)圖6-15 DMA方式的工作流程圖6060第六章 輸入輸出系統(tǒng)4.
22、I/O通道控制方式1)I/O通道控制方式的引入雖然DMA方式比起中斷方式來(lái)已經(jīng)顯著地減少了CPU的干預(yù),即已由以字(節(jié))為單位的干預(yù)減少到以數(shù)據(jù)塊為單位的干預(yù),但CPU每發(fā)出一條I/O指令,也只能去讀(或?qū)?一個(gè)連續(xù)的數(shù)據(jù)塊。而當(dāng)我們需要一次去讀多個(gè)數(shù)據(jù)塊且將它們分別傳送到不同的內(nèi)存區(qū)域,或者相反時(shí),則須由CPU分別發(fā)出多條I/O指令及進(jìn)行多次中斷處理才能完成。61 61第六章 輸入輸出系統(tǒng)2)通道程序通道是通過(guò)執(zhí)行通道程序并與設(shè)備控制器共同實(shí)現(xiàn)對(duì)I/O設(shè)備的控制的。通道程序是由一系列通道指令(或稱(chēng)為通道命令)所構(gòu)成的。6262第六章 輸入輸出系統(tǒng)下面示出了一個(gè)由六條通道指令所構(gòu)成的簡(jiǎn)單的通道
23、程序。該程序的功能是將內(nèi)存中不同地址的數(shù)據(jù)寫(xiě)成多個(gè)記錄。6363第六章 輸入輸出系統(tǒng)6.5 與設(shè)備無(wú)關(guān)的I/O軟件為了方便用戶和提高OS的可適應(yīng)性與可擴(kuò)展性,在現(xiàn)代OS的I/O系統(tǒng)中,都無(wú)一例外地增加了與設(shè)備無(wú)關(guān)的I/O軟件,以實(shí)現(xiàn)設(shè)備獨(dú)立性,也稱(chēng)為設(shè)備無(wú)關(guān)性。其基本含義是:應(yīng)用程序中所用的設(shè)備,不局限于使用某個(gè)具體的物理設(shè)備。為每個(gè)設(shè)備所配置的設(shè)備驅(qū)動(dòng)程序是與硬件緊密相關(guān)的軟件。6464第六章 輸入輸出系統(tǒng)6.5.1 與設(shè)備無(wú)關(guān)(Device Independence)軟件的基本概念 1.以物理設(shè)備名使用設(shè)備在早期OS中,應(yīng)用程序在使用I/O設(shè)備時(shí),都使用設(shè)備的物理名稱(chēng),這使應(yīng)用程序與系統(tǒng)中
24、的物理設(shè)備直接相關(guān)。6565第六章 輸入輸出系統(tǒng)2.引入了邏輯設(shè)備名為了實(shí)現(xiàn)與設(shè)備的無(wú)關(guān)性而引入了邏輯設(shè)備和物理設(shè)備兩個(gè)概念。邏輯設(shè)備是抽象的設(shè)備名。6666第六章 輸入輸出系統(tǒng)3.邏輯設(shè)備名稱(chēng)到物理設(shè)備名稱(chēng)的轉(zhuǎn)換在應(yīng)用程序中,用邏輯設(shè)備名稱(chēng)使用設(shè)備雖然方便了用戶,但系統(tǒng)卻只識(shí)別物理設(shè)備名稱(chēng),因此在實(shí)際執(zhí)行時(shí),還必須使用物理名稱(chēng)。為此,在系統(tǒng)中,必須具有將邏輯設(shè)備名稱(chēng)轉(zhuǎn)換為某物理設(shè)備名稱(chēng)的功能。6767第六章 輸入輸出系統(tǒng)6.5.2 與設(shè)備無(wú)關(guān)的軟件1.設(shè)備驅(qū)動(dòng)程序的統(tǒng)一接口為了使所有的設(shè)備驅(qū)動(dòng)程序有著統(tǒng)一的接口,一方面,要求每個(gè)設(shè)備驅(qū)動(dòng)程序與OS之間都有著相同的接口,或者相近的接口,這樣會(huì)使
25、添加一個(gè)新的設(shè)備驅(qū)動(dòng)程序變得很容易,同時(shí)在很大程度上方便了開(kāi)發(fā)人員對(duì)設(shè)備驅(qū)動(dòng)程序的編制。另一方面,要將抽象的設(shè)備名映射到適當(dāng)?shù)尿?qū)動(dòng)程序上,或者說(shuō),將抽象的設(shè)備名轉(zhuǎn)換為具體的物理設(shè)備名,并進(jìn)一步可以找到相應(yīng)物理設(shè)備的驅(qū)動(dòng)程序入口。此外,還應(yīng)對(duì)設(shè)備進(jìn)行保護(hù),禁止用戶直接訪問(wèn)設(shè)備,以防止無(wú)權(quán)訪問(wèn)的用戶使用。6868第六章 輸入輸出系統(tǒng)2.緩沖管理無(wú)論是字符設(shè)備還是塊設(shè)備,它們的運(yùn)行速度都遠(yuǎn)低于CPU的速度。為了緩和CPU和I/O設(shè)備之間的矛盾、提高CPU的利用率,在現(xiàn)代OS中都無(wú)一例外地分別為字符設(shè)備和塊設(shè)備配置了相應(yīng)的緩沖區(qū)。緩沖區(qū)有著多種形式,如單緩沖區(qū)、雙緩沖區(qū)、循環(huán)緩沖區(qū)、公用緩沖池等,以滿
26、足不同情況的需要。6969第六章 輸入輸出系統(tǒng)3.差錯(cuò)控制由于設(shè)備中有著許多的機(jī)械和電氣部分,因此,它們比主機(jī)更容易出現(xiàn)故障,這就導(dǎo)致I/O操作中的絕大多數(shù)錯(cuò)誤都與設(shè)備有關(guān)。錯(cuò)誤可分為如下兩類(lèi):(1)暫時(shí)性錯(cuò)誤。(2)持久性錯(cuò)誤。7070第六章 輸入輸出系統(tǒng)4.對(duì)獨(dú)立設(shè)備的分配與回收在系統(tǒng)中有兩類(lèi)設(shè)備:獨(dú)占設(shè)備和共享設(shè)備。對(duì)于獨(dú)占設(shè)備,為了避免諸進(jìn)程對(duì)獨(dú)占設(shè)備的爭(zhēng)奪,必須由系統(tǒng)來(lái)統(tǒng)一分配,不允許進(jìn)程自行使用。每當(dāng)進(jìn)程需要使用某(獨(dú)占)設(shè)備時(shí),必須先提出申請(qǐng)。OS接到對(duì)設(shè)備的請(qǐng)求后,先對(duì)進(jìn)程所請(qǐng)求的獨(dú)占設(shè)備進(jìn)行檢查,看該設(shè)備是否空閑。若空閑,才把該設(shè)備分配給請(qǐng)求進(jìn)程。否則,進(jìn)程將被阻塞,放入該設(shè)
27、備的請(qǐng)求隊(duì)列中等待。等到其它進(jìn)程釋放該設(shè)備時(shí),再將隊(duì)列中的第一個(gè)進(jìn)程喚醒,該進(jìn)程得到設(shè)備后繼續(xù)運(yùn)行。71 71第六章 輸入輸出系統(tǒng)5.獨(dú)立于設(shè)備的邏輯數(shù)據(jù)塊不同類(lèi)型的設(shè)備,其數(shù)據(jù)交換單位是不同的,讀取和傳輸速率也各不相同,如字符型設(shè)備以單個(gè)字符(字)為單位,塊設(shè)備是以一個(gè)數(shù)據(jù)塊為單位。即使同一類(lèi)型的設(shè)備,其數(shù)據(jù)交換單位的大小也是有差異的,如不同磁盤(pán)由于扇區(qū)大小的不同,可能造成數(shù)據(jù)塊大小的不一致。設(shè)備獨(dú)立性軟件應(yīng)能夠隱藏這些差異而被邏輯設(shè)備使用,并向高層軟件提供大小統(tǒng)一的邏輯數(shù)據(jù)塊。與設(shè)備無(wú)關(guān)軟件的功能如圖6-16所示。7272第六章 輸入輸出系統(tǒng)圖6-16 與設(shè)備無(wú)關(guān)軟件的功能層次7373第六
28、章 輸入輸出系統(tǒng)6.5.3 設(shè)備分配系統(tǒng)為實(shí)現(xiàn)對(duì)獨(dú)占設(shè)備的分配,必須在系統(tǒng)中配置相應(yīng)的數(shù)據(jù)結(jié)構(gòu)。1.設(shè)備分配中的數(shù)據(jù)結(jié)構(gòu)在用于設(shè)備分配的數(shù)據(jù)結(jié)構(gòu)中,記錄了對(duì)設(shè)備或控制器進(jìn)行控制所需的信息。在進(jìn)行設(shè)備分配時(shí)需要如下的數(shù)據(jù)結(jié)構(gòu)。1)設(shè)備控制表DCT系統(tǒng)為每一個(gè)設(shè)備都配置了一張?jiān)O(shè)備控制表,用于記錄設(shè)備的情況,如圖6-17所示。7474第六章 輸入輸出系統(tǒng)圖6-17 設(shè)備控制表7575第六章 輸入輸出系統(tǒng)2)控制器控制表、通道控制表和系統(tǒng)設(shè)備表(1)控制器控制表(COCT)。系統(tǒng)為每一個(gè)控制器都設(shè)置了用于記錄控制器情況的控制器控制表,如圖6-18(a)所示。(2)通道控制表(CHCT)。每個(gè)通道都有一
29、張通道控制表,如圖6-18(b)所示。(3)系統(tǒng)設(shè)備表(SDT)。這是系統(tǒng)范圍的數(shù)據(jù)結(jié)構(gòu),記錄了系統(tǒng)中全部設(shè)備的情況,每個(gè)設(shè)備占一個(gè)表目,其中包括有設(shè)備類(lèi)型、設(shè)備標(biāo)識(shí)符、設(shè)備控制表及設(shè)備驅(qū)動(dòng)程序的入口等項(xiàng),如圖6-18(c)所示。7676第六章 輸入輸出系統(tǒng)圖6-18 COCT、CHCT和SDT表7777第六章 輸入輸出系統(tǒng)2.設(shè)備分配時(shí)應(yīng)考慮的因素 系統(tǒng)在分配設(shè)備時(shí),應(yīng)考慮如下幾個(gè)因素:1)設(shè)備的固有屬性設(shè)備的固有屬性可分成三種,對(duì)它們應(yīng)采取不同的分配策略:(1)獨(dú)占設(shè)備的分配策略。(2)共享設(shè)備的分配策略。(3)虛擬設(shè)備的分配策略,虛擬設(shè)備屬于可共享的設(shè)備,可以將它同時(shí)分配給多個(gè)進(jìn)程使用。
30、7878第六章 輸入輸出系統(tǒng)2)設(shè)備分配算法對(duì)設(shè)備分配的算法,通常只采用以下兩種分配算法:(1)先來(lái)先服務(wù)。(2)優(yōu)先級(jí)高者優(yōu)先。7979第六章 輸入輸出系統(tǒng)3)設(shè)備分配中的安全性從進(jìn)程運(yùn)行的安全性上考慮,設(shè)備分配有以下兩種方式:(1)安全分配方式。(2)不安全分配方式。8080第六章 輸入輸出系統(tǒng)3.獨(dú)占設(shè)備的分配程序 1)基本的設(shè)備分配程序我們通過(guò)一個(gè)例子來(lái)介紹設(shè)備分配過(guò)程。當(dāng)某進(jìn)程提出I/O請(qǐng)求后,系統(tǒng)的設(shè)備分配程序可按下述步驟進(jìn)行設(shè)備分配:(1)分配設(shè)備。(2)分配控制器。(3)分配通道。81 81第六章 輸入輸出系統(tǒng)2)設(shè)備分配程序的改進(jìn)在上面的例子中,進(jìn)程是以物理設(shè)備名提出I/O請(qǐng)
31、求的。如果所指定的設(shè)備已分配給其它進(jìn)程,則分配失敗?;蛘哒f(shuō)上面的設(shè)備分配程序不具有與設(shè)備無(wú)關(guān)性。為獲得設(shè)備的獨(dú)立性,進(jìn)程應(yīng)使用邏輯設(shè)備名請(qǐng)求I/O。8282第六章 輸入輸出系統(tǒng)6.5.4 邏輯設(shè)備名到物理設(shè)備名映射的實(shí)現(xiàn)1.邏輯設(shè)備表LUT(Logical Unit Table)在邏輯設(shè)備表的每個(gè)表目中包含了三項(xiàng):邏輯設(shè)備名、物理設(shè)備名和設(shè)備驅(qū)動(dòng)程序的入口地址,如圖6-19(a)所示。8383第六章 輸入輸出系統(tǒng)圖6-19 邏輯設(shè)備表8484第六章 輸入輸出系統(tǒng)2.邏輯設(shè)備表的設(shè)置問(wèn)題在系統(tǒng)中可采取兩種方式設(shè)置邏輯設(shè)備表:第一種方式,是在整個(gè)系統(tǒng)中只設(shè)置一張LUT。第二種方式,是為每個(gè)用戶設(shè)置
32、一張LUT。8585第六章 輸入輸出系統(tǒng)6.6 用戶層的I/O軟件6.6.1 系統(tǒng)調(diào)用與庫(kù)函數(shù) 1.系統(tǒng)調(diào)用一方面,為使諸進(jìn)程能有條不紊地使用I/O設(shè)備,且能保護(hù)設(shè)備的安全性,不允許運(yùn)行在用戶態(tài)的應(yīng)用進(jìn)程去直接調(diào)用運(yùn)行在核心態(tài)(系統(tǒng)態(tài))的OS過(guò)程。但另一方面,應(yīng)用進(jìn)程在運(yùn)行時(shí),又必須取得OS所提供的服務(wù),否則,應(yīng)用程序幾乎無(wú)法運(yùn)行。為了解決此矛盾,OS在用戶層中引入了一個(gè)中介過(guò)程系統(tǒng)調(diào)用,應(yīng)用程序可以通過(guò)它間接調(diào)用OS中的I/O過(guò)程,對(duì)I/O設(shè)備進(jìn)行操作。8686第六章 輸入輸出系統(tǒng)圖6-20 系統(tǒng)調(diào)用的執(zhí)行過(guò)程8787第六章 輸入輸出系統(tǒng)2.庫(kù)函數(shù)在C語(yǔ)言以及UNIX系統(tǒng)中,系統(tǒng)調(diào)用(如re
33、ad)與各系統(tǒng)調(diào)用所使用的庫(kù)函數(shù)(如read)之間幾乎是一一對(duì)應(yīng)的。而微軟定義了一套過(guò)程,稱(chēng)為Win32 API的應(yīng)用程序接口(Application Program Interface),程序員利用它們?nèi)〉肙S服務(wù),該接口與實(shí)際的系統(tǒng)調(diào)用并不一一對(duì)應(yīng)。用戶程序通過(guò)調(diào)用對(duì)應(yīng)的庫(kù)函數(shù)使用系統(tǒng)調(diào)用,這些庫(kù)函數(shù)與調(diào)用程序連接在一起,被嵌入在運(yùn)行時(shí)裝入內(nèi)存的二進(jìn)制程序中。8888第六章 輸入輸出系統(tǒng)6.6.2 假脫機(jī)(Spooling)系統(tǒng)1.假脫機(jī)技術(shù) 在20世紀(jì)50年代,為了緩和CPU的高速性與I/O設(shè)備低速性間的矛盾,而引入了脫機(jī)輸入、脫機(jī)輸出技術(shù)。該技術(shù)是利用專(zhuān)門(mén)的外圍控制機(jī),先將低速I(mǎi)/O設(shè)
34、備上的數(shù)據(jù)傳送到高速磁盤(pán)上,或者相反。這樣當(dāng)處理機(jī)需要輸入數(shù)據(jù)時(shí),便可以直接從磁盤(pán)中讀取數(shù)據(jù),極大地提高了輸入速度。反之,在處理機(jī)需要輸出數(shù)據(jù)時(shí),也可以很快的速度把數(shù)據(jù)先輸出到磁盤(pán)上,處理機(jī)便可去做自己的事情。8989第六章 輸入輸出系統(tǒng)2.SPOOLing的組成如前所述,SPOOLing技術(shù)是對(duì)脫機(jī)輸入/輸出系統(tǒng)的模擬,相應(yīng)地,如圖6-21(a)所示,SPOOLing系統(tǒng)建立在通道技術(shù)和多道程序技術(shù)的基礎(chǔ)上,以高速隨機(jī)外存(通常為磁盤(pán))為后援存儲(chǔ)器。SPOOLing的工作原理如圖6-21(b)所示。9090第六章 輸入輸出系統(tǒng)圖6-21 SPOOLing系統(tǒng)組成及工作原理91 91第六章 輸
35、入輸出系統(tǒng)SPOOLing系統(tǒng)主要由以下四部分構(gòu)成:(1)輸入井和輸出井。(2)輸入緩沖區(qū)和輸出緩沖區(qū)。(3)輸入進(jìn)程和輸出進(jìn)程。(4)井管理程序。9292第六章 輸入輸出系統(tǒng)3.SPOOLing系統(tǒng)的特點(diǎn)(1)提高了I/O的速度。(2)將獨(dú)占設(shè)備改造為共享設(shè)備。(3)實(shí)現(xiàn)了虛擬設(shè)備功能。9393第六章 輸入輸出系統(tǒng)4.假脫機(jī)打印機(jī)系統(tǒng)打印機(jī)是經(jīng)常用到的輸出設(shè)備,屬于獨(dú)占設(shè)備。利用假脫機(jī)技術(shù)可將它改造為一臺(tái)可供多個(gè)用戶共享的打印設(shè)備,從而提高設(shè)備的利用率,也方便了用戶。共享打印機(jī)技術(shù)已被廣泛地用于多用戶系統(tǒng)和局域網(wǎng)絡(luò)中。假脫機(jī)打印系統(tǒng)主要有以下三部分:(1)磁盤(pán)緩沖區(qū)。(2)打印緩沖區(qū)。(3)
36、假脫機(jī)管理進(jìn)程和假脫機(jī)打印進(jìn)程。9494第六章 輸入輸出系統(tǒng)5.守護(hù)進(jìn)程(daemon)前面是利用假脫機(jī)系統(tǒng)來(lái)實(shí)現(xiàn)打印機(jī)共享的一種方案,人們對(duì)該方案進(jìn)行了某些修改,如取消該方案中的假脫機(jī)管理進(jìn)程,為打印機(jī)建立一個(gè)守護(hù)進(jìn)程,由它執(zhí)行一部分原來(lái)由假脫機(jī)管理進(jìn)程實(shí)現(xiàn)的功能,如為用戶在磁盤(pán)緩沖區(qū)中申請(qǐng)一個(gè)空閑盤(pán)塊,并將要打印的數(shù)據(jù)送入其中,將該盤(pán)塊的首址返回給請(qǐng)求進(jìn)程。另一部分由請(qǐng)求進(jìn)程自己完成,每個(gè)要求打印的進(jìn)程首先生成一份要求打印的文件,其中包含對(duì)打印的要求和指向裝有打印輸出數(shù)據(jù)盤(pán)塊的指針等信息,然后將用戶請(qǐng)求打印文件放入假脫機(jī)文件隊(duì)列(目錄)中。9595第六章 輸入輸出系統(tǒng)6.7 緩沖區(qū)管理在現(xiàn)
37、代操作系統(tǒng)中,幾乎所有的I/O設(shè)備在與處理機(jī)交換數(shù)據(jù)時(shí)都用了緩沖區(qū)。緩沖區(qū)是一個(gè)存儲(chǔ)區(qū)域,它可以由專(zhuān)門(mén)的硬件寄存器組成,但由于硬件的成本較高,容量也較小,一般僅用在對(duì)速度要求非常高的場(chǎng)合,如存儲(chǔ)器管理中所用的聯(lián)想存儲(chǔ)器;設(shè)備控制器中用的數(shù)據(jù)緩沖區(qū)等。9696第六章 輸入輸出系統(tǒng)6.7.1 緩沖的引入 引入緩沖區(qū)的原因有很多,可歸結(jié)為以下幾點(diǎn):(1)緩和CPU與I/O設(shè)備間速度不匹配的矛盾。(2)減少對(duì)CPU的中斷頻率,放寬對(duì)CPU中斷響應(yīng)時(shí)間的限制。(3)解決數(shù)據(jù)粒度不匹配的問(wèn)題。(4)提高CPU和I/O設(shè)備之間的并行性。9797第六章 輸入輸出系統(tǒng)圖6-22 利用緩沖寄存器實(shí)現(xiàn)緩沖9898第
38、六章 輸入輸出系統(tǒng)6.7.2 單緩沖區(qū)和雙緩沖區(qū) 1.單緩沖區(qū)(Single Buffer)在單緩沖情況下,每當(dāng)用戶進(jìn)程發(fā)出一I/O請(qǐng)求時(shí),操作系統(tǒng)便在主存中為之分配一緩沖區(qū),如圖6-23所示。9999第六章 輸入輸出系統(tǒng)圖6-23 單緩沖工作示意圖100100第六章 輸入輸出系統(tǒng)2.雙緩沖區(qū)(Double Buffer)由于緩沖區(qū)是共享資源,生產(chǎn)者與消費(fèi)者在使用緩沖區(qū)時(shí)必須互斥。如果消費(fèi)者尚未取走緩沖區(qū)中的數(shù)據(jù),即使生產(chǎn)者又生產(chǎn)出新的數(shù)據(jù),也無(wú)法將它送入緩沖區(qū),生產(chǎn)者等待。如果為生產(chǎn)者與消費(fèi)者設(shè)置了兩個(gè)緩沖區(qū),便能解決這一問(wèn)題。101101第六章 輸入輸出系統(tǒng)圖6-24 雙緩沖工作示意圖10
39、2102第六章 輸入輸出系統(tǒng)如果在實(shí)現(xiàn)兩臺(tái)機(jī)器之間的通信時(shí)僅為它們配置了單緩沖,如圖6-25(a)所示,那么,它們之間在任一時(shí)刻都只能實(shí)現(xiàn)單方向的數(shù)據(jù)傳輸。例如,只允許把數(shù)據(jù)從A傳送到B,或者從B傳送到A,而絕不允許雙方同時(shí)向?qū)Ψ桨l(fā)送數(shù)據(jù)。為了實(shí)現(xiàn)雙向數(shù)據(jù)傳輸,必須在兩臺(tái)機(jī)器中都設(shè)置兩個(gè)緩沖區(qū),一個(gè)用作發(fā)送緩沖區(qū),另一個(gè)用作接收緩沖區(qū),如圖6-25(b)所示。103103第六章 輸入輸出系統(tǒng)圖6-25 雙機(jī)通信時(shí)緩沖區(qū)的設(shè)置104104第六章 輸入輸出系統(tǒng)6.7.3 環(huán)形緩沖區(qū) 1.環(huán)形緩沖區(qū)的組成(1)多個(gè)緩沖區(qū)。在環(huán)形緩沖中包括多個(gè)緩沖區(qū),其每個(gè)緩沖區(qū)的大小相同。作為輸入的多緩沖區(qū)可分為三
40、種類(lèi)型:用于裝輸入數(shù)據(jù)的空緩沖區(qū)R、已裝滿數(shù)據(jù)的緩沖區(qū)G以及計(jì)算進(jìn)程正在使用的現(xiàn)行工作緩沖區(qū)C,如圖6-26所示。105105第六章 輸入輸出系統(tǒng)圖6-26 環(huán)形緩沖區(qū)106106第六章 輸入輸出系統(tǒng)2.環(huán)形緩沖區(qū)的使用計(jì)算進(jìn)程和輸入進(jìn)程可利用下述兩個(gè)過(guò)程來(lái)使用形環(huán)緩沖區(qū)。(1)Getbuf過(guò)程。(2)Releasebuf過(guò)程。107107第六章 輸入輸出系統(tǒng)3.進(jìn)程之間的同步問(wèn)題使用輸入循環(huán)緩沖,可使輸入進(jìn)程和計(jì)算進(jìn)程并行執(zhí)行。相應(yīng)地,指針Nexti和指針Nextg將不斷地沿著順時(shí)針?lè)较蛞苿?dòng),這樣就可能出現(xiàn)下述兩種情況:(1)Nexti指針追趕上Nextg指針。(2)Nextg指針追趕上Ne
41、xti指針。108108第六章 輸入輸出系統(tǒng)6.7.4 緩沖池(Buffer Pool)1.緩沖池的組成緩沖池管理著多個(gè)緩沖區(qū),每個(gè)緩沖區(qū)由用于標(biāo)識(shí)和管理的緩沖首部以及用于存放數(shù)據(jù)的緩沖體兩部分組成。緩沖首部一般包括緩沖區(qū)號(hào)、設(shè)備號(hào)、設(shè)備上的數(shù)據(jù)塊號(hào)、同步信號(hào)量以及隊(duì)列鏈接指針等。為了管理上的方便,一般將緩沖池中具有相同類(lèi)型的緩沖區(qū)鏈接成一個(gè)隊(duì)列,于是可形成以下三個(gè)隊(duì)列:(1)空白緩沖隊(duì)列emq。(2)輸入隊(duì)列inq。(3)輸出隊(duì)列outq。109109第六章 輸入輸出系統(tǒng)2.Getbuf過(guò)程和Putbuf過(guò)程在數(shù)據(jù)結(jié)構(gòu)課程中,曾介紹過(guò)隊(duì)列和對(duì)隊(duì)列進(jìn)行操作的兩個(gè)過(guò)程,第一個(gè)是 Addbuf(t
42、ype,number)過(guò)程。該過(guò)程用于將由參數(shù)number所指示的緩沖區(qū)B掛在type隊(duì)列上。第二個(gè)是Takebuf(type)過(guò)程。它用于從type所指示的隊(duì)列的隊(duì)首摘下一個(gè)緩沖區(qū)。110110第六章 輸入輸出系統(tǒng)3.緩沖區(qū)的工作方式緩沖區(qū)可以工作在如下四種工作方式,如圖6-27所示。111111第六章 輸入輸出系統(tǒng)圖6-27 緩沖區(qū)的工作方式112112第六章 輸入輸出系統(tǒng)6.8 磁盤(pán)存儲(chǔ)器的性能和調(diào)度6.8.1 磁盤(pán)性能簡(jiǎn)述磁盤(pán)設(shè)備是一種相當(dāng)復(fù)雜的機(jī)電設(shè)備,在此僅對(duì)磁盤(pán)的某些性能,如數(shù)據(jù)的組織、磁盤(pán)的類(lèi)型和訪問(wèn)時(shí)間等方面做扼要的闡述。113113第六章 輸入輸出系統(tǒng)1.數(shù)據(jù)的組織和格式磁
43、盤(pán)設(shè)備可包括一個(gè)或多個(gè)物理盤(pán)片,每個(gè)磁盤(pán)片分一個(gè)或兩個(gè)存儲(chǔ)面(Surface)(見(jiàn)圖6-28(a),每個(gè)盤(pán)面上有若干個(gè)磁道(Track),磁道之間留有必要的間隙(Gap)。為使處理簡(jiǎn)單起見(jiàn),在每條磁道上可存儲(chǔ)相同數(shù)目的二進(jìn)制位。114114第六章 輸入輸出系統(tǒng)圖6-28 磁盤(pán)的結(jié)構(gòu)和布局115115第六章 輸入輸出系統(tǒng)圖6-29 磁盤(pán)的格式化116116第六章 輸入輸出系統(tǒng)2.磁盤(pán)的類(lèi)型對(duì)于磁盤(pán),可以從不同的角度進(jìn)行分類(lèi)。最常見(jiàn)的有:將磁盤(pán)分成硬盤(pán)和軟盤(pán)、單片盤(pán)和多片盤(pán)、固定頭磁盤(pán)和活動(dòng)頭(移動(dòng)頭)磁盤(pán)等。下面僅對(duì)固定頭磁盤(pán)和移動(dòng)頭磁盤(pán)做些介紹。(1)固定頭磁盤(pán)。(2)移動(dòng)頭磁盤(pán)。117117
44、第六章 輸入輸出系統(tǒng)3.磁盤(pán)訪問(wèn)時(shí)間磁盤(pán)設(shè)備在工作時(shí)以恒定速率旋轉(zhuǎn)。為了讀或?qū)?,磁頭必須能移動(dòng)到所指定的磁道上,并等待所指定的扇區(qū)的開(kāi)始位置旋轉(zhuǎn)到磁頭下,然后再開(kāi)始讀或?qū)憯?shù)據(jù)。118118第六章 輸入輸出系統(tǒng)6.8.2 早期的磁盤(pán)調(diào)度算法 1.先來(lái)先服務(wù)(FCFS)這是最簡(jiǎn)單的磁盤(pán)調(diào)度算法。它根據(jù)進(jìn)程請(qǐng)求訪問(wèn)磁盤(pán)的先后次序進(jìn)行調(diào)度。119119第六章 輸入輸出系統(tǒng)2.最短尋道時(shí)間優(yōu)先(SSTF)該算法選擇這樣的進(jìn)程,其要求訪問(wèn)的磁道與當(dāng)前磁頭所在的磁道距離最近,以使每次的尋道時(shí)間最短,但這種算法不能保證平均尋道時(shí)間最短。120120第六章 輸入輸出系統(tǒng)圖6-30 FCFS調(diào)度算法 121121
45、第六章 輸入輸出系統(tǒng)圖6-31 SSTF調(diào)度算法 122122第六章 輸入輸出系統(tǒng)6.8.3 基于掃描的磁盤(pán)調(diào)度算法 1.掃描(SCAN)算法SSTF算法的實(shí)質(zhì)是基于優(yōu)先級(jí)的調(diào)度算法,因此就可能導(dǎo)致優(yōu)先級(jí)低的進(jìn)程發(fā)生“饑餓”(Starvation)現(xiàn)象。因?yàn)橹灰粩嘤行逻M(jìn)程的請(qǐng)求到達(dá),且其所要訪問(wèn)的磁道與磁頭當(dāng)前所在磁道的距離較近,這種新進(jìn)程的I/O請(qǐng)求必然優(yōu)先滿足。在對(duì)SSTF算法略加修改后,則可防止低優(yōu)先級(jí)進(jìn)程出現(xiàn)“饑餓”現(xiàn)象。123123第六章 輸入輸出系統(tǒng)2.循環(huán)掃描(CSCAN)算法SCAN算法既能獲得較好的尋道性能,又能防止“饑餓”現(xiàn)象,故被廣泛用于大、中、小型機(jī)器和網(wǎng)絡(luò)中的磁盤(pán)調(diào)
46、度。但也存在這樣的問(wèn)題:當(dāng)磁頭剛從里向外移動(dòng)而越過(guò)了某一磁道時(shí),恰好又有一進(jìn)程請(qǐng)求訪問(wèn)此磁道,這時(shí),該進(jìn)程必須等待,待磁頭繼續(xù)從里向外,然后再?gòu)耐庀蚶飹呙柰晏幱谕饷娴乃幸L問(wèn)的磁道后,才處理該進(jìn)程的請(qǐng)求,致使該進(jìn)程的請(qǐng)求被大大地推遲。124124第六章 輸入輸出系統(tǒng)圖6-32SCAN調(diào)度算法示例 125125第六章 輸入輸出系統(tǒng) 圖6-33 CSCAN調(diào)度算法示例 126126第六章 輸入輸出系統(tǒng)3.NStepSCAN和FSCAN調(diào)度算法 1)NStepSCAN算法在SSTF、SCAN及CSCAN幾種調(diào)度算法中,都可能出現(xiàn)磁臂停留在某處不動(dòng)的情況,例如,有一個(gè)或幾個(gè)進(jìn)程對(duì)某一磁道有較高的訪問(wèn)
47、頻率,即這個(gè)(些)進(jìn)程反復(fù)請(qǐng)求對(duì)某一磁道的I/O操作,從而壟斷了整個(gè)磁盤(pán)設(shè)備。我們把這一現(xiàn)象稱(chēng)為“磁臂粘著”(Armstickiness)。在高密度磁盤(pán)上容易出現(xiàn)此情況。127127第六章 輸入輸出系統(tǒng)2)FSCAN算法FSCAN算法實(shí)質(zhì)上是N步SCAN算法的簡(jiǎn)化,即FSCAN只將磁盤(pán)請(qǐng)求隊(duì)列分成兩個(gè)子隊(duì)列。一個(gè)是由當(dāng)前所有請(qǐng)求磁盤(pán)I/O的進(jìn)程形成的隊(duì)列,由磁盤(pán)調(diào)度按SCAN算法進(jìn)行處理。另一個(gè)是在掃描期間,將新出現(xiàn)的所有請(qǐng)求磁盤(pán)I/O的進(jìn)程放入等待處理的請(qǐng)求隊(duì)列。這樣,所有的新請(qǐng)求都將被推遲到下一次掃描時(shí)處理。128128第六章 輸入輸出系統(tǒng) 習(xí) 題 1.試說(shuō)明I/O系統(tǒng)的基本功能。2.簡(jiǎn)要
48、說(shuō)明I/O軟件的四個(gè)層次的基本功能。3.I/O系統(tǒng)接口與軟件/硬件(RW/HW)接口分別是什么接口?4.與設(shè)備無(wú)關(guān)性的基本含義是什么?為什么要設(shè)置該層?5.試說(shuō)明設(shè)備控制器的組成。6.為了實(shí)現(xiàn)CPU與設(shè)備控制器間的通信,設(shè)備控制器應(yīng)具備哪些功能?129129第六章 輸入輸出系統(tǒng)7.什么是內(nèi)存映像I/O?它是如何實(shí)現(xiàn)的?8.為什么說(shuō)中斷是OS賴(lài)以生存的基礎(chǔ)?9.對(duì)多中斷源的兩種處理方式分別用于何種場(chǎng)合?10.設(shè)備中斷處理程序通常需完成哪些工作?11.簡(jiǎn)要說(shuō)明中斷處理程序?qū)χ袛噙M(jìn)行處理的幾個(gè)步驟。12.試說(shuō)明設(shè)備驅(qū)動(dòng)程序具有哪些特點(diǎn)。13.設(shè)備驅(qū)動(dòng)程序通常要完成哪些工作?14.簡(jiǎn)要說(shuō)明設(shè)備驅(qū)動(dòng)程序的處理過(guò)程可分為哪幾步。15.試說(shuō)明推動(dòng)I/O控制發(fā)展的主要因素是什么。
- 溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫(kù)試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫(kù)試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫(kù)試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫(kù)及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫(kù)含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案