計算機(jī)操作系統(tǒng)第6章_第1頁
計算機(jī)操作系統(tǒng)第6章_第2頁
計算機(jī)操作系統(tǒng)第6章_第3頁
計算機(jī)操作系統(tǒng)第6章_第4頁
計算機(jī)操作系統(tǒng)第6章_第5頁
已閱讀5頁,還剩96頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐ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ū)動程序 6.5 與設(shè)備無關(guān)的I/O軟件 6.6 用戶層的I/O軟件 6.7 緩沖區(qū)管理 6.8 磁盤存儲器的性能和調(diào)度 2 2 第六章 輸入輸出系統(tǒng) 6.1 I/O系統(tǒng)的功能、模型和接口 I/O系統(tǒng)管理的主要對象是I/O設(shè)備和相應(yīng)的設(shè)備控制器。 其最主要的任務(wù)是,完成用戶提出的I/O請求,提高I/O速率, 以及提高設(shè)備的利用率,并能為更高層的進(jìn)程方便地使用這 些設(shè)備提供手段。 3 3 第六章 輸入輸出系統(tǒng) 6.

2、1.1 I/O系統(tǒng)的基本功能 1. 隱藏物理設(shè)備的細(xì)節(jié) 2. 與設(shè)備的無關(guān)性 3. 提高處理機(jī)和I/O設(shè)備的利用率 4. 對I/O設(shè)備進(jìn)行控制 5. 能確保對設(shè)備的正確共享 6. 錯誤處理 4 4 第六章 輸入輸出系統(tǒng) 1. 隱藏物理設(shè)備的細(xì)節(jié) I/O設(shè)備的類型非常多,且彼此間在多方面都有差異, 諸如它們接收和產(chǎn)生數(shù)據(jù)的速度,傳輸方向、粒度、數(shù)據(jù)的 表示形式及可靠性等方面。 不同的設(shè)備需要有不同的命令和參數(shù),如果要求程序員不同的設(shè)備需要有不同的命令和參數(shù),如果要求程序員 或用戶編寫直接面向這些設(shè)備的程序是極其困難的或用戶編寫直接面向這些設(shè)備的程序是極其困難的。因此, I/O系統(tǒng)必須通過對設(shè)備加

3、以適當(dāng)?shù)某橄?,以隱藏掉物理設(shè) 備的實(shí)現(xiàn)細(xì)節(jié),僅向上層進(jìn)程提供少量的、抽象的讀寫命令。 5 5 第六章 輸入輸出系統(tǒng) 2. 與設(shè)備的無關(guān)性 隱藏物理設(shè)備的細(xì)節(jié),在早期的OS中就已實(shí)現(xiàn),它可方 便用戶對設(shè)備的使用。與設(shè)備的無關(guān)性是在較晚時才實(shí)現(xiàn)的, 這是在隱藏物理設(shè)備細(xì)節(jié)的基礎(chǔ)上實(shí)現(xiàn)的。 一方面,用戶不僅可以使用抽象的I/O命令,還可使用 抽象的邏輯設(shè)備名來使用設(shè)備;另一方面,可以有效提高OS 的可移植性和易適應(yīng)性。 6 6 第六章 輸入輸出系統(tǒng) 3. 提高處理機(jī)和I/O設(shè)備的利用率 在一般的系統(tǒng)中,許多I/O設(shè)備間是相互獨(dú)立的,能夠 并行操作,在處理機(jī)與設(shè)備之間也能并行操作。因此,I/O 系統(tǒng)的

4、第三個功能是要盡可能地讓處理機(jī)和I/O設(shè)備并行操 作,以提高它們的利用率。為此,一方面要求處理機(jī)能快速 響應(yīng)用戶的I/O請求,使I/O設(shè)備盡快地運(yùn)行起來;另一方面 也應(yīng)盡量減少在每個I/O設(shè)備運(yùn)行時處理機(jī)的干預(yù)時間。 7 7 第六章 輸入輸出系統(tǒng) 4. 對I/O設(shè)備進(jìn)行控制 對I/O設(shè)備進(jìn)行控制是驅(qū)動程序的功能。目前對I/O設(shè)備 有四種控制方式: 采用輪詢的可編程采用輪詢的可編程I/O方式方式; 采用中采用中 斷的可編程斷的可編程I/O方式方式; 直接存儲器訪問方式直接存儲器訪問方式; I/O通道通道 方式方式。 8 8 第六章 輸入輸出系統(tǒng) 5. 確保對設(shè)備的正確共享 從設(shè)備的共享屬性上,可

5、將系統(tǒng)中的設(shè)備分為如下兩類: (1) 獨(dú)占設(shè)備獨(dú)占設(shè)備,進(jìn)程應(yīng)互斥地訪問這類設(shè)備,即系統(tǒng)一 旦把這類設(shè)備分配給了某進(jìn)程后,便由該進(jìn)程獨(dú)占,直至用 完釋放。典型的獨(dú)占設(shè)備有打印機(jī)、磁帶機(jī)等。系統(tǒng)在對獨(dú) 占設(shè)備進(jìn)行分配時,還應(yīng)考慮到分配的安全性。 (2) 共享設(shè)備共享設(shè)備,是指在一段時間內(nèi)允許多個進(jìn)程同時訪 問的設(shè)備。典型的共享設(shè)備是磁盤,當(dāng)有多個進(jìn)程需對磁盤 執(zhí)行讀、寫操作時,可以交叉進(jìn)行,不會影響到讀、寫的正 確性。 9 9 第六章 輸入輸出系統(tǒng) 6. 錯誤處理 大多數(shù)的設(shè)備都包括了較多的機(jī)械和電氣部分,運(yùn)行時 容易出現(xiàn)錯誤和故障。從處理的角度,可將錯誤分為臨時性臨時性 錯誤錯誤和持久性錯誤持

6、久性錯誤。對于臨時性錯誤,可通過重試操作來糾 正,只有在發(fā)生了持久性錯誤時,才需要向上層報告。 10 10 第六章 輸入輸出系統(tǒng) 6.1.2 I/O系統(tǒng)的層次結(jié)構(gòu)和模型 1. I/O軟件的層次結(jié)構(gòu) 通常把I/O 軟件組織成四個層次,如圖6-1所示。 圖6-1 I/O系統(tǒng)的層次結(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模塊之間的層次視圖。見 圖6-2所示。 1) I/O系統(tǒng)的上、下接口 (1) I/O系統(tǒng)接口。 (2) 軟件/硬件(RW/HW)接口。 12 12 第六章

7、 輸入輸出系統(tǒng) 圖6-2 I/O系統(tǒng)中各種模塊之間的層次視圖 13 13 第六章 輸入輸出系統(tǒng) 2) I/O系統(tǒng)的分層 與前面所述的I/O軟件組織的層次結(jié)構(gòu)相對應(yīng),I/O系統(tǒng) 本身也可分為如下三個層次: (1) 中斷處理程序。 (2) 設(shè)備驅(qū)動程序。 (3) 設(shè)備獨(dú)立性軟件。 14 14 第六章 輸入輸出系統(tǒng) 6.1.3 I/O系統(tǒng)接口 在I/O系統(tǒng)與高層之間的接口中,根據(jù)設(shè)備類型的不同, 又進(jìn)一步分為若干個接口。在圖6-2中示出了塊設(shè)備接口塊設(shè)備接口、 流設(shè)備接口流設(shè)備接口和網(wǎng)絡(luò)接口網(wǎng)絡(luò)接口。 1. 塊設(shè)備接口 (1) 塊設(shè)備。數(shù)據(jù)的存取和傳輸都是以數(shù)據(jù)塊為單位。 (2) 隱藏了磁盤的二維結(jié)

8、構(gòu)。 (3) 將抽象命令映射為低層操作。 15 15 第六章 輸入輸出系統(tǒng) 2. 流設(shè)備接口 流設(shè)備接口是流設(shè)備管理程序與高層之間的接口。該接 口又稱為字符設(shè)備接口字符設(shè)備接口,它反映了大部分字符設(shè)備的本質(zhì)特 征,用于控制字符設(shè)備的輸入或輸出控制字符設(shè)備的輸入或輸出。 (1) 字符設(shè)備。 (2) get和put操作。 (3) in-control指令。 16 16 第六章 輸入輸出系統(tǒng) 3. 網(wǎng)絡(luò)通信接口 在現(xiàn)代OS中,都提供了面向網(wǎng)絡(luò)的功能。但首先還需要 通過某種方式把計算機(jī)連接到網(wǎng)絡(luò)上。同時操作系統(tǒng)也必須 提供相應(yīng)的網(wǎng)絡(luò)軟件和網(wǎng)絡(luò)通信接口,使計算機(jī)能通過網(wǎng)絡(luò) 與網(wǎng)絡(luò)上的其它計算機(jī)進(jìn)行通信或

9、上網(wǎng)瀏覽。 17 17 第六章 輸入輸出系統(tǒng) 6.2 I/O設(shè)備和設(shè)備控制器 I/O設(shè)備一般是由執(zhí)行I/O操作的機(jī)械部分機(jī)械部分和執(zhí)行控制I/O 的電子部件電子部件組成。通常將這兩部分分開,執(zhí)行I/O操作的機(jī) 械部分就是一般的I/O設(shè)備,而執(zhí)行控制I/O的電子部件則稱 為設(shè)備控制器設(shè)備控制器或適配器適配器(adapter)。在微型機(jī)和小型機(jī)中的控 制器常做成印刷電路卡形式,因而也常稱為控制卡、接口卡 或網(wǎng)卡,可將它插入計算機(jī)的擴(kuò)展槽中。在有的大、中型計 算機(jī)系統(tǒng)中,還配置了I/O通道或I/O處理機(jī)。 18 18 第六章 輸入輸出系統(tǒng) 6.2.1 I/O設(shè)備 1. I/O設(shè)備的類型 1) 按使用

10、特性分類 (1) 存儲設(shè)備。也稱外存、輔存,是存儲信息的主要 設(shè)備。 (2) I/O設(shè)備。又可分為輸入設(shè)備,輸出設(shè)備和交互式 設(shè)備。 2) 按傳輸速率分類 可分為低速(1102字節(jié))、 中速(103105)、高 速(105109)三類。 19 19 第六章 輸入輸出系統(tǒng) 2. 設(shè)備與控制器之間的接口 通常,設(shè)備并不是直接與CPU進(jìn)行通信,而是與設(shè)備控 制器通信,因此,在I/O設(shè)備中應(yīng)含有與設(shè)備控制器間的接 口,在該接口中有三種類型的信號,各對應(yīng)一條信號線。 (1) 數(shù)據(jù)信號線數(shù)據(jù)信號線。傳送數(shù)據(jù)信號,對輸入而言,是由設(shè) 備發(fā)送給設(shè)備控制器的;對輸出而言,是由設(shè)備控制器所接 收的比特流。 (2)

11、 控制信號線控制信號線。作為設(shè)備控制器向I/O設(shè)備發(fā)送控制信 號的通路。由設(shè)備控制器發(fā)送給設(shè)備,用于規(guī)定設(shè)備操作的 信號。 (3) 狀態(tài)信號線狀態(tài)信號線。用于傳送指示設(shè)備的當(dāng)前狀態(tài)的信號。 2020 第六章 輸入輸出系統(tǒng) 圖6-3設(shè)備與控制器間的接口 21 21 第六章 輸入輸出系統(tǒng) 6.2.2 設(shè)備控制器 1. 設(shè)備控制器的基本功能 (1) 接收和識別命令。 (2) 數(shù)據(jù)交換。 (3) 標(biāo)識和報告設(shè)備的狀態(tài)。 (4) 地址識別。 (5) 數(shù)據(jù)緩沖區(qū)。 (6) 差錯控制。 2222 第六章 輸入輸出系統(tǒng) 2. 設(shè)備控制器的組成 由于設(shè)備控制器位于CPU與設(shè)備之間,它既要與CPU通 信,又要與設(shè)

12、備通信,還應(yīng)具有按照CPU所發(fā)來的命令去控 制設(shè)備工作的功能,因此,現(xiàn)有的大多數(shù)控制器都是由以下 三部分組成: (1) 設(shè)備控制器與處理機(jī)的接口。 (2) 設(shè)備控制器與設(shè)備的接口。 (3) I/O邏輯。 2323 第六章 輸入輸出系統(tǒng) 設(shè)備控制器的組成圖示 I/O 邏輯 控制器 與設(shè)備 接口 1 控制器 與設(shè)備 接口 i 數(shù)據(jù)寄存器 控制/狀態(tài) 寄存器 CPU與控制器接口控制器與設(shè)備接口 數(shù)據(jù)線 地址線 控制線 數(shù)據(jù) 狀態(tài) 控制 數(shù)據(jù) 狀態(tài) 控制 用于實(shí)現(xiàn)對設(shè)備的控制。主要任務(wù)是: 對處理機(jī)發(fā)送給控制器的I/O命令進(jìn)行譯碼;對 發(fā)送給控制器的地址進(jìn)行譯碼,根據(jù)所譯出的 命令對所選設(shè)備進(jìn)行控制。

13、 2424 第六章 輸入輸出系統(tǒng) 6.2.3 內(nèi)存映像I/O 驅(qū)動程序?qū)⒊橄竺钷D(zhuǎn)換出一系列具體命令、參數(shù) 等數(shù)據(jù),裝入設(shè)備控制器的相應(yīng)寄存器,由控制器來執(zhí) 行這些命令,具體實(shí)施對I/O設(shè)備的控制,這一工作可用 兩種方法來完成。 1. 利用特定的利用特定的I/O指令指令:訪問內(nèi)存和訪問設(shè)備需要兩 種不同的指令。 2. 內(nèi)存映像內(nèi)存映像I/O:該方式統(tǒng)一了對內(nèi)存和對控制器的 訪問的方法,簡化了I/O編程。基本做法是,在編址上不 再區(qū)分內(nèi)存單元地址和設(shè)備控制器地址,都采用k。當(dāng) 0kn-1時,認(rèn)為是內(nèi)存地址,當(dāng)kn時,認(rèn)為是某個控 制器的寄存器地址。 2525 第六章 輸入輸出系統(tǒng) 圖6-5 設(shè)備

14、尋址形式 2626 第六章 輸入輸出系統(tǒng) 6.2.4I/O通道 1. I/O通道設(shè)備的引入 雖然在CPU與I/O設(shè)備之間增加了設(shè)備控制器后,已能大 大減少CPU對I/O的干預(yù),但當(dāng)主機(jī)所配置的外設(shè)很多時, CPU的負(fù)擔(dān)仍然很重。為此,在CPU和設(shè)備控制器之間又增 設(shè)了I/O通道(I/O Channel)。 一些原來由CPU處理的I/O任務(wù)轉(zhuǎn)由通道承擔(dān),把CPU從 繁雜的I/O任務(wù)中解脫出來。實(shí)際上,通道是一種特殊的處 理機(jī),通過執(zhí)行通道程序來控制I/O操作。但是:它指令類 型簡單,主要局限于與I/O操作有關(guān)的指令;通道沒有內(nèi)存。 2727 第六章 輸入輸出系統(tǒng) 2. 通道類型 1) 字節(jié)多路通

15、道(Byte Multiplexor Channel) 這是一種按字節(jié)交叉字節(jié)交叉方式工作的通道。它通常都含有許 多非分配型子通道,其數(shù)量可從幾十到數(shù)百個,每一個子通 道連接一臺I/O設(shè)備,并控制該設(shè)備的I/O操作。這些子通道這些子通道 按時間片輪轉(zhuǎn)方式共享主通道按時間片輪轉(zhuǎn)方式共享主通道。 2828 第六章 輸入輸出系統(tǒng) 圖6-6 字節(jié)多路通道的工作原理 2929 第六章 輸入輸出系統(tǒng) 2) 數(shù)組選擇通道(Block Selector Channel) 字節(jié)多路通道不適于連接高速設(shè)備,這推動了按數(shù)組方 式進(jìn)行數(shù)據(jù)傳送的數(shù)組選擇通道的形成。 但該通道只含有一 個分配型子通道,在一段時間內(nèi)只能執(zhí)

16、行一道通道程序,控 制一臺設(shè)備進(jìn)行數(shù)據(jù)傳送。 3030 第六章 輸入輸出系統(tǒng) 3) 數(shù)組多路通道(Block Multiplexor Channel) 數(shù)組選擇通道雖有很高的傳輸速率,但它卻每次只允許 一個設(shè)備傳輸數(shù)據(jù)。數(shù)組多路通道是將數(shù)組選擇通道傳輸速 率高和字節(jié)多路通道能使各子通道(設(shè)備)分時并行操作的優(yōu) 點(diǎn)相結(jié)合而形成的一種新通道。 含有多個非分配型子通道, 具有很高的傳速率,還能獲得令人滿意的通道利用率。 31 31 第六章 輸入輸出系統(tǒng) 3. “瓶頸”問題 由于通道價格昂貴,致使機(jī)器中所設(shè)置的通道數(shù)量勢必 較少,這往往又使它成了I/O的瓶頸,進(jìn)而造成整個系統(tǒng)吞 吐量的下降。 圖6-7

17、單通路I/O系統(tǒng) 3232 第六章 輸入輸出系統(tǒng) 一種解決方法:一種解決方法:一個設(shè)備連接到多個控制器上,一個控制器 又連接到多個通道上,多通路多通路方式。 圖6-8多通路I/O系統(tǒng) 3333 第六章 輸入輸出系統(tǒng) 6.3中斷機(jī)構(gòu)和中斷處理程序 對于操作系統(tǒng)中的I/O系統(tǒng),本章采取從低層向高層的 介紹方法,從本節(jié)開始首先介紹中斷處理程序。中斷在操作 系統(tǒng)中有著特殊重要的地位,它是多道程序得以實(shí)現(xiàn)的基礎(chǔ), 沒有中斷,就不可能實(shí)現(xiàn)多道程序,因為進(jìn)程之間的切換是進(jìn)程之間的切換是 通過中斷來完成通過中斷來完成的。另一方面,中斷也是設(shè)備管理的基礎(chǔ)中斷也是設(shè)備管理的基礎(chǔ), 為了提高處理機(jī)的利用率和實(shí)現(xiàn)CP

18、U與I/O設(shè)備并行執(zhí)行,也 必需有中斷的支持。中斷處理程序是中斷處理程序是I/O系統(tǒng)中最低的一層,系統(tǒng)中最低的一層, 它是整個它是整個I/O系統(tǒng)的基礎(chǔ)系統(tǒng)的基礎(chǔ)。 3434 第六章 輸入輸出系統(tǒng) 6.3.1 中斷簡介 1. 中斷和陷入 1) 中斷:是指CPU對I/O設(shè)備發(fā)來的中斷信號的一種響 應(yīng),外中斷。 2) 陷入:由CPU內(nèi)部事件所引起的中斷,內(nèi)中斷。 3535 第六章 輸入輸出系統(tǒng) 2. 中斷向量表和中斷優(yōu)先級 1) 中斷向量表:通常,每種設(shè)備都配置了中斷處理程序, 并把該程序的入口地址存放在一個叫做中斷向量表的表項中, 且為每個設(shè)備的中斷請求規(guī)定一個中斷號,直接對應(yīng)于中斷 向量表中的一

19、個表項中。 中斷請求中斷號中斷處理程序的入口地址 轉(zhuǎn)入中斷 2) 中斷優(yōu)先級:存在多個中斷信號源,需設(shè)置不同的優(yōu) 先級。 3636 第六章 輸入輸出系統(tǒng) 3. 對多中斷源的處理方式 當(dāng)處理器正在處理一個中斷時,又來了一個新的中斷請 求,如何處理? 1) 屏蔽(禁止)中斷:此時屏蔽所有其它中斷,暫時不予 理睬,讓其等待。該方法中,所有中斷按順利依次處理。 2) 嵌套中斷:a) 多個中斷請求時,CPU優(yōu)先響應(yīng)最高優(yōu) 先級的中斷;b) 高優(yōu)先級中斷請求可以搶占正在運(yùn)行的低優(yōu) 先級中斷的處理機(jī)。 3737 第六章 輸入輸出系統(tǒng) 圖6-9 對多中斷的處理方式 3838 第六章 輸入輸出系統(tǒng) 6.3.2

20、中斷處理程序 當(dāng)一個進(jìn)程請求I/O 操作時,該進(jìn)程將被掛起,直到I/O 設(shè)備完成I/O操作后,設(shè)備控制器便向CPU發(fā)送一個中斷請求, CPU響應(yīng)后便轉(zhuǎn)向中斷處理程序,中斷處理程序執(zhí)行相應(yīng)的 處理,處理完后解除相應(yīng)進(jìn)程的阻塞狀態(tài)。中斷處理程序的 處理過程包括如下步驟: (1) 測定是否有未響應(yīng)的中斷信號;(2) 保護(hù)被中斷進(jìn)程 的CPU現(xiàn)場;(3) 轉(zhuǎn)入相應(yīng)的設(shè)備處理程序;(4) 中斷處理; (5) 恢復(fù)CPU現(xiàn)場并退出中斷。 3939 第六章 輸入輸出系統(tǒng) 39 中斷處理流程 喚醒被阻塞的喚醒被阻塞的 驅(qū)動程序進(jìn)程驅(qū)動程序進(jìn)程 中斷請 求信號 保護(hù)被中斷進(jìn)保護(hù)被中斷進(jìn) 程的程的CPU環(huán)境環(huán)境

21、分析中斷原因分析中斷原因,轉(zhuǎn)入轉(zhuǎn)入 相應(yīng)的中斷處理程序相應(yīng)的中斷處理程序 終端中斷終端中斷 處理程序處理程序 打印機(jī)中斷打印機(jī)中斷 處理程序處理程序 恢復(fù)被中斷進(jìn)程的恢復(fù)被中斷進(jìn)程的CPU現(xiàn)場現(xiàn)場 返回被中斷的進(jìn)程返回被中斷的進(jìn)程,繼續(xù)執(zhí)行繼續(xù)執(zhí)行 4040 第六章 輸入輸出系統(tǒng) 6.4 設(shè)備驅(qū)動程序 設(shè)備處理程序設(shè)備處理程序通常又稱為設(shè)備驅(qū)動程序設(shè)備驅(qū)動程序,它是I/O系統(tǒng) 的高層與設(shè)備控制器之間的通信程序,其主要任務(wù)是接收上 層軟件發(fā)來的抽象I/O要求,如read或write命令,再把它轉(zhuǎn)換 為具體要求后,發(fā)送給設(shè)備控制器,啟動設(shè)備去執(zhí)行;反之, 它也將由設(shè)備控制器發(fā)來的信號傳送給上層軟件

22、。由于驅(qū)動由于驅(qū)動 程序與硬件密切相關(guān),故通常應(yīng)為每一類設(shè)備配置一種驅(qū)動程序與硬件密切相關(guān),故通常應(yīng)為每一類設(shè)備配置一種驅(qū)動 程序程序。例如,打印機(jī)和顯示器需要不同的驅(qū)動程序。 41 41 第六章 輸入輸出系統(tǒng) 6.4.1 設(shè)備驅(qū)動程序概述 1. 設(shè)備驅(qū)動程序的功能 (1) 接收由與設(shè)備無關(guān)的軟件發(fā)來的命令和參數(shù),并將命將命 令中的抽象要求轉(zhuǎn)換為與設(shè)備相關(guān)的低層操作序列令中的抽象要求轉(zhuǎn)換為與設(shè)備相關(guān)的低層操作序列。 (2) 檢查用戶檢查用戶I/O請求的合法性請求的合法性,了解I/O設(shè)備的工作狀態(tài), 傳遞與I/O設(shè)備操作有關(guān)的參數(shù),設(shè)置設(shè)備的工作方式設(shè)置設(shè)備的工作方式。 (3) 發(fā)出發(fā)出I/O命

23、令命令,如果設(shè)備空閑,便立即啟動I/O設(shè)備, 完成指定的I/O操作;如果設(shè)備忙碌,則將請求者的請求塊掛 在設(shè)備隊列上等待。 (4) 及時響應(yīng)由設(shè)備控制器發(fā)來的中斷請求及時響應(yīng)由設(shè)備控制器發(fā)來的中斷請求,并根據(jù)其中 斷類型,調(diào)用相應(yīng)的中斷處理程序進(jìn)行處理。 4242 第六章 輸入輸出系統(tǒng) 2. 設(shè)備驅(qū)動程序的特點(diǎn) 設(shè)備驅(qū)動程序?qū)儆诘图壍南到y(tǒng)例程,它與一般的應(yīng)用程 序及系統(tǒng)程序之間有下述明顯差異: (1) 驅(qū)動程序是實(shí)現(xiàn)在與設(shè)備無關(guān)的軟件和設(shè)備控制器 之間通信和轉(zhuǎn)換的程序。 (2) 驅(qū)動程序與設(shè)備控制器和I/O設(shè)備的硬件特性緊密相 關(guān)。對于不同類型的設(shè)備,應(yīng)配置不同的驅(qū)動程序。 (3) 驅(qū)動程序與

24、I/O設(shè)備所采用的I/O控制方式緊密相關(guān)。 (4) 驅(qū)動程序中的一部分程序必須用匯編語言書寫,目 前有很多驅(qū)動程序,其基本部分已固化在ROM。 (5) 驅(qū)動程序應(yīng)允許可重入。 4343 第六章 輸入輸出系統(tǒng) 3. 設(shè)備處理方式 根據(jù)在設(shè)備處理時是否設(shè)置進(jìn)程及設(shè)置什么樣的進(jìn)程, 其方式可分為三類: (1) 為每一類設(shè)備設(shè)置一個進(jìn)程,該進(jìn)程專門執(zhí)行這類 設(shè)備的I/O操作。 (2) 在整個系統(tǒng)中設(shè)置一個I/O進(jìn)程,專門負(fù)責(zé)對系統(tǒng)中 所有各類設(shè)備的I/O操作。也可以設(shè)置一個輸入進(jìn)程和一個 輸出進(jìn)程。 (3) 不設(shè)置專門的設(shè)備處理進(jìn)程,而是為各類設(shè)備設(shè)置 相應(yīng)的設(shè)備處理程序,供用戶進(jìn)程或系統(tǒng)進(jìn)程調(diào)用。

25、4444 第六章 輸入輸出系統(tǒng) 6.4.2 設(shè)備驅(qū)動程序的處理過程 設(shè)備驅(qū)動程序的主要任務(wù)是啟動指定設(shè)備。但在啟動之 前還必須完成必要的準(zhǔn)備工作,在完成所有的準(zhǔn)備工作后, 才向設(shè)備控制器發(fā)送一條啟動命令。其處理過程是: (1) 將抽象要求轉(zhuǎn)換為具體要求; (2) 對服務(wù)請求進(jìn)行校驗; (3) 檢查設(shè)備的狀態(tài); (4) 傳送必要的參數(shù); (5) 啟動I/O設(shè)備。 驅(qū)動程序發(fā)出I/O命令后,基本的I/O是在設(shè)備控制器的 控制下進(jìn)行的。通常,I/O操作所要完成的工作較多,需要 一定的時間,此時驅(qū)動程序進(jìn)程把自己阻塞起來,直至中斷 到來時才將它喚醒。 4545 第六章 輸入輸出系統(tǒng) 6.4.3 對I/

26、O設(shè)備的控制方式 在I/O控制的整個發(fā)展過程中,都始終貫穿著的宗旨是: 盡量減少主機(jī)對盡量減少主機(jī)對I/O控制的干預(yù),把主機(jī)從繁雜的控制的干預(yù),把主機(jī)從繁雜的I/O控制事控制事 務(wù)中解脫出來,以便主機(jī)更多地去完成數(shù)據(jù)處理任務(wù)務(wù)中解脫出來,以便主機(jī)更多地去完成數(shù)據(jù)處理任務(wù)。I/O 控制的發(fā)展經(jīng)歷了使用輪詢的可編程I/O方式、使用中斷的 可編程I/O方式、DMA控制方式和通道控制方式。 4646 第六章 輸入輸出系統(tǒng) 1. 使用輪詢的可編程使用輪詢的可編程I/O方式方式 向向I/O控制器控制器 發(fā)讀命令發(fā)讀命令 讀讀I/O控制器控制器 的狀態(tài)的狀態(tài) 未就緒 就緒 CPUI/O I/OCPU 向存儲

27、器向存儲器 中寫字中寫字 從從I/O控制器控制器 中讀入字中讀入字 檢查狀態(tài)?檢查狀態(tài)? 傳送完成?傳送完成? I/OCPU CPU內(nèi)存內(nèi)存 出錯出錯 N Y 下條指令下條指令 4747 第六章 輸入輸出系統(tǒng) 2. 使用中斷的可編程I/O方式 當(dāng)前,對I/O設(shè)備的控制,廣泛采用中斷的可編程I/O方 式,即當(dāng)某進(jìn)程要啟動某個I/O設(shè)備工作時,便由CPU向相應(yīng) 的設(shè)備控制器發(fā)出一條I/O命令,然后立即返回繼續(xù)執(zhí)行原 來的任務(wù)。設(shè)備控制器于是按照該命令的要求去控制指定 I/O設(shè)備。此時,CPU與I/O設(shè)備并行操作。 4848 第六章 輸入輸出系統(tǒng) 2. 使用中斷的可編程使用中斷的可編程I/O控制方式

28、控制方式 向向I/O控制器控制器 發(fā)讀命令發(fā)讀命令 讀讀I/O控制器控制器 的狀態(tài)的狀態(tài) 就緒 CPUI/O I/OCPU 向內(nèi)存向內(nèi)存 中寫字中寫字 從從I/O控制器控制器 中讀字中讀字 檢查狀態(tài)?檢查狀態(tài)? 傳送完成?傳送完成? I/OCPU CPU內(nèi)存內(nèi)存 出錯出錯 N Y 下條指令下條指令 CPU做其他事做其他事 中斷中斷 4949 第六章 輸入輸出系統(tǒng) 3. 直接存儲器訪問方式 1) 接存儲器訪問方式的引入:前述的兩種I/O方式是以 字(節(jié))為單位進(jìn)行I/O的,每完成一個字的I/O,控制器便要 向CPU請求一次中斷。這種方式用于塊設(shè)備的I/O,其效率是 極低的。為進(jìn)一步減少CPU對I

29、/O的干預(yù),而引入DMA方式 ,其特點(diǎn)有: (1) 數(shù)據(jù)傳送的基本單位是數(shù)據(jù)塊; (2) 所傳送的數(shù)據(jù)是從設(shè)備直接送入內(nèi)存,或相反; (3) 僅在傳送一個或多個數(shù)據(jù)塊的開始和結(jié)束時,才需 CPU干預(yù),整塊數(shù)據(jù)的傳送是在控制器的控制下完成的。 5050 第六章 輸入輸出系統(tǒng) 2) DMA控制器的組成 DMA控制器由三部分組成: (1) 主機(jī)與DMA控制器的接口; (2) DMA控制器與塊設(shè)備的接口; (3) I/O控制邏輯。 51 51 第六章 輸入輸出系統(tǒng) 直接存儲器訪問DMA控制方式 DMA控制器的組成控制器的組成 I/O 控 制 邏 輯 DR MAR DC CR CPU count DMA

30、控制器 內(nèi)存 系統(tǒng)總線 命令命令 DMA控制器的三 個組成部分: (1)主機(jī)與DMA控 制器的接口。 (2)DMA控制器與 塊設(shè)備的接口。 (3)I/O控制邏輯。 命令/狀態(tài)寄存器: 用于接受從CPU 發(fā)來的I/O命令或 有關(guān)控制信息, 或設(shè)備的狀態(tài)。 主機(jī)控 制器接口 控制器與 塊設(shè)備接口 數(shù)據(jù)寄存器: 暫存從設(shè)備 到內(nèi)存或從 內(nèi)存到設(shè)備 的數(shù)據(jù)。 數(shù)據(jù)計數(shù)器: 用于存放本 次CPU要讀 或?qū)懙淖?(節(jié))數(shù)。 內(nèi)存地址寄存器: 用于存放數(shù)據(jù)從 設(shè)備傳送到內(nèi)存 的目標(biāo)地址,或 由內(nèi)存到設(shè)備的 內(nèi)存源地址。 5252 第六章 輸入輸出系統(tǒng) 直接存儲器訪問DMA控制方式 設(shè)置設(shè)置MAR和和DC初值

31、初值 啟動啟動DMA傳送命令傳送命令 挪用存儲器周期挪用存儲器周期 傳送數(shù)據(jù)字傳送數(shù)據(jù)字 存儲器地址增存儲器地址增1 字計數(shù)寄存器減字計數(shù)寄存器減1 DC=0? 請求中斷請求中斷 在繼續(xù)執(zhí)行用在繼續(xù)執(zhí)行用 戶程序的同時,戶程序的同時, 準(zhǔn)備又一次傳送準(zhǔn)備又一次傳送 Y N 工作過程:工作過程: 5353 第六章 輸入輸出系統(tǒng) 4. I/O通道控制方式 1) I/O通道控制方式的引入 雖然DMA方式比起中斷方式來已經(jīng)顯著地減少了CPU的 干預(yù),但CPU每發(fā)出一條I/O指令,也只能去讀(或?qū)?一個連 續(xù)的數(shù)據(jù)塊。而當(dāng)我們需要一次去讀多個數(shù)據(jù)塊且將它們分 別傳送到不同的內(nèi)存區(qū)域,或者相反時,則須由C

32、PU分別發(fā) 出多條I/O指令及進(jìn)行多次中斷處理才能完成。 I/O通道控制方式的引入,把DMA對一個數(shù)據(jù)塊的讀寫 為單位的干預(yù)減少為對一組數(shù)據(jù)塊的讀寫及有關(guān)控制和管理 為單位的干預(yù)。 5454 第六章 輸入輸出系統(tǒng) 實(shí)現(xiàn)了CPU、通道和I/O設(shè)備三者間的并行操作。進(jìn)行讀 寫操作及有關(guān)控制時,CPU只需向I/O通道發(fā)送一條I/O指令, 給出要執(zhí)行通道程序的首地址和需要訪問的I/O設(shè)備,通道 接到指定后,執(zhí)行通道程序便可完成該工作。 2) 通道程序 通道是通過執(zhí)行通道程序并與設(shè)備控制器共同實(shí)現(xiàn)對 I/O設(shè)備的控制的。通道程序是由一系列通道指令(或稱為通 道命令)所構(gòu)成的。 5555 第六章 輸入輸出

33、系統(tǒng) 6.5 與設(shè)備無關(guān)的I/O軟件 設(shè)備獨(dú)立性也稱設(shè)備無關(guān)性。其基本含義是:應(yīng)用程序 獨(dú)立于具體使用的物理設(shè)備,使用邏輯設(shè)備名來請求某類設(shè) 備,系統(tǒng)在執(zhí)行時,則使用該類設(shè)備的物理設(shè)備名。 驅(qū)動程序是一個與硬件(或設(shè)備)緊密相關(guān)的軟件,為 實(shí)現(xiàn)設(shè)備獨(dú)立性,必須再在驅(qū)動程序之上設(shè)置一層設(shè)備獨(dú)立 性軟件。 5656 第六章 輸入輸出系統(tǒng) 6.5.1 與設(shè)備無關(guān)(Device Independence)軟件的基本概念 1. 以物理設(shè)備名使用設(shè)備。在早期OS中,應(yīng)用程序在 使用I/O設(shè)備時,都使用設(shè)備的物理名稱,這使應(yīng)用程序與 系統(tǒng)中的物理設(shè)備直接相關(guān)。 2. 引入了邏輯設(shè)備名。為了實(shí)現(xiàn)與設(shè)備的無關(guān)性

34、而引 入了邏輯設(shè)備和物理設(shè)備兩個概念。邏輯設(shè)備是抽象的設(shè)備 名。 3. 邏輯設(shè)備名稱到物理設(shè)備名稱的轉(zhuǎn)換。在應(yīng)用程序 中,用邏輯設(shè)備名稱使用設(shè)備雖然方便了用戶,但系統(tǒng)卻只 識別物理設(shè)備名稱,因此在實(shí)際執(zhí)行時,還必須使用物理名 稱。為此,在系統(tǒng)中,必須具有將邏輯設(shè)備名稱轉(zhuǎn)換為某物 理設(shè)備名稱的功能。 5757 第六章 輸入輸出系統(tǒng) 6.5.2 與設(shè)備無關(guān)的軟件 實(shí)現(xiàn)與設(shè)備無關(guān)性的軟件是I/O系統(tǒng)高層軟件,其下是 設(shè)備驅(qū)動程序。在與設(shè)備無關(guān)的軟件中,包括了執(zhí)行所有設(shè) 備公有操作的軟件: 1. 設(shè)備驅(qū)動程序的統(tǒng)一接口,將邏輯設(shè)備名映射為物理 設(shè)備名,進(jìn)一步可找到相應(yīng)物理設(shè)備的驅(qū)動程序,對設(shè)備進(jìn) 行保

35、護(hù),禁止用戶直接訪問設(shè)備; 2. 緩沖管理; 3. 差錯控制; 4. 獨(dú)占設(shè)備的分配與回收; 5. 提供獨(dú)立于設(shè)備的邏輯數(shù)據(jù)塊。 5858 第六章 輸入輸出系統(tǒng) 6.5.3 設(shè)備分配 在多道程序環(huán)境下,系統(tǒng)中的設(shè)備不允許用戶自行使用,系統(tǒng)中的設(shè)備不允許用戶自行使用, 而必須由系統(tǒng)分配而必須由系統(tǒng)分配。系統(tǒng)為實(shí)現(xiàn)對獨(dú)占設(shè)備的分配,必須在 系統(tǒng)中配置相應(yīng)的數(shù)據(jù)結(jié)構(gòu)。 1. 設(shè)備分配中的數(shù)據(jù)結(jié)構(gòu) 進(jìn)行設(shè)備分配時,通常借助于一些表格表格的幫助。表格中 記錄了相應(yīng)設(shè)備或控制器的狀態(tài)相應(yīng)設(shè)備或控制器的狀態(tài)以及對設(shè)備或控制器進(jìn)行控對設(shè)備或控制器進(jìn)行控 制所需的信息制所需的信息。在進(jìn)行設(shè)備分配時需要如下的數(shù)據(jù)

36、結(jié)構(gòu)。 1) 設(shè)備控制表DCT 系統(tǒng)為每一個設(shè)備都配置了一張設(shè)備控制表,用于記錄 設(shè)備的情況,如圖6-17所示。 5959 第六章 輸入輸出系統(tǒng) 1) 設(shè)備控制表DCT:系統(tǒng)為每一個設(shè)備都設(shè)置一張設(shè)備 控制表,用于記錄本設(shè)備的情況。 設(shè) 備 控 制 表 集 合 DCT1 DCT2 DCTn 設(shè)備類型type 設(shè)備標(biāo)識符deviceID 設(shè)備狀態(tài): 等待/不等待,忙/閑 指向控制器表的指針 重復(fù)執(zhí)行次數(shù)或時間 設(shè)備隊列的隊首指針 因請求本設(shè)備而未得 到滿足的進(jìn)程,其PCB 按照一定的策略排成 一隊列,該隊列簡稱設(shè) 備隊列。其隊首指針 指向隊首PCB。 當(dāng)設(shè)備本身正處于 使用狀態(tài)時,應(yīng)將 設(shè)備的忙

37、標(biāo)志置1。 若與該設(shè)備相連接 的控制器或通道正 忙,不能啟動該設(shè) 備,此時將設(shè)備的 等待標(biāo)志置1 指向該設(shè)備所連接 的控制器的控制表。 在具有多條通路的 情況下,一個設(shè)備 將與多個控制器連 接。此時在DCT中 還應(yīng)設(shè)置多個控制 器表指針。 若發(fā)生傳送錯誤,并不立即認(rèn)為傳送失敗,而是重新 傳送,并由系統(tǒng)規(guī)定設(shè)備在工作中發(fā)生錯誤時,應(yīng)重 復(fù)執(zhí)行的次數(shù)。重復(fù)執(zhí)行時,若能恢復(fù)正常,則仍認(rèn) 為傳送成功。當(dāng)屢次失敗而使重復(fù)執(zhí)行次數(shù)達(dá)到規(guī)定 值其傳送還不成功時,才認(rèn)為傳送失敗。 6060 第六章 輸入輸出系統(tǒng) 2) 控制器控制表、通道控制表和系統(tǒng)設(shè)備表 (1) 控制器控制表(COCT)。系統(tǒng)為每一個控制器都

38、設(shè)置 了用于記錄控制器情況的控制器控制表,如圖6-18(a)所示。 (2) 通道控制表(CHCT)。每個通道都有一張通道控制表, 如圖6-18(b)所示。 (3) 系統(tǒng)設(shè)備表(SDT)。這是系統(tǒng)范圍的數(shù)據(jù)結(jié)構(gòu),記錄 了系統(tǒng)中全部設(shè)備的情況,每個設(shè)備占一個表目,其中包括 有設(shè)備類型、設(shè)備標(biāo)識符、設(shè)備控制表及設(shè)備驅(qū)動程序的入 口等項,如圖6-18(c)所示。 61 61 第六章 輸入輸出系統(tǒng) 圖6-18 COCT、CHCT和SDT表 6262 第六章 輸入輸出系統(tǒng) 2. 設(shè)備分配時應(yīng)考慮的因素 系統(tǒng)在分配設(shè)備時,應(yīng)考慮如下幾個因素: 1) 設(shè)備的固有屬性 設(shè)備的固有屬性可分成三種,對它們應(yīng)采取不同

39、的分配 策略: (1) 獨(dú)占設(shè)備的分配策略。這類設(shè)備在一段時間內(nèi),只 允許一個進(jìn)程獨(dú)占。對其采用的分配策略是獨(dú)享分配。 (2) 共享設(shè)備的分配策略。對這類設(shè)備可同時分配給多 個進(jìn)程使用。 (3) 虛擬設(shè)備的分配策略,虛擬設(shè)備屬于可共享的設(shè)備, 可以將它同時分配給多個進(jìn)程使用。 6363 第六章 輸入輸出系統(tǒng) 2) 設(shè)備分配算法 設(shè)備分配的算法:先來先服務(wù)和優(yōu)先級高者優(yōu)先。 3) 設(shè)備分配中的安全性 (1) 安全分配方式。每當(dāng)進(jìn)程發(fā)出每當(dāng)進(jìn)程發(fā)出I/O請求后,便進(jìn)入阻請求后,便進(jìn)入阻 塞狀態(tài),直到其塞狀態(tài),直到其I/O操作完成時才被喚醒操作完成時才被喚醒。這種方式已摒棄摒棄 了造成死鎖的四個必要

40、條件之一的了造成死鎖的四個必要條件之一的“請求和保持請求和保持”條件條件,因 而是安全的。其缺點(diǎn)是進(jìn)程進(jìn)展緩慢,即CPU與I/O設(shè)備是串 行工作的。 (2) 不安全分配方式。進(jìn)程發(fā)出進(jìn)程發(fā)出I/O請求后仍繼續(xù)運(yùn)行請求后仍繼續(xù)運(yùn)行, 需要時又可發(fā)出第二、第三個I/O請求。僅當(dāng)進(jìn)程所需要的 設(shè)備已被另一進(jìn)程占用時,該進(jìn)程才進(jìn)入阻塞狀態(tài)。這種方 式可能造成死鎖,應(yīng)進(jìn)行是否會發(fā)生死鎖的安全性計算。 6464 第六章 輸入輸出系統(tǒng) 3. 獨(dú)占設(shè)備的分配程序 1) 基本的設(shè)備分配程序 對于具有I/O通道的系統(tǒng),在進(jìn)程提出I/O請求后,系統(tǒng) 的設(shè)備分配程序可按下述步驟進(jìn)行設(shè)備分配: (1) 分配設(shè)備。 (2

41、) 分配控制器。 (3) 分配通道。 6565 第六章 輸入輸出系統(tǒng) 2) 設(shè)備分配程序的改進(jìn) 上述程序中進(jìn)程是以物理設(shè)備名來提出I/O請求的,另 外采用的是單通路的I/O系統(tǒng)結(jié)構(gòu),易產(chǎn)生“瓶頸”現(xiàn)象。 為此需加以改進(jìn),可從兩方面入手: 1、增加設(shè)備的獨(dú)立性; 2、考慮多通路情況。 6666 第六章 輸入輸出系統(tǒng) 6.5.4 邏輯設(shè)備名到物理設(shè)備名映射的實(shí)現(xiàn) 為了實(shí)現(xiàn)設(shè)備的無關(guān)性,應(yīng)用程序請求使用I/O設(shè)備時, 采用的是邏輯設(shè)備名,但是,系統(tǒng)只能識別物理設(shè)備名。因 此,需要配置一張邏輯設(shè)備表,用于將邏輯設(shè)備名映射為物 理設(shè)備名。 6767 第六章 輸入輸出系統(tǒng) 1、邏輯設(shè)備表LUT:其格式是

42、2、LUT的設(shè)置問題:可采取兩種方式,一種是整個系統(tǒng) 設(shè)置一張LUT,一種是為每個用戶設(shè)置一張LUT。 邏輯設(shè)備名邏輯設(shè)備名物理設(shè)備名物理設(shè)備名驅(qū)動程序入口地驅(qū)動程序入口地 址址 /dev/tty 3 1024 /dev/print 5 2046 整個系統(tǒng)設(shè)置一張LUT,可采用這種格式。由于 系統(tǒng)中所有進(jìn)程的設(shè)備分配情況都記錄在同一張 LUT中,因此不允許表中有相同的邏輯設(shè)備名, 即要求所有用戶不使用相同的邏輯設(shè)備名。在多 用戶環(huán)境下難以做到,主要用于單用戶系統(tǒng)。 邏輯設(shè)備名 系統(tǒng)設(shè)備表指針 /dev/tty 3 /dev/print 5 為每個用戶設(shè)置一張LUT,可采用這種格式。當(dāng) 用戶登錄

43、時,便為用戶建立一個進(jìn)程,同時為之 建立一張LUT,并將其放入進(jìn)程PCB中。由于在 多用戶系統(tǒng)中都配置了系統(tǒng)設(shè)備表,故LUT可采 用以上格式。 6868 第六章 輸入輸出系統(tǒng) 6.6 用戶層的I/O軟件 6.6.1 系統(tǒng)調(diào)用與庫函數(shù) 1. 系統(tǒng)調(diào)用 應(yīng)用程序通過系統(tǒng)調(diào)用, 間接調(diào)用OS中的I/O過程,對 I/O設(shè)備進(jìn)行操作。 2. 庫函數(shù) 用戶程序通過調(diào)用對應(yīng)的 庫函數(shù)來使用系統(tǒng)調(diào)用,這些 庫函數(shù)與系統(tǒng)調(diào)用連接在一 起,被嵌入在運(yùn)行時裝入內(nèi)存 的二進(jìn)制程序中。 系統(tǒng)調(diào)用執(zhí)行過程 系統(tǒng)系統(tǒng) 調(diào)用調(diào)用 命令命令 用戶態(tài)系統(tǒng)態(tài) 系統(tǒng)調(diào)用 調(diào)用調(diào)用 返回返回 6969 第六章 輸入輸出系統(tǒng) 6.6.2

44、 假脫機(jī)(Spooling)系統(tǒng) 1. 假脫機(jī)技術(shù) 在多道程序系統(tǒng)中,利用一道程序來模擬脫機(jī)輸入時的一道程序來模擬脫機(jī)輸入時的 外圍控制機(jī)的功能外圍控制機(jī)的功能,把低速I/O設(shè)備上的數(shù)據(jù)傳送到高速磁盤 上;再利用另一道程序模擬脫機(jī)輸出時外圍控制機(jī)的功能另一道程序模擬脫機(jī)輸出時外圍控制機(jī)的功能, 把數(shù)據(jù)從磁盤傳送到低速輸出設(shè)備上。這樣,在主機(jī)的直接 控制下,實(shí)現(xiàn)脫機(jī)輸入輸出功能。此時的外圍操作與CPU對 數(shù)據(jù)的處理同時進(jìn)行,把這種在聯(lián)機(jī)情況下實(shí)現(xiàn)的同時外圍 操作稱為SPOOLing,或稱為假脫機(jī)操作。 7070 第六章 輸入輸出系統(tǒng) 2. SPOOLing的組成 SPOOLing系統(tǒng)主要由以下四

45、部分構(gòu)成: (1) 輸入井和輸出井。輸入井用于收容I/O設(shè)備輸入的數(shù) 據(jù)。輸出井用于收容用戶程序的輸出數(shù)據(jù)。 (2) 輸入緩沖區(qū)和輸出緩沖區(qū)。輸入緩沖區(qū)用于暫存由 輸入設(shè)備送來的數(shù)據(jù),以后再傳送到輸入井。輸出緩沖區(qū)用 于暫存從輸出井送來的數(shù)據(jù),以后再傳送給輸出設(shè)備。 (3) 輸入進(jìn)程和輸出進(jìn)程。分別用于模擬脫機(jī)輸入和脫 機(jī)輸出時的外圍控制機(jī)。 (4) 井管理程序。用于控制作業(yè)與磁盤井之間信息的交 換。 71 71 第六章 輸入輸出系統(tǒng) 3. SPOOLing系統(tǒng)的特點(diǎn) (1) 提高了I/O的速度。 (2) 將獨(dú)占設(shè)備改造為共享設(shè)備。 (3) 實(shí)現(xiàn)了虛擬設(shè)備功能。 7272 第六章 輸入輸出系統(tǒng)

46、 6.7 緩沖區(qū)管理 在現(xiàn)代操作系統(tǒng)中,幾乎所有的I/O設(shè)備在與處理機(jī)交 換數(shù)據(jù)時都用了緩沖區(qū)。緩沖區(qū)是一個存儲區(qū)域,它可以由 專門的硬件寄存器組成,但由于硬件的成本較高,容量也較 小,一般僅用在對速度要求非常高的場合,如存儲器管理中 所用的聯(lián)想存儲器;設(shè)備控制器中用的數(shù)據(jù)緩沖區(qū)等。 7373 第六章 輸入輸出系統(tǒng) 6.7.1 緩沖的引入 引入緩沖區(qū)的原因有很多,可歸結(jié)為以下幾點(diǎn): (1) 緩和CPU與I/O設(shè)備間速度不匹配的矛盾。 (2) 減少對CPU的中斷頻率,放寬對CPU中斷響應(yīng)時間的 限制。 (3) 解決數(shù)據(jù)粒度不匹配的問題。 (4) 提高CPU和I/O設(shè)備之間的并行性。 7474 第

47、六章 輸入輸出系統(tǒng) 6.7.2 單緩沖區(qū)和雙緩沖區(qū) 1. 單緩沖區(qū)(Single Buffer) 在單緩沖情況下,每當(dāng)用戶進(jìn)程發(fā)出一I/O請求時,操 作系統(tǒng)便在主存中為之分配一緩沖區(qū),如圖6-23所示。 圖6-23 單緩沖工作示意圖 7575 第六章 輸入輸出系統(tǒng) 2. 雙緩沖區(qū)(Double Buffer) 由于緩沖區(qū)是共享資源,生產(chǎn)者與消費(fèi)者在使用緩沖區(qū) 時必須互斥。如果消費(fèi)者尚未取走緩沖區(qū)中的數(shù)據(jù),即使生如果消費(fèi)者尚未取走緩沖區(qū)中的數(shù)據(jù),即使生 產(chǎn)者又生產(chǎn)出新的數(shù)據(jù),也無法將它送入緩沖區(qū),生產(chǎn)者等產(chǎn)者又生產(chǎn)出新的數(shù)據(jù),也無法將它送入緩沖區(qū),生產(chǎn)者等 待待。如果為生產(chǎn)者與消費(fèi)者設(shè)置了兩個緩

48、沖區(qū),便能解決這 一問題。 雙緩沖區(qū)又稱為緩沖對換。輸入時先往第一緩沖區(qū)中輸 入數(shù)據(jù),滿后再往第二緩沖區(qū)中輸入數(shù)據(jù),此時,OS可以從 第一緩沖區(qū)中取走數(shù)據(jù)。 7676 第六章 輸入輸出系統(tǒng) 圖6-24 雙緩沖工作示意圖 7777 第六章 輸入輸出系統(tǒng) 如果在實(shí)現(xiàn)兩臺機(jī)器之間的通信時僅為它們配置了單緩 沖,那么,它們之間在任一時刻都只能實(shí)現(xiàn)單方向的數(shù)據(jù)傳 輸。例如,只允許把數(shù)據(jù)從A傳送到B,或者從B傳送到A, 而絕不允許雙方同時向?qū)Ψ桨l(fā)送數(shù)據(jù)。為了實(shí)現(xiàn)雙向數(shù)據(jù)傳 輸,必須在兩臺機(jī)器中都設(shè)置兩個緩沖區(qū),一個用作發(fā)送緩 沖區(qū),另一個用作接收緩沖區(qū)。 7878 第六章 輸入輸出系統(tǒng) 6.7.3 環(huán)形緩

49、沖區(qū) 1. 環(huán)形緩沖區(qū)的組成 (1) 多個緩沖區(qū)多個緩沖區(qū):在循環(huán)緩沖中含有多個緩沖區(qū),每個緩沖 區(qū)的大小相同。緩沖區(qū)可分成三種類型: a) 空緩沖區(qū)R。用于存放輸入數(shù)據(jù)。 b) 已滿緩沖區(qū)G。其中的數(shù)據(jù)提供給計算進(jìn)程使用。 c) 現(xiàn)行工作緩沖區(qū)C。計算進(jìn)程正在使用的緩沖區(qū)。 (2) 多個指針多個指針:對用于輸入的多緩沖,設(shè)置三個指針: a)Nextg。指示計算進(jìn)程下一個可用的緩沖區(qū)G; b)Nexti。指示輸入進(jìn)程下次可用的空緩沖區(qū)R; c)Current。指示計算進(jìn)程正在使用的緩沖區(qū)單元。 7979 第六章 輸入輸出系統(tǒng) 多個緩沖區(qū)示意圖 G G C R G R 1 6 5 4 2 3 G

50、 Nextg C Nextg Current Nexti Nexti 返回80 G 8080 第六章 輸入輸出系統(tǒng) G G C R G R 1 6 5 4 2 3 多個指針示意圖 Current Nexti Nextg 81 81 第六章 輸入輸出系統(tǒng) 2. 環(huán)形緩沖區(qū)的使用 計算進(jìn)程和輸入進(jìn)程可利用下述兩個過程來使用環(huán)形緩 沖區(qū)。 (1) Getbuf過程。每當(dāng)計算進(jìn)程要使用緩沖區(qū)的數(shù)據(jù)時, 可調(diào)用該過程。類似地,每當(dāng)輸入進(jìn)程要使用空緩沖來裝入 數(shù)據(jù)時,也可調(diào)用該過程。 (2) Releasebuf過程。當(dāng)計算進(jìn)程把G緩沖區(qū)中的數(shù)據(jù)提 完時,便可調(diào)用該過程將緩沖區(qū)釋放。此時把緩沖區(qū)由C改 為

51、R。類似地,當(dāng)輸入進(jìn)程將緩沖區(qū)裝滿時,也調(diào)用該過程, 將該緩沖區(qū)釋放,并改為G緩沖區(qū)。 如圖 8282 第六章 輸入輸出系統(tǒng) 3. 進(jìn)程之間的同步問題 使用輸入循環(huán)緩沖,可使輸入進(jìn)程和計算進(jìn)程并行執(zhí)行。 相應(yīng)地,指針Nexti和指針Nextg將不斷地沿著順時針方向移 動,這樣就可能出現(xiàn)下述兩種情況: (1) Nexti指針追趕上Nextg指針。這意味著全部緩沖區(qū)已 滿,此時輸入進(jìn)程應(yīng)被阻塞,直至計算進(jìn)程把某個緩沖區(qū)中 數(shù)據(jù)全部提完,使之成為空緩沖R,并調(diào)用Releasebuf過程將 其釋放,才將輸入進(jìn)程喚醒。這種情況稱為系統(tǒng)受計算限制系統(tǒng)受計算限制。 (2) Nextg指針追趕上Nexti指針

52、。意味著全部緩沖區(qū)已空。 此時計算進(jìn)程只能阻塞,直至輸入進(jìn)程又裝滿某緩沖區(qū),并 調(diào)用Releasebuf過程將它釋放,才去喚醒計算進(jìn)程。這種情 況稱為系統(tǒng)受系統(tǒng)受I/O限制限制。 8383 第六章 輸入輸出系統(tǒng) 6.8 磁盤存儲器的性能和調(diào)度 6.8.1 磁盤性能簡述 1. 數(shù)據(jù)的組織和格式 磁盤設(shè)備可包括一個或多個物理盤片,每個磁盤片分一 個或兩個存儲面(Surface)(見圖6-28(a),每個盤面上有若干 個磁道(Track),磁道之間留有必要的間隙(Gap)。為使處理 簡單起見,在每條磁道上可存儲相同數(shù)目的二進(jìn)制位。 8484 第六章 輸入輸出系統(tǒng) 圖6-28 磁盤的結(jié)構(gòu)和布局 858

53、5 第六章 輸入輸出系統(tǒng) 2. 磁盤的類型 對于磁盤,可以從不同的角度進(jìn)行分類。最常見的有: 將磁盤分成硬盤和軟盤、單片盤和多片盤、固定頭磁盤和活 動頭(移動頭)磁盤等。 (1) 固定頭磁盤。 (2) 移動頭磁盤。 8686 第六章 輸入輸出系統(tǒng) 3. 磁盤訪問時間(對移動磁頭討論) (1) 尋道時間Ts:把磁頭從當(dāng)前位置移動到指定磁道上 所經(jīng)歷的時間:Ts=mn+s( Ts與n有關(guān)),其中s為磁盤啟動 時間,m是一個常數(shù),n為磁頭移動的磁道條數(shù)。 (2) 旋轉(zhuǎn)延遲時間 :是指定扇區(qū)移動到磁頭下面所經(jīng) 歷的時間。 (3) 傳輸時間Tt:指把數(shù)據(jù)從磁盤讀出,或向磁盤寫入數(shù) 據(jù)所經(jīng)歷的時間。其大小

54、與每次所讀/寫的字節(jié)數(shù)b及旋轉(zhuǎn)速 度有關(guān):Tt=b/(rN) 式中,r為磁盤以秒計的旋轉(zhuǎn)速度,N為 一條磁道上的字節(jié)數(shù)。 T 8787 第六章 輸入輸出系統(tǒng) 6.8.2 早期的磁盤調(diào)度算法 1. 先來先服務(wù)(FCFS) 這是最簡單的磁盤調(diào)度算法。它根據(jù)進(jìn)程請求訪問磁盤進(jìn)程請求訪問磁盤 的先后次序進(jìn)行調(diào)度的先后次序進(jìn)行調(diào)度。 在該算法中,每個進(jìn)程的請求都能依次地得到處理,不 會出現(xiàn)某一進(jìn)程請求長期得不到滿足的情況。此外,因該算 法未對尋道進(jìn)行優(yōu)化,所以導(dǎo)致平均尋道時間可能較長。 FCFS算法平均尋道時間較大,適用于請求磁盤I/O的進(jìn) 程數(shù)目較少的場合。 8888 第六章 輸入輸出系統(tǒng) 2. 最短尋道時間優(yōu)先

溫馨提示

  • 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

提交評論