




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、西西 安安 電電 子子 科科 技技 大大 學(xué)學(xué) 出出 版版 社社http:/高等學(xué)校計(jì)算機(jī)類高等學(xué)校計(jì)算機(jī)類“十二五十二五”規(guī)劃教材規(guī)劃教材部級(jí)優(yōu)秀教材部級(jí)優(yōu)秀教材 計(jì)算機(jī)操作系統(tǒng)計(jì)算機(jī)操作系統(tǒng)湯小丹湯小丹 梁紅兵梁紅兵 哲鳳屏哲鳳屏 湯子瀛湯子瀛 (第四版第四版)編著編著 2 2第六章 輸入輸出系統(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è)備無關(guān)的I/O軟件6.6 用戶層的I/O軟件6.7 緩沖區(qū)管理6.8 磁盤存儲(chǔ)器的性能和調(diào)度習(xí)題3 3第六章 輸入輸出系統(tǒng)6.1 I/
2、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è)備提供手段。4 4第六章 輸入輸出系統(tǒng)6.1.1 I/O系統(tǒng)的基本功能1. 隱藏物理設(shè)備的細(xì)節(jié)I/O設(shè)備的類型非常多,且彼此間在多方面都有差異,諸如它們接收和產(chǎn)生數(shù)據(jù)的速度,傳輸方向、粒度、數(shù)據(jù)的表示形式及可靠性等方面。 5 5第六章 輸入輸出系統(tǒng)2. 與設(shè)備的無關(guān)性隱藏物理設(shè)備的細(xì)節(jié),在早期的OS中就已實(shí)現(xiàn),它可方便用戶對(duì)設(shè)備的使用。與設(shè)備的無關(guān)性是在較晚時(shí)才實(shí)現(xiàn)的,這是在隱藏物理設(shè)備細(xì)節(jié)的基礎(chǔ)上實(shí)
3、現(xiàn)的。 6 6第六章 輸入輸出系統(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)用戶的I/O請(qǐng)求,使I/O設(shè)備盡快地運(yùn)行起來;另一方面也應(yīng)盡量減少在每個(gè)I/O設(shè)備運(yùn)行時(shí)處理機(jī)的干預(yù)時(shí)間。 7 7第六章 輸入輸出系統(tǒng)4. 對(duì)I/O設(shè)備進(jìn)行控制對(duì)I/O設(shè)備進(jìn)行控制是驅(qū)動(dòng)程序的功能。目前對(duì)I/O設(shè)備有四種控制方式: 采用輪詢的可編程I/O方式; 采用中斷的可編程I/O方式; 直接存儲(chǔ)器訪問方式; I
4、/O通道方式。 8 8第六章 輸入輸出系統(tǒng)5. 確保對(duì)設(shè)備的正確共享從設(shè)備的共享屬性上,可將系統(tǒng)中的設(shè)備分為如下兩類:(1) 獨(dú)占設(shè)備,進(jìn)程應(yīng)互斥地訪問這類設(shè)備,即系統(tǒng)一旦把這類設(shè)備分配給了某進(jìn)程后,便由該進(jìn)程獨(dú)占,直至用完釋放。典型的獨(dú)占設(shè)備有打印機(jī)、磁帶機(jī)等。系統(tǒng)在對(duì)獨(dú)占設(shè)備進(jìn)行分配時(shí),還應(yīng)考慮到分配的安全性。(2) 共享設(shè)備,是指在一段時(shí)間內(nèi)允許多個(gè)進(jìn)程同時(shí)訪問的設(shè)備。典型的共享設(shè)備是磁盤,當(dāng)有多個(gè)進(jìn)程需對(duì)磁盤執(zhí)行讀、寫操作時(shí),可以交叉進(jìn)行,不會(huì)影響到讀、寫的正確性。9 9第六章 輸入輸出系統(tǒng)6. 錯(cuò)誤處理大多數(shù)的設(shè)備都包括了較多的機(jī)械和電氣部分,運(yùn)行時(shí)容易出現(xiàn)錯(cuò)誤和故障。從處理的角度,
5、可將錯(cuò)誤分為臨時(shí)性錯(cuò)誤和持久性錯(cuò)誤。對(duì)于臨時(shí)性錯(cuò)誤,可通過重試操作來糾正,只有在發(fā)生了持久性錯(cuò)誤時(shí),才需要向上層報(bào)告。 10 10第六章 輸入輸出系統(tǒng)6.1.2 I/O系統(tǒng)的層次結(jié)構(gòu)和模型 1. I/O軟件的層次結(jié)構(gòu)通常把I/O 軟件組織成四個(gè)層次,如圖6-1所示。11 11第六章 輸入輸出系統(tǒng)圖6-1 I/O系統(tǒng)的層次結(jié)構(gòu)12 12第六章 輸入輸出系統(tǒng)2. I/O系統(tǒng)中各種模塊之間的層次視圖為了能更清晰地描述I/O系統(tǒng)中主要模塊之間的關(guān)系,我們進(jìn)一步介紹I/O系統(tǒng)中各種I/O模塊之間的層次視圖。見圖6-2所示。1) I/O系統(tǒng)的上、下接口(1) I/O系統(tǒng)接口。(2) 軟件/硬件(RW/HW
6、)接口。13 13第六章 輸入輸出系統(tǒng)圖6-2 I/O系統(tǒng)中各種模塊之間的層次視圖14 14第六章 輸入輸出系統(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ú)立性軟件。 15 15第六章 輸入輸出系統(tǒng)6.1.3 I/O系統(tǒng)接口 在I/O系統(tǒng)與高層之間的接口中,根據(jù)設(shè)備類型的不同,又進(jìn)一步分為若干個(gè)接口。在圖6-2中示出了塊設(shè)備接口、流設(shè)備接口和網(wǎng)絡(luò)接口。1. 塊設(shè)備接口(1) 塊設(shè)備。 (2) 隱藏了磁盤的二維結(jié)構(gòu)。(3) 將抽象命令映射為低層操作。 16 16第六章 輸入輸出系統(tǒng)
7、2. 流設(shè)備接口流設(shè)備接口是流設(shè)備管理程序與高層之間的接口。該接口又稱為字符設(shè)備接口,它反映了大部分字符設(shè)備的本質(zhì)特征,用于控制字符設(shè)備的輸入或輸出。(1) 字符設(shè)備。(2) get和put操作。(3) in-control指令。 17 17第六章 輸入輸出系統(tǒng)3. 網(wǎng)絡(luò)通信接口在現(xiàn)代OS中,都提供了面向網(wǎng)絡(luò)的功能。但首先還需要通過某種方式把計(jì)算機(jī)連接到網(wǎng)絡(luò)上。同時(shí)操作系統(tǒng)也必須提供相應(yīng)的網(wǎng)絡(luò)軟件和網(wǎng)絡(luò)通信接口,使計(jì)算機(jī)能通過網(wǎng)絡(luò)與網(wǎng)絡(luò)上的其它計(jì)算機(jī)進(jìn)行通信或上網(wǎng)瀏覽。 18 18第六章 輸入輸出系統(tǒng)6.2 I/O設(shè)備和設(shè)備控制器I/O設(shè)備一般是由執(zhí)行I/O操作的機(jī)械部分和執(zhí)行控制I/O的電子
8、部件組成。通常將這兩部分分開,執(zhí)行I/O操作的機(jī)械部分就是一般的I/O設(shè)備,而執(zhí)行控制I/O的電子部件則稱為設(shè)備控制器或適配器(adapter)。在微型機(jī)和小型機(jī)中的控制器常做成印刷電路卡形式,因而也常稱為控制卡、接口卡或網(wǎng)卡,可將它插入計(jì)算機(jī)的擴(kuò)展槽中。在有的大、中型計(jì)算機(jī)系統(tǒng)中,還配置了I/O通道或I/O處理機(jī)。19 19第六章 輸入輸出系統(tǒng)6.2.1 I/O設(shè)備 1. I/O設(shè)備的類型1) 按使用特性分類2) 按傳輸速率分類2020第六章 輸入輸出系統(tǒng)2. 設(shè)備與控制器之間的接口通常,設(shè)備并不是直接與CPU進(jìn)行通信,而是與設(shè)備控制器通信,因此,在I/O設(shè)備中應(yīng)含有與設(shè)備控制器間的接口,在
9、該接口中有三種類型的信號(hào)(見圖6-3所示),各對(duì)應(yīng)一條信號(hào)線。(1) 數(shù)據(jù)信號(hào)線。(2) 控制信號(hào)線。(3) 狀態(tài)信號(hào)線。21 21第六章 輸入輸出系統(tǒng)圖6-3設(shè)備與控制器間的接口2222第六章 輸入輸出系統(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ò)控制。 2323第六章 輸入輸出系統(tǒng)2. 設(shè)備控制器的組成由于設(shè)備控制器位于CPU與設(shè)備之間,它既要與CPU通信,又要與設(shè)備通信,還應(yīng)具有按照CPU所發(fā)來的命令去控制設(shè)備工作的功能,因此,現(xiàn)有的大多數(shù)控制器都是由以下三部分
10、組成:(1) 設(shè)備控制器與處理機(jī)的接口。(2) 設(shè)備控制器與設(shè)備的接口。(3) I/O邏輯。 2424第六章 輸入輸出系統(tǒng)圖6-4 設(shè)備控制器的組成 2525第六章 輸入輸出系統(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è)置了一些特定的I/O指令。 2626第六章 輸入輸出系統(tǒng)2. 內(nèi)存映像I/O在這種方式中,在編址上不再區(qū)分內(nèi)存單元地址和設(shè)備控制器中的寄存器地址,都采用k。當(dāng)k值處于0n-1范圍時(shí),被認(rèn)為是內(nèi)存地址,若k
11、大于等于n時(shí),被認(rèn)為是某個(gè)控制器的寄存器地址。 2727第六章 輸入輸出系統(tǒng)圖6-5 設(shè)備尋址形式2828第六章 輸入輸出系統(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)。 2929第六章 輸入輸出系統(tǒng)2. 通道類型1) 字節(jié)多路通道(Byte Multiplexor Channel)這是一種按字節(jié)交叉方式工作的通道。它通常都含有許多非分配型子通道,其數(shù)量可從幾十到數(shù)百個(gè),每一個(gè)子通道連接
12、一臺(tái)I/O設(shè)備,并控制該設(shè)備的I/O操作。這些子通道按時(shí)間片輪轉(zhuǎn)方式共享主通道。 3030第六章 輸入輸出系統(tǒng)圖6-6 字節(jié)多路通道的工作原理31 31第六章 輸入輸出系統(tǒng) 2) 數(shù)組選擇通道(Block Selector Channel)字節(jié)多路通道不適于連接高速設(shè)備,這推動(dòng)了按數(shù)組方式進(jìn)行數(shù)據(jù)傳送的數(shù)組選擇通道的形成。 3232第六章 輸入輸出系統(tǒng)3) 數(shù)組多路通道(Block Multiplexor Channel)數(shù)組選擇通道雖有很高的傳輸速率,但它卻每次只允許一個(gè)設(shè)備傳輸數(shù)據(jù)。數(shù)組多路通道是將數(shù)組選擇通道傳輸速率高和字節(jié)多路通道能使各子通道(設(shè)備)分時(shí)并行操作的優(yōu)點(diǎn)相結(jié)合而形成的一種
13、新通道。 3333第六章 輸入輸出系統(tǒng)3. “瓶頸”問題由于通道價(jià)格昂貴,致使機(jī)器中所設(shè)置的通道數(shù)量勢(shì)必較少,這往往又使它成了I/O的瓶頸,進(jìn)而造成整個(gè)系統(tǒng)吞吐量的下降。 3434第六章 輸入輸出系統(tǒng)圖6-7單通路I/O系統(tǒng)3535第六章 輸入輸出系統(tǒng)圖6-8多通路I/O系統(tǒng)3636第六章 輸入輸出系統(tǒng)6.3中斷機(jī)構(gòu)和中斷處理程序?qū)τ诓僮飨到y(tǒng)中的I/O系統(tǒng),本章采取從低層向高層的介紹方法,從本節(jié)開始首先介紹中斷處理程序。中斷在操作系統(tǒng)中有著特殊重要的地位,它是多道程序得以實(shí)現(xiàn)的基礎(chǔ),沒有中斷,就不可能實(shí)現(xiàn)多道程序,因?yàn)檫M(jìn)程之間的切換是通過中斷來完成的。另一方面,中斷也是設(shè)備管理的基礎(chǔ),為了提高
14、處理機(jī)的利用率和實(shí)現(xiàn)CPU與I/O設(shè)備并行執(zhí)行,也必需有中斷的支持。中斷處理程序是I/O系統(tǒng)中最低的一層,它是整個(gè)I/O系統(tǒng)的基礎(chǔ)。3737第六章 輸入輸出系統(tǒng)6.3.1 中斷簡介 1. 中斷和陷入1) 中斷2) 陷入3838第六章 輸入輸出系統(tǒng)2. 中斷向量表和中斷優(yōu)先級(jí)1) 中斷向量表2) 中斷優(yōu)先級(jí)3939第六章 輸入輸出系統(tǒng)3. 對(duì)多中斷源的處理方式 1) 屏蔽(禁止)中斷2) 嵌套中斷4040第六章 輸入輸出系統(tǒng)圖6-9 對(duì)多中斷的處理方式41 41第六章 輸入輸出系統(tǒng)6.3.2 中斷處理程序 當(dāng)一個(gè)進(jìn)程請(qǐng)求I/O 操作時(shí),該進(jìn)程將被掛起,直到I/O設(shè)備完成I/O操作后,設(shè)備控制器便
15、向CPU發(fā)送一個(gè)中斷請(qǐng)求,CPU響應(yīng)后便轉(zhuǎn)向中斷處理程序,中斷處理程序執(zhí)行相應(yīng)的處理,處理完后解除相應(yīng)進(jìn)程的阻塞狀態(tài)。4242第六章 輸入輸出系統(tǒng)圖6-10 中斷現(xiàn)場(chǎng)保護(hù)示意圖4343第六章 輸入輸出系統(tǒng)圖6-11 中斷處理流程4444第六章 輸入輸出系統(tǒng)6.4 設(shè)備驅(qū)動(dòng)程序設(shè)備處理程序通常又稱為設(shè)備驅(qū)動(dòng)程序,它是I/O系統(tǒng)的高層與設(shè)備控制器之間的通信程序,其主要任務(wù)是接收上層軟件發(fā)來的抽象I/O要求,如read或write命令,再把它轉(zhuǎn)換為具體要求后,發(fā)送給設(shè)備控制器,啟動(dòng)設(shè)備去執(zhí)行;反之,它也將由設(shè)備控制器發(fā)來的信號(hào)傳送給上層軟件。由于驅(qū)動(dòng)程序與硬件密切相關(guān),故通常應(yīng)為每一類設(shè)備配置一種驅(qū)
16、動(dòng)程序。例如,打印機(jī)和顯示器需要不同的驅(qū)動(dòng)程序。4545第六章 輸入輸出系統(tǒng)6.4.1 設(shè)備驅(qū)動(dòng)程序概述 1. 設(shè)備驅(qū)動(dòng)程序的功能 (1) 接收由與設(shè)備無關(guān)的軟件發(fā)來的命令和參數(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)求者的請(qǐng)求塊掛在設(shè)備隊(duì)列上等待。(4) 及時(shí)響應(yīng)由設(shè)備控制器發(fā)來的中斷請(qǐng)求,并根據(jù)其中斷類型,調(diào)用相應(yīng)的中斷處理程序進(jìn)行處理。4646第六章 輸入輸出系
17、統(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è)備無關(guān)的軟件和設(shè)備控制器之間通信和轉(zhuǎn)換的程序,具體說,它將抽象的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ì)于不同類型的設(shè)備,應(yīng)配置不同的驅(qū)動(dòng)程序。但可以為相同的多個(gè)終端設(shè)置一個(gè)終端驅(qū)動(dòng)程序。4747第六章 輸入輸出系統(tǒng)(3) 驅(qū)動(dòng)程序與I/O設(shè)備所采用的I/O控制方式緊密相關(guān),常用的I/O控制方式是中斷驅(qū)動(dòng)和DM
18、A方式。(4) 由于驅(qū)動(dòng)程序與硬件緊密相關(guān),因而其中的一部分必須用匯編語言書寫。目前有很多驅(qū)動(dòng)程序的基本部分已經(jīng)固化在ROM中。(5) 驅(qū)動(dòng)程序應(yīng)允許可重入。一個(gè)正在運(yùn)行的驅(qū)動(dòng)程序常會(huì)在一次調(diào)用完成前被再次調(diào)用。4848第六章 輸入輸出系統(tǒng)3. 設(shè)備處理方式 在不同的操作系統(tǒng)中,所采用的設(shè)備處理方式并不完全相同。 4949第六章 輸入輸出系統(tǒng)6.4.2 設(shè)備驅(qū)動(dòng)程序的處理過程設(shè)備驅(qū)動(dòng)程序的主要任務(wù)是啟動(dòng)指定設(shè)備,完成上層指定的I/O工作。但在啟動(dòng)之前,應(yīng)先完成必要的準(zhǔn)備工作,如檢測(cè)設(shè)備狀態(tài)是否為“忙”等。在完成所有的準(zhǔn)備工作后,才向設(shè)備控制器發(fā)送一條啟動(dòng)命令。 5050第六章 輸入輸出系統(tǒng)圖6
19、-12 狀態(tài)寄存器中的格式51 51第六章 輸入輸出系統(tǒng)6.4.3 對(duì)I/O設(shè)備的控制方式對(duì)設(shè)備的控制,早期是使用輪詢的可編程I/O方式,后來發(fā)展為使用中斷的可編程I/O方式。 5252第六章 輸入輸出系統(tǒng)1. 使用輪詢的可編程I/O方式處理機(jī)對(duì)I/O設(shè)備的控制采取輪詢的可編程I/O方式,即在處理機(jī)向控制器發(fā)出一條I/O指令,啟動(dòng)輸入設(shè)備輸入數(shù)據(jù)時(shí),要同時(shí)把狀態(tài)寄存器中的忙/閑標(biāo)志busy置為1,然后便不斷地循環(huán)測(cè)試busy(稱為輪詢)。當(dāng)busy=1時(shí),表示輸入機(jī)尚未輸完一個(gè)字(符),處理機(jī)應(yīng)繼續(xù)對(duì)該標(biāo)志進(jìn)行測(cè)試,直至busy=0,表明輸入機(jī)已將輸入數(shù)據(jù)送入控制器的數(shù)據(jù)寄存器中。于是處理機(jī)將
20、數(shù)據(jù)寄存器中的數(shù)據(jù)取出,送入內(nèi)存指定單元中,這樣便完成了一個(gè)字(符)的I/O。接著再去啟動(dòng)讀下一個(gè)數(shù)據(jù),并置busy=1。 5353第六章 輸入輸出系統(tǒng)圖6-13 程序I/O和中斷驅(qū)動(dòng)方式的流程5454第六章 輸入輸出系統(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í)行原來的任務(wù)。設(shè)備控制器于是按照該命令的要求去控制指定I/O設(shè)備。此時(shí),CPU與I/O設(shè)備并行操作。 5555第六章 輸入輸出系統(tǒng)3. 直接存儲(chǔ)器訪問方式1) 接存儲(chǔ)器訪問方式的引入雖
21、然中斷驅(qū)動(dòng)I/O比程序I/O方式更有效,但它仍是以字(節(jié))為單位進(jìn)行I/O的。每當(dāng)完成一個(gè)字(節(jié))的I/O時(shí),控制器便要向CPU請(qǐng)求一次中斷。 5656第六章 輸入輸出系統(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ù)塊的開始和結(jié)束時(shí),才需CPU干預(yù),整塊數(shù)據(jù)的傳送是在控制器的控制下完成的??梢姡珼MA方式較之中斷驅(qū)動(dòng)方式又進(jìn)一步提高了CPU與I/O設(shè)備的并行操作程度。5757第六章 輸入輸出系統(tǒng)2) DMA控制器的組成DMA控制器由三部分組成:主機(jī)與D
22、MA控制器的接口;DMA控制器與塊設(shè)備的接口;I/O控制邏輯。圖6-14示出了DMA控制器的組成。這里主要介紹主機(jī)與控制器之間的接口。5858第六章 輸入輸出系統(tǒng)圖6-14 DMA控制器的組成5959第六章 輸入輸出系統(tǒng)3) DMA工作過程當(dāng)CPU要從磁盤讀入一數(shù)據(jù)塊時(shí),便向磁盤控制器發(fā)送一條讀命令。該命令被送入命令寄存器CR中。同時(shí),需要將本次要讀入數(shù)據(jù)在內(nèi)存的起始目標(biāo)地址送入內(nèi)存地址寄存器MAR中。 6060第六章 輸入輸出系統(tǒng)圖6-15 DMA方式的工作流程圖61 61第六章 輸入輸出系統(tǒng)4. I/O通道控制方式1) I/O通道控制方式的引入雖然DMA方式比起中斷方式來已經(jīng)顯著地減少了C
23、PU的干預(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)行多次中斷處理才能完成。6262第六章 輸入輸出系統(tǒng)2) 通道程序通道是通過執(zhí)行通道程序并與設(shè)備控制器共同實(shí)現(xiàn)對(duì)I/O設(shè)備的控制的。通道程序是由一系列通道指令(或稱為通道命令)所構(gòu)成的。 6363第六章 輸入輸出系統(tǒng)下面示出了一個(gè)由六條通道指令所構(gòu)成的簡單的通道程序。該程序的功能是將內(nèi)存中不同地址的數(shù)據(jù)寫成多個(gè)記錄。 6464第六章 輸入輸出系統(tǒng)6.
24、5 與設(shè)備無關(guān)的I/O軟件為了方便用戶和提高OS的可適應(yīng)性與可擴(kuò)展性,在現(xiàn)代OS的I/O系統(tǒng)中,都無一例外地增加了與設(shè)備無關(guān)的I/O軟件,以實(shí)現(xiàn)設(shè)備獨(dú)立性,也稱為設(shè)備無關(guān)性。其基本含義是:應(yīng)用程序中所用的設(shè)備,不局限于使用某個(gè)具體的物理設(shè)備。為每個(gè)設(shè)備所配置的設(shè)備驅(qū)動(dòng)程序是與硬件緊密相關(guān)的軟件。 6565第六章 輸入輸出系統(tǒng)6.5.1 與設(shè)備無關(guān)(Device Independence)軟件的基本概念 1. 以物理設(shè)備名使用設(shè)備在早期OS中,應(yīng)用程序在使用I/O設(shè)備時(shí),都使用設(shè)備的物理名稱,這使應(yīng)用程序與系統(tǒng)中的物理設(shè)備直接相關(guān)。 6666第六章 輸入輸出系統(tǒng)2. 引入了邏輯設(shè)備名為了實(shí)現(xiàn)與設(shè)
25、備的無關(guān)性而引入了邏輯設(shè)備和物理設(shè)備兩個(gè)概念。邏輯設(shè)備是抽象的設(shè)備名。 6767第六章 輸入輸出系統(tǒng)3. 邏輯設(shè)備名稱到物理設(shè)備名稱的轉(zhuǎn)換在應(yīng)用程序中,用邏輯設(shè)備名稱使用設(shè)備雖然方便了用戶,但系統(tǒng)卻只識(shí)別物理設(shè)備名稱,因此在實(shí)際執(zhí)行時(shí),還必須使用物理名稱。為此,在系統(tǒng)中,必須具有將邏輯設(shè)備名稱轉(zhuǎn)換為某物理設(shè)備名稱的功能。 6868第六章 輸入輸出系統(tǒng)6.5.2 與設(shè)備無關(guān)的軟件1. 設(shè)備驅(qū)動(dòng)程序的統(tǒng)一接口為了使所有的設(shè)備驅(qū)動(dòng)程序有著統(tǒng)一的接口,一方面,要求每個(gè)設(shè)備驅(qū)動(dòng)程序與OS之間都有著相同的接口,或者相近的接口,這樣會(huì)使添加一個(gè)新的設(shè)備驅(qū)動(dòng)程序變得很容易,同時(shí)在很大程度上方便了開發(fā)人員對(duì)設(shè)備
26、驅(qū)動(dòng)程序的編制。另一方面,要將抽象的設(shè)備名映射到適當(dāng)?shù)尿?qū)動(dòng)程序上,或者說,將抽象的設(shè)備名轉(zhuǎn)換為具體的物理設(shè)備名,并進(jìn)一步可以找到相應(yīng)物理設(shè)備的驅(qū)動(dòng)程序入口。此外,還應(yīng)對(duì)設(shè)備進(jìn)行保護(hù),禁止用戶直接訪問設(shè)備,以防止無權(quán)訪問的用戶使用。6969第六章 輸入輸出系統(tǒng)2. 緩沖管理無論是字符設(shè)備還是塊設(shè)備,它們的運(yùn)行速度都遠(yuǎn)低于CPU的速度。為了緩和CPU和I/O設(shè)備之間的矛盾、提高CPU的利用率,在現(xiàn)代OS中都無一例外地分別為字符設(shè)備和塊設(shè)備配置了相應(yīng)的緩沖區(qū)。緩沖區(qū)有著多種形式,如單緩沖區(qū)、雙緩沖區(qū)、循環(huán)緩沖區(qū)、公用緩沖池等,以滿足不同情況的需要。 7070第六章 輸入輸出系統(tǒng)3. 差錯(cuò)控制由于設(shè)備
27、中有著許多的機(jī)械和電氣部分,因此,它們比主機(jī)更容易出現(xiàn)故障,這就導(dǎo)致I/O操作中的絕大多數(shù)錯(cuò)誤都與設(shè)備有關(guān)。錯(cuò)誤可分為如下兩類:(1) 暫時(shí)性錯(cuò)誤。(2) 持久性錯(cuò)誤。 71 71第六章 輸入輸出系統(tǒng)4. 對(duì)獨(dú)立設(shè)備的分配與回收在系統(tǒng)中有兩類設(shè)備:獨(dú)占設(shè)備和共享設(shè)備。對(duì)于獨(dú)占設(shè)備,為了避免諸進(jìn)程對(duì)獨(dú)占設(shè)備的爭(zhēng)奪,必須由系統(tǒng)來統(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è)備的請(qǐng)求隊(duì)列中等待。等到其它進(jìn)程釋放該設(shè)備時(shí),再將隊(duì)列中
28、的第一個(gè)進(jìn)程喚醒,該進(jìn)程得到設(shè)備后繼續(xù)運(yùn)行。7272第六章 輸入輸出系統(tǒng)5. 獨(dú)立于設(shè)備的邏輯數(shù)據(jù)塊不同類型的設(shè)備,其數(shù)據(jù)交換單位是不同的,讀取和傳輸速率也各不相同,如字符型設(shè)備以單個(gè)字符(字)為單位,塊設(shè)備是以一個(gè)數(shù)據(jù)塊為單位。即使同一類型的設(shè)備,其數(shù)據(jù)交換單位的大小也是有差異的,如不同磁盤由于扇區(qū)大小的不同,可能造成數(shù)據(jù)塊大小的不一致。設(shè)備獨(dú)立性軟件應(yīng)能夠隱藏這些差異而被邏輯設(shè)備使用,并向高層軟件提供大小統(tǒng)一的邏輯數(shù)據(jù)塊。與設(shè)備無關(guān)軟件的功能如圖6-16所示。 7373第六章 輸入輸出系統(tǒng)圖6-16 與設(shè)備無關(guān)軟件的功能層次7474第六章 輸入輸出系統(tǒng)6.5.3 設(shè)備分配系統(tǒng)為實(shí)現(xiàn)對(duì)獨(dú)占設(shè)
29、備的分配,必須在系統(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所示。7575第六章 輸入輸出系統(tǒng)圖6-17 設(shè)備控制表7676第六章 輸入輸出系統(tǒng)2) 控制器控制表、通道控制表和系統(tǒng)設(shè)備表(1) 控制器控制表(COCT)。系統(tǒng)為每一個(gè)控制器都設(shè)置了用于記錄控制器情況的控制器控制表,如圖6-18(a)所示。(2) 通道控制表(CHCT)。每個(gè)通道都有一張通道控制表,如圖6-18(b)所示。(3)
30、 系統(tǒng)設(shè)備表(SDT)。這是系統(tǒng)范圍的數(shù)據(jù)結(jié)構(gòu),記錄了系統(tǒng)中全部設(shè)備的情況,每個(gè)設(shè)備占一個(gè)表目,其中包括有設(shè)備類型、設(shè)備標(biāo)識(shí)符、設(shè)備控制表及設(shè)備驅(qū)動(dòng)程序的入口等項(xiàng),如圖6-18(c)所示。7777第六章 輸入輸出系統(tǒng)圖6-18 COCT、CHCT和SDT表7878第六章 輸入輸出系統(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)程使用。7979第六章 輸入輸出系統(tǒng)2)
31、 設(shè)備分配算法對(duì)設(shè)備分配的算法,通常只采用以下兩種分配算法:(1) 先來先服務(wù)。(2) 優(yōu)先級(jí)高者優(yōu)先。8080第六章 輸入輸出系統(tǒng)3) 設(shè)備分配中的安全性從進(jìn)程運(yùn)行的安全性上考慮,設(shè)備分配有以下兩種方式:(1) 安全分配方式。(2) 不安全分配方式。81 81第六章 輸入輸出系統(tǒng)3. 獨(dú)占設(shè)備的分配程序 1) 基本的設(shè)備分配程序我們通過一個(gè)例子來介紹設(shè)備分配過程。當(dāng)某進(jìn)程提出I/O請(qǐng)求后,系統(tǒng)的設(shè)備分配程序可按下述步驟進(jìn)行設(shè)備分配:(1) 分配設(shè)備。(2) 分配控制器。(3) 分配通道。 8282第六章 輸入輸出系統(tǒng)2) 設(shè)備分配程序的改進(jìn)在上面的例子中,進(jìn)程是以物理設(shè)備名提出I/O請(qǐng)求的。
32、如果所指定的設(shè)備已分配給其它進(jìn)程,則分配失敗?;蛘哒f上面的設(shè)備分配程序不具有與設(shè)備無關(guān)性。為獲得設(shè)備的獨(dú)立性,進(jìn)程應(yīng)使用邏輯設(shè)備名請(qǐng)求I/O。 8383第六章 輸入輸出系統(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)所示。 8484第六章 輸入輸出系統(tǒng)圖6-19 邏輯設(shè)備表8585第六章 輸入輸出系統(tǒng)2. 邏輯設(shè)備表的設(shè)置問題在系統(tǒng)中可采取兩種方式設(shè)置邏輯設(shè)備表: 第一種方式,是在整個(gè)系統(tǒng)中只設(shè)置一張LUT。第二種方式,是為每個(gè)用戶
33、設(shè)置一張LUT。 8686第六章 輸入輸出系統(tǒng)6.6 用戶層的I/O軟件6.6.1 系統(tǒng)調(diào)用與庫函數(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過程。但另一方面,應(yīng)用進(jìn)程在運(yùn)行時(shí),又必須取得OS所提供的服務(wù),否則,應(yīng)用程序幾乎無法運(yùn)行。為了解決此矛盾,OS在用戶層中引入了一個(gè)中介過程系統(tǒng)調(diào)用,應(yīng)用程序可以通過它間接調(diào)用OS中的I/O過程,對(duì)I/O設(shè)備進(jìn)行操作。8787第六章 輸入輸出系統(tǒng)圖6-20 系統(tǒng)調(diào)用的執(zhí)行過程8888第六章 輸入輸出系統(tǒng)2. 庫函數(shù)在C語言以及UNIX系統(tǒng)中,系統(tǒng)調(diào)
34、用(如read)與各系統(tǒng)調(diào)用所使用的庫函數(shù)(如read)之間幾乎是一一對(duì)應(yīng)的。而微軟定義了一套過程,稱為Win32 API的應(yīng)用程序接口(Application Program Interface),程序員利用它們?nèi)〉肙S服務(wù),該接口與實(shí)際的系統(tǒng)調(diào)用并不一一對(duì)應(yīng)。用戶程序通過調(diào)用對(duì)應(yīng)的庫函數(shù)使用系統(tǒng)調(diào)用,這些庫函數(shù)與調(diào)用程序連接在一起,被嵌入在運(yùn)行時(shí)裝入內(nèi)存的二進(jìn)制程序中。8989第六章 輸入輸出系統(tǒng)6.6.2 假脫機(jī)(Spooling)系統(tǒng)1. 假脫機(jī)技術(shù) 在20世紀(jì)50年代,為了緩和CPU的高速性與I/O設(shè)備低速性間的矛盾,而引入了脫機(jī)輸入、脫機(jī)輸出技術(shù)。該技術(shù)是利用專門的外圍控制機(jī),先將
35、低速I/O設(shè)備上的數(shù)據(jù)傳送到高速磁盤上,或者相反。這樣當(dāng)處理機(jī)需要輸入數(shù)據(jù)時(shí),便可以直接從磁盤中讀取數(shù)據(jù),極大地提高了輸入速度。反之,在處理機(jī)需要輸出數(shù)據(jù)時(shí),也可以很快的速度把數(shù)據(jù)先輸出到磁盤上,處理機(jī)便可去做自己的事情。9090第六章 輸入輸出系統(tǒng)2. SPOOLing的組成如前所述,SPOOLing技術(shù)是對(duì)脫機(jī)輸入/輸出系統(tǒng)的模擬,相應(yīng)地,如圖6-21(a)所示,SPOOLing系統(tǒng)建立在通道技術(shù)和多道程序技術(shù)的基礎(chǔ)上,以高速隨機(jī)外存(通常為磁盤)為后援存儲(chǔ)器。SPOOLing的工作原理如圖6-21(b)所示。91 91第六章 輸入輸出系統(tǒng)圖6-21 SPOOLing系統(tǒng)組成及工作原理92
36、92第六章 輸入輸出系統(tǒng)SPOOLing系統(tǒng)主要由以下四部分構(gòu)成:(1) 輸入井和輸出井。(2) 輸入緩沖區(qū)和輸出緩沖區(qū)。(3) 輸入進(jìn)程和輸出進(jìn)程。(4) 井管理程序。9393第六章 輸入輸出系統(tǒng)3. SPOOLing系統(tǒng)的特點(diǎn)(1) 提高了I/O的速度。(2) 將獨(dú)占設(shè)備改造為共享設(shè)備。(3) 實(shí)現(xiàn)了虛擬設(shè)備功能。9494第六章 輸入輸出系統(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) 磁
37、盤緩沖區(qū)。(2) 打印緩沖區(qū)。(3) 假脫機(jī)管理進(jìn)程和假脫機(jī)打印進(jìn)程。9595第六章 輸入輸出系統(tǒng)5. 守護(hù)進(jìn)程(daemon)前面是利用假脫機(jī)系統(tǒng)來實(shí)現(xiàn)打印機(jī)共享的一種方案,人們對(duì)該方案進(jìn)行了某些修改,如取消該方案中的假脫機(jī)管理進(jìn)程,為打印機(jī)建立一個(gè)守護(hù)進(jìn)程,由它執(zhí)行一部分原來由假脫機(jī)管理進(jìn)程實(shí)現(xiàn)的功能,如為用戶在磁盤緩沖區(qū)中申請(qǐng)一個(gè)空閑盤塊,并將要打印的數(shù)據(jù)送入其中,將該盤塊的首址返回給請(qǐng)求進(jìn)程。另一部分由請(qǐng)求進(jìn)程自己完成,每個(gè)要求打印的進(jìn)程首先生成一份要求打印的文件,其中包含對(duì)打印的要求和指向裝有打印輸出數(shù)據(jù)盤塊的指針等信息,然后將用戶請(qǐng)求打印文件放入假脫機(jī)文件隊(duì)列(目錄)中。9696第
38、六章 輸入輸出系統(tǒng)6.7 緩沖區(qū)管理在現(xiàn)代操作系統(tǒng)中,幾乎所有的I/O設(shè)備在與處理機(jī)交換數(shù)據(jù)時(shí)都用了緩沖區(qū)。緩沖區(qū)是一個(gè)存儲(chǔ)區(qū)域,它可以由專門的硬件寄存器組成,但由于硬件的成本較高,容量也較小,一般僅用在對(duì)速度要求非常高的場(chǎng)合,如存儲(chǔ)器管理中所用的聯(lián)想存儲(chǔ)器;設(shè)備控制器中用的數(shù)據(jù)緩沖區(qū)等。 9797第六章 輸入輸出系統(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ù)粒度不匹配的問題。(4) 提高CPU和I/O設(shè)備之間的并行性。9898第六章 輸入輸
39、出系統(tǒng)圖6-22 利用緩沖寄存器實(shí)現(xiàn)緩沖9999第六章 輸入輸出系統(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所示。 100100第六章 輸入輸出系統(tǒng)圖6-23 單緩沖工作示意圖101101第六章 輸入輸出系統(tǒng)2. 雙緩沖區(qū)(Double Buffer)由于緩沖區(qū)是共享資源,生產(chǎn)者與消費(fèi)者在使用緩沖區(qū)時(shí)必須互斥。如果消費(fèi)者尚未取走緩沖區(qū)中的數(shù)據(jù),即使生產(chǎn)者又生產(chǎn)出新的數(shù)據(jù),也無法將它送入緩沖區(qū),生產(chǎn)者等待。如果為生產(chǎn)者與消費(fèi)者設(shè)置了兩個(gè)緩沖區(qū),便能解決這一問題。10
40、2102第六章 輸入輸出系統(tǒng)圖6-24 雙緩沖工作示意圖103103第六章 輸入輸出系統(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)所示。104104第六章 輸入輸出系統(tǒng)圖6-25 雙機(jī)通信時(shí)緩沖區(qū)的設(shè)置105105第六章 輸入輸出系統(tǒng)6.7.3 環(huán)形緩沖區(qū) 1. 環(huán)形緩沖區(qū)的組成(1) 多個(gè)緩沖區(qū)。在環(huán)形緩沖中包
41、括多個(gè)緩沖區(qū),其每個(gè)緩沖區(qū)的大小相同。作為輸入的多緩沖區(qū)可分為三種類型:用于裝輸入數(shù)據(jù)的空緩沖區(qū)R、已裝滿數(shù)據(jù)的緩沖區(qū)G以及計(jì)算進(jìn)程正在使用的現(xiàn)行工作緩沖區(qū)C,如圖6-26所示。106106第六章 輸入輸出系統(tǒng)圖6-26 環(huán)形緩沖區(qū)107107第六章 輸入輸出系統(tǒng)2. 環(huán)形緩沖區(qū)的使用計(jì)算進(jìn)程和輸入進(jìn)程可利用下述兩個(gè)過程來使用形環(huán)緩沖區(qū)。(1) Getbuf過程。(2) Releasebuf過程。108108第六章 輸入輸出系統(tǒng)3. 進(jìn)程之間的同步問題使用輸入循環(huán)緩沖,可使輸入進(jìn)程和計(jì)算進(jìn)程并行執(zhí)行。相應(yīng)地,指針Nexti和指針Nextg將不斷地沿著順時(shí)針方向移動(dòng),這樣就可能出現(xiàn)下述兩種情況:
42、(1) Nexti指針追趕上Nextg指針。(2) Nextg指針追趕上Nexti指針。 109109第六章 輸入輸出系統(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ì)列鏈接指針等。為了管理上的方便,一般將緩沖池中具有相同類型的緩沖區(qū)鏈接成一個(gè)隊(duì)列,于是可形成以下三個(gè)隊(duì)列:(1) 空白緩沖隊(duì)列emq。(2) 輸入隊(duì)列inq。(3) 輸出隊(duì)列outq。 110110第六章 輸入輸出系統(tǒng)2. Getbuf過程和Putb
43、uf過程在數(shù)據(jù)結(jié)構(gòu)課程中,曾介紹過隊(duì)列和對(duì)隊(duì)列進(jìn)行操作的兩個(gè)過程,第一個(gè)是 Addbuf(type,number)過程。該過程用于將由參數(shù)number所指示的緩沖區(qū)B掛在type隊(duì)列上。第二個(gè)是Takebuf(type)過程。它用于從type所指示的隊(duì)列的隊(duì)首摘下一個(gè)緩沖區(qū)。111111第六章 輸入輸出系統(tǒng)3. 緩沖區(qū)的工作方式緩沖區(qū)可以工作在如下四種工作方式,如圖6-27所示。112112第六章 輸入輸出系統(tǒng)圖6-27 緩沖區(qū)的工作方式113113第六章 輸入輸出系統(tǒng)6.8 磁盤存儲(chǔ)器的性能和調(diào)度6.8.1 磁盤性能簡述磁盤設(shè)備是一種相當(dāng)復(fù)雜的機(jī)電設(shè)備,在此僅對(duì)磁盤的某些性能,如數(shù)據(jù)的組織、
44、磁盤的類型和訪問時(shí)間等方面做扼要的闡述。114114第六章 輸入輸出系統(tǒng)1. 數(shù)據(jù)的組織和格式磁盤設(shè)備可包括一個(gè)或多個(gè)物理盤片,每個(gè)磁盤片分一個(gè)或兩個(gè)存儲(chǔ)面(Surface)(見圖6-28(a),每個(gè)盤面上有若干個(gè)磁道(Track),磁道之間留有必要的間隙(Gap)。為使處理簡單起見,在每條磁道上可存儲(chǔ)相同數(shù)目的二進(jìn)制位。 115115第六章 輸入輸出系統(tǒng)圖6-28 磁盤的結(jié)構(gòu)和布局116116第六章 輸入輸出系統(tǒng)圖6-29 磁盤的格式化117117第六章 輸入輸出系統(tǒng)2. 磁盤的類型對(duì)于磁盤,可以從不同的角度進(jìn)行分類。最常見的有:將磁盤分成硬盤和軟盤、單片盤和多片盤、固定頭磁盤和活動(dòng)頭(移動(dòng)
45、頭)磁盤等。下面僅對(duì)固定頭磁盤和移動(dòng)頭磁盤做些介紹。(1) 固定頭磁盤。(2) 移動(dòng)頭磁盤。 118118第六章 輸入輸出系統(tǒng)3. 磁盤訪問時(shí)間磁盤設(shè)備在工作時(shí)以恒定速率旋轉(zhuǎn)。為了讀或?qū)?,磁頭必須能移動(dòng)到所指定的磁道上,并等待所指定的扇區(qū)的開始位置旋轉(zhuǎn)到磁頭下,然后再開始讀或?qū)憯?shù)據(jù)。 119119第六章 輸入輸出系統(tǒng)6.8.2 早期的磁盤調(diào)度算法 1. 先來先服務(wù)(FCFS)這是最簡單的磁盤調(diào)度算法。它根據(jù)進(jìn)程請(qǐng)求訪問磁盤的先后次序進(jìn)行調(diào)度。 120120第六章 輸入輸出系統(tǒng)2. 最短尋道時(shí)間優(yōu)先(SSTF)該算法選擇這樣的進(jìn)程,其要求訪問的磁道與當(dāng)前磁頭所在的磁道距離最近,以使每次的尋道時(shí)間最短,但這種算法不能保證平均尋道時(shí)間最短。 121121第六章 輸入輸出系統(tǒng)圖6-30 FCFS調(diào)度算法 122122第六章 輸入輸出系統(tǒng)圖6-31 SSTF調(diào)度算法 123123第六章 輸入輸出系統(tǒng)6.8.3 基于掃描的磁盤調(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á),且其所要訪問的磁道與磁頭當(dāng)前所在磁道的距離較近,這種新進(jìn)程的I/O請(qǐng)求必然優(yōu)先滿足。在對(duì)SSTF算法略加修改后,則可防止低優(yōu)先級(jí)進(jìn)程出現(xiàn)“饑餓”現(xiàn)象。124
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度合同管理崗位職責(zé)及考核評(píng)價(jià)體系合同
- 二零二五年度一手房買賣合同解除及補(bǔ)償協(xié)議書
- 二零二五年度叉車安全操作規(guī)范協(xié)議及安全責(zé)任追究辦法
- 2025年度生物科技項(xiàng)目出資入股合同
- 二零二五年度門窗行業(yè)技術(shù)培訓(xùn)與咨詢服務(wù)合同協(xié)議
- 政府臨時(shí)工合同工2025年度勞動(dòng)合同履行與監(jiān)督協(xié)議
- 二零二五年度新能源債權(quán)轉(zhuǎn)讓與項(xiàng)目合作合同
- 二零二五年度人工智能研發(fā)團(tuán)隊(duì)勞動(dòng)集體合同(人工智能應(yīng)用)
- 教師教育教學(xué)質(zhì)量評(píng)估合作協(xié)議2025年度范本
- 2025年度高校畢業(yè)生就業(yè)見習(xí)基地協(xié)議
- DeepSeek從入門到精通
- 植保機(jī)械技術(shù)培訓(xùn)課件
- 人工智能賦能職業(yè)教育高質(zhì)量發(fā)展研究
- 2024年水利工程建設(shè)行業(yè)市場(chǎng)發(fā)展監(jiān)測(cè)及投資潛力預(yù)測(cè)報(bào)告
- 崗位職責(zé)心得體會(huì)(2篇)
- 高中地理興趣小組活動(dòng)方案
- 立案委托書撰寫指南讓法律更簡單3篇
- 機(jī)械設(shè)計(jì)基礎(chǔ) 課件 01機(jī)械設(shè)計(jì)概論
- 基于大數(shù)據(jù)的消費(fèi)趨勢(shì)預(yù)測(cè)與分析報(bào)告
- 高三地理一輪復(fù)習(xí)+課件+第三部分+4.4國際合作
- 全國第三屆職業(yè)技能大賽(智能網(wǎng)聯(lián)汽車裝調(diào)運(yùn)維)選拔賽理論考試題庫(含答案)
評(píng)論
0/150
提交評(píng)論