輸入輸出系統(tǒng)演示文稿_第1頁(yè)
輸入輸出系統(tǒng)演示文稿_第2頁(yè)
輸入輸出系統(tǒng)演示文稿_第3頁(yè)
輸入輸出系統(tǒng)演示文稿_第4頁(yè)
輸入輸出系統(tǒng)演示文稿_第5頁(yè)
已閱讀5頁(yè),還剩131頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

輸入輸出系統(tǒng)演示文稿目前一頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)第章輸入輸出系統(tǒng)目前二頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)

6.1I/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è)備提供手段。目前三頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)6.1.1I/O系統(tǒng)的基本功能

1.隱藏物理設(shè)備的細(xì)節(jié)

I/O設(shè)備的類型非常多,且彼此間在多方面都有差異,諸如它們接收和產(chǎn)生數(shù)據(jù)的速度,傳輸方向、粒度、數(shù)據(jù)的表示形式及可靠性等方面。目前四頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)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)的。目前五頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)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)行起來(lái);

另一方面也應(yīng)盡量減少在每個(gè)I/O設(shè)備運(yùn)行時(shí)處理機(jī)的干預(yù)時(shí)間。目前六頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)4.對(duì)I/O設(shè)備進(jìn)行控制

對(duì)I/O設(shè)備進(jìn)行控制是驅(qū)動(dòng)程序的功能。目前對(duì)I/O設(shè)備有四種控制方式:

①采用輪詢的可編程I/O方式——程序IO;

②采用中斷的可編程I/O方式——中斷IO;

③直接存儲(chǔ)器訪問(wèn)方式——DMA;

④I/O通道方式——通道。目前七頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)5.確保對(duì)設(shè)備的正確共享

設(shè)備按共享屬性分類分為如下兩類:

(1)獨(dú)占設(shè)備,進(jìn)程應(yīng)互斥地訪問(wèn)這類設(shè)備,即系統(tǒng)一旦把這類設(shè)備分配給了某進(jìn)程后,便由該進(jìn)程獨(dú)占,直至用完釋放。典型的獨(dú)占設(shè)備有打印機(jī)、磁帶機(jī)等。

(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ě)的正確性。目前八頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)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)告。目前九頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)6.1.2I/O系統(tǒng)的層次結(jié)構(gòu)和模型

1.?I/O軟件的層次結(jié)構(gòu)

通常把I/O軟件組織成四個(gè)層次,如圖6-1所示。圖6-1I/O系統(tǒng)的層次結(jié)構(gòu)目前十頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)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)接口。目前十一頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)圖6-2I/O系統(tǒng)中各種模塊之間的層次視圖目前十二頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)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ú)立性軟件。目前十三頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)6.1.3I/O系統(tǒng)接口

在I/O系統(tǒng)與高層之間的接口中,根據(jù)設(shè)備類型的不同,又進(jìn)一步分為若干個(gè)接口。在圖6-2中示出了塊設(shè)備接口、流設(shè)備接口和網(wǎng)絡(luò)接口。

1.塊設(shè)備接口

(1)塊設(shè)備。

(2)隱藏了磁盤(pán)的二維結(jié)構(gòu)。

(3)將抽象命令映射為低層操作。目前十四頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)2.流設(shè)備接口

流設(shè)備接口是流設(shè)備管理程序與高層之間的接口。該接口又稱為字符設(shè)備接口,它反映了大部分字符設(shè)備的本質(zhì)特征,用于控制字符設(shè)備的輸入或輸出。

(1)字符設(shè)備。

(2)get和put操作。

(3)

in-control指令。目前十五頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)3.網(wǎng)絡(luò)通信接口

在現(xiàn)代OS中,都提供了面向網(wǎng)絡(luò)的功能。但首先還需要通過(guò)某種方式把計(jì)算機(jī)連接到網(wǎng)絡(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)瀏覽。目前十六頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)

6.2I/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的電子部件則稱為設(shè)備控制器或適配器(Adapter)。在微型機(jī)和小型機(jī)中也常稱為控制卡、接口卡或網(wǎng)卡,可將它插入計(jì)算機(jī)的擴(kuò)展槽中。在有的大、中型計(jì)算機(jī)系統(tǒng)中,還配置了I/O通道或I/O處理機(jī)。目前十七頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)6.2.1I/O設(shè)備

1.?I/O設(shè)備的類型

1)按使用特性分類

2)按傳輸速率分類

目前十八頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)2.設(shè)備與控制器之間的接口

通常,設(shè)備并不是直接與CPU進(jìn)行通信,而是與設(shè)備控制器通信,因此,在I/O設(shè)備中應(yīng)含有與設(shè)備控制器間的接口,在該接口中有三種類型的信號(hào)(見(jiàn)圖6-3所示),各對(duì)應(yīng)一條信號(hào)線。

(1)數(shù)據(jù)信號(hào)線。

(2)控制信號(hào)線。

(3)狀態(tài)信號(hào)線。目前十九頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)圖6-3設(shè)備與控制器間的接口目前二十頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)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ò)控制。目前二十一頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)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邏輯。目前二十二頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)圖6-4設(shè)備控制器的組成目前二十三頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)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指令。目前二十四頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)2.內(nèi)存映像I/O

在這種方式中,在編址上不再區(qū)分內(nèi)存單元地址和設(shè)備控制器中的寄存器地址,都采用k。當(dāng)k值處于0~n-1范圍時(shí),被認(rèn)為是內(nèi)存地址,若k大于等于n時(shí),被認(rèn)為是某個(gè)控制器的寄存器地址。目前二十五頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)圖6-5設(shè)備尋址形式目前二十六頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)

I/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/OChannel)。目前二十七頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)2.通道類型

1)字節(jié)多路通道(ByteMultiplexorChannel)

這是一種按字節(jié)交叉方式工作的通道。它通常都含有許多非分配型子通道,其數(shù)量可從幾十到數(shù)百個(gè),每一個(gè)子通道連接一臺(tái)I/O設(shè)備,并控制該設(shè)備的I/O操作。這些子通道按時(shí)間片輪轉(zhuǎn)方式共享主通道。目前二十八頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)圖6-6字節(jié)多路通道的工作原理目前二十九頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)2)數(shù)組選擇通道(BlockSelectorChannel)

字節(jié)多路通道不適于連接高速設(shè)備,這推動(dòng)了按數(shù)組方式進(jìn)行數(shù)據(jù)傳送的數(shù)組選擇通道的形成。

3)數(shù)組多路通道(BlockMultiplexorChannel)

數(shù)組選擇通道雖有很高的傳輸速率,但它卻每次只允許一個(gè)設(shè)備傳輸數(shù)據(jù)。數(shù)組多路通道是將數(shù)組選擇通道傳輸速率高和字節(jié)多路通道能使各子通道(設(shè)備)分時(shí)并行操作的優(yōu)點(diǎn)相結(jié)合而形成的一種新通道。目前三十頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)目前三十一頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)目前三十二頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)3.“瓶頸”問(wèn)題

由于通道價(jià)格昂貴,致使機(jī)器中所設(shè)置的通道數(shù)量勢(shì)必較少,這往往又使它成了I/O的瓶頸,進(jìn)而造成整個(gè)系統(tǒng)吞吐量的下降。目前三十三頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)圖6-7單通路I/O系統(tǒng)目前三十四頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)圖6-8多通路I/O系統(tǒng)目前三十五頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)

6.3中斷機(jī)構(gòu)和中斷處理程序

中斷在操作系統(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ǔ)。目前三十六頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)6.3.1中斷簡(jiǎn)介

1.中斷和陷入

1)中斷

2)陷入

目前三十七頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)2.中斷向量表和中斷優(yōu)先級(jí)

1)中斷向量表

2)中斷優(yōu)先級(jí)

目前三十八頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)3.對(duì)多中斷源的處理方式

1)屏蔽(禁止)中斷

2)嵌套中斷

目前三十九頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)圖6-9對(duì)多中斷的處理方式目前四十頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)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)。目前四十一頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)圖6-10中斷現(xiàn)場(chǎng)保護(hù)示意圖目前四十二頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)圖6-11中斷處理流程目前四十三頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)

6.4設(shè)備驅(qū)動(dòng)程序

設(shè)備處理程序通常又稱為設(shè)備驅(qū)動(dòng)程序,它是I/O系統(tǒng)的高層與設(shè)備控制器之間的通信程序,其主要任務(wù):

一是接收上層軟件發(fā)來(lái)的抽象I/O要求,如read或write命令,再把它轉(zhuǎn)換為具體要求后,發(fā)送給設(shè)備控制器,啟動(dòng)設(shè)備去執(zhí)行;

反之,它也將由設(shè)備控制器發(fā)來(lái)的信號(hào)傳送給上層軟件。由于驅(qū)動(dòng)程序與硬件密切相關(guān),故通常應(yīng)為每一類設(shè)備配置一種驅(qū)動(dòng)程序。例如,打印機(jī)和顯示器需要不同的驅(qū)動(dòng)程序。目前四十四頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)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)求者的請(qǐng)求塊掛在設(shè)備隊(duì)列上等待。

(4)及時(shí)響應(yīng)由設(shè)備控制器發(fā)來(lái)的中斷請(qǐng)求,并根據(jù)其中斷類型,調(diào)用相應(yīng)的中斷處理程序進(jìn)行處理。目前四十五頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)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)程。

目前四十六頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)

(2)驅(qū)動(dòng)程序與設(shè)備控制器以及I/O設(shè)備的硬件特性緊密相關(guān),對(duì)于不同類型的設(shè)備,應(yīng)配置不同的驅(qū)動(dòng)程序。但可以為相同的多個(gè)終端設(shè)置一個(gè)終端驅(qū)動(dòng)程序。

(3)驅(qū)動(dòng)程序與I/O設(shè)備所采用的I/O控制方式緊密相關(guān),常用的I/O控制方式是中斷驅(qū)動(dòng)和DMA方式。

目前四十七頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn) (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)用。

3.設(shè)備處理方式

在不同的操作系統(tǒng)中,所采用的設(shè)備處理方式并不完全相同。目前四十八頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)6.4.2設(shè)備驅(qū)動(dòng)程序的處理過(guò)程

設(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)命令。目前四十九頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)圖6-12狀態(tài)寄存器中的格式目前五十頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)6.4.3對(duì)I/O設(shè)備的控制方式

對(duì)設(shè)備的控制,早期是使用輪詢的可編程I/O方式,后來(lái)發(fā)展為使用中斷的可編程I/O方式。目前五十一頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)1.使用輪詢的可編程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ī)將數(shù)據(jù)寄存器中的數(shù)據(jù)取出,送入內(nèi)存指定單元中,這樣便完成了一個(gè)字(符)的I/O。接著再去啟動(dòng)讀下一個(gè)數(shù)據(jù),并置busy=1。目前五十二頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)程序I/O和中斷驅(qū)動(dòng)方式的流程目前五十三頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)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è)備。此時(shí),CPU與I/O設(shè)備并行操作。目前五十四頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)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)求一次中斷。目前五十五頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)DMA方式的特點(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è)備的并行操作程度。目前五十六頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)2)?DMA控制器的組成

DMA控制器由三部分組成:

(1)主機(jī)與DMA控制器的接口;

(2)DMA控制器與塊設(shè)備的接口;

(3)I/O控制邏輯。

目前五十七頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)圖6-14DMA控制器的組成DR:數(shù)據(jù)寄存器 DC:數(shù)據(jù)計(jì)數(shù)器MAR:頁(yè)內(nèi)地址寄存器 CR:命令/狀態(tài)寄存器目前五十八頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)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中。目前五十九頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)圖6-15DMA方式的工作流程圖目前六十頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)4.?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ù)塊。

我們需要一次去讀多個(gè)數(shù)據(jù)塊且將它們分別傳送到不同的內(nèi)存區(qū)域,或者相反時(shí),則須由CPU分別發(fā)出多條I/O指令及進(jìn)行多次中斷處理才能完成。目前六十一頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)2)通道程序

通道是通過(guò)執(zhí)行通道程序并與設(shè)備控制器共同實(shí)現(xiàn)對(duì)I/O設(shè)備的控制的。

通道程序是由一系列通道指令(或稱為通道命令)所構(gòu)成的。

其中,每條指令包括:操作碼、內(nèi)存地址、計(jì)數(shù)、通道程序結(jié)束位P和記錄結(jié)束位R

目前六十二頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)下面示出了一個(gè)由六條通道指令所構(gòu)成的簡(jiǎn)單的通道程序。該程序的功能是將內(nèi)存中不同地址的數(shù)據(jù)寫(xiě)成多個(gè)記錄。目前六十三頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)

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ú)立性,也稱為設(shè)備無(wú)關(guān)性。

【設(shè)備獨(dú)立性】:應(yīng)用程序中所用的設(shè)備,不局限于使用某個(gè)具體的物理設(shè)備。為每個(gè)設(shè)備所配置的設(shè)備驅(qū)動(dòng)程序是與硬件緊密相關(guān)的軟件。目前六十四頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)6.5.1與設(shè)備無(wú)關(guān)軟件的基本概念

1.以物理設(shè)備名使用設(shè)備

在早期OS中,應(yīng)用程序在使用I/O設(shè)備時(shí),都使用設(shè)備的物理名稱,這使應(yīng)用程序與系統(tǒng)中的物理設(shè)備直接相關(guān)。目前六十五頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)2.引入了邏輯設(shè)備名

為了實(shí)現(xiàn)與設(shè)備的無(wú)關(guān)性而引入了邏輯設(shè)備和物理設(shè)備兩個(gè)概念。邏輯設(shè)備是抽象的設(shè)備名。目前六十六頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)3.邏輯設(shè)備名稱到物理設(shè)備名稱的轉(zhuǎn)換

在應(yīng)用程序中,用邏輯設(shè)備名稱使用設(shè)備雖然方便了用戶,但系統(tǒng)卻只識(shí)別物理設(shè)備名稱,因此在實(shí)際執(zhí)行時(shí),還必須使用物理名稱。為此,在系統(tǒng)中,必須具有將邏輯設(shè)備名稱轉(zhuǎn)換為某物理設(shè)備名稱的功能。目前六十七頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)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之間都有著相同或相近的接口,可使添加一個(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)的用戶使用。目前六十八頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)2.緩沖管理

無(wú)論是字符設(shè)備還是塊設(shè)備,它們的運(yùn)行速度都遠(yuǎn)低于CPU的速度。為了緩和CPU和I/O設(shè)備之間的矛盾、提高CPU的利用率,在現(xiàn)代OS中都無(wú)一例外地分別為字符設(shè)備和塊設(shè)備配置了相應(yīng)的緩沖區(qū)。

緩沖區(qū)有著多種形式,如:?jiǎn)尉彌_區(qū)、雙緩沖區(qū)、循環(huán)緩沖區(qū)、公用緩沖池等,以滿足不同情況的需要。目前六十九頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)3.差錯(cuò)控制

由于設(shè)備中有著許多的機(jī)械和電氣部分,因此,它們比主機(jī)更容易出現(xiàn)故障,這就導(dǎo)致I/O操作中的絕大多數(shù)錯(cuò)誤都與設(shè)備有關(guān)。錯(cuò)誤可分為如下兩類:

(1)暫時(shí)性錯(cuò)誤。

(2)持久性錯(cuò)誤。目前七十頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)4.對(duì)獨(dú)立設(shè)備的分配與回收

在系統(tǒng)中有兩類設(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è)備的請(qǐng)求隊(duì)列中等待。等到其它進(jìn)程釋放該設(shè)備時(shí),再將隊(duì)列中的第一個(gè)進(jìn)程喚醒,該進(jìn)程得到設(shè)備后繼續(xù)運(yùn)行。目前七十一頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)5.獨(dú)立于設(shè)備的邏輯數(shù)據(jù)塊

不同類型的設(shè)備,其數(shù)據(jù)交換單位是不同的,讀取和傳輸速率也各不相同。

如,字符型設(shè)備以單個(gè)字符(字)為單位,塊設(shè)備是以一個(gè)數(shù)據(jù)塊為單位。

即使同一類型的設(shè)備,其數(shù)據(jù)交換單位的大小也是有差異的。

如,不同磁盤(pán)由于扇區(qū)大小的不同,可能造成數(shù)據(jù)塊大小的不一致。

設(shè)備獨(dú)立性軟件應(yīng)能夠隱藏這些差異而被邏輯設(shè)備使用,并向高層軟件提供大小統(tǒng)一的邏輯數(shù)據(jù)塊。目前七十二頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)圖6-16與設(shè)備無(wú)關(guān)軟件的功能層次目前七十三頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)6.5.3設(shè)備分配

系統(tǒng)為實(shí)現(xiàn)對(duì)獨(dú)占設(shè)備的分配,必須在系統(tǒng)中配置相應(yīng)的數(shù)據(jù)結(jié)構(gòu)。

目前七十四頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)目前七十五頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)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所示。目前七十六頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)2)控制器控制表、通道控制表和系統(tǒng)設(shè)備表

(1)控制器控制表(COCT)。系統(tǒng)為每一個(gè)控制器都設(shè)置了用于記錄控制器情況的控制器控制表。

(2)通道控制表(CHCT)。每個(gè)通道都有一張通道控制表。

(3)系統(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)。目前七十七頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)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)程使用。目前七十八頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)2)設(shè)備分配算法

對(duì)設(shè)備分配的算法,通常只采用以下兩種分配算法:

(1)先來(lái)先服務(wù)。

(2)優(yōu)先級(jí)高者優(yōu)先。目前七十九頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)3)設(shè)備分配中的安全性

從進(jìn)程運(yùn)行的安全性上考慮,設(shè)備分配有以下兩種方式:

(1)安全分配方式。

(2)不安全分配方式。目前八十頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)目前八十一頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)目前八十二頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)目前八十三頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)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)分配通道。目前八十四頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)2)設(shè)備分配程序的改進(jìn)

在上面的例子中,進(jìn)程是以物理設(shè)備名提出I/O請(qǐng)求的。如果所指定的設(shè)備已分配給其它進(jìn)程,則分配失敗。或者說(shuō)上面的設(shè)備分配程序不具有與設(shè)備無(wú)關(guān)性。為獲得設(shè)備的獨(dú)立性,進(jìn)程應(yīng)使用邏輯設(shè)備名請(qǐng)求I/O。目前八十五頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)6.5.4邏輯設(shè)備名到物理設(shè)備名映射的實(shí)現(xiàn)

1.邏輯設(shè)備表LUT(LogicalUnitTable)

在邏輯設(shè)備表的每個(gè)表目中包含了三項(xiàng):邏輯設(shè)備名、物理設(shè)備名和設(shè)備驅(qū)動(dòng)程序的入口地址,如圖6-19(a)所示。目前八十六頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)圖6-19邏輯設(shè)備表目前八十七頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)2.邏輯設(shè)備表的設(shè)置問(wèn)題

在系統(tǒng)中可采取兩種方式設(shè)置邏輯設(shè)備表:

第一種方式,是在整個(gè)系統(tǒng)中只設(shè)置一張LUT。

第二種方式,是為每個(gè)用戶設(shè)置一張LUT。目前八十八頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)

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)行操作。目前八十九頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)圖6-20系統(tǒng)調(diào)用的執(zhí)行過(guò)程目前九十頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)2.庫(kù)函數(shù)

在C語(yǔ)言以及UNIX系統(tǒng)中,系統(tǒng)調(diào)用(如read)與各系統(tǒng)調(diào)用所使用的庫(kù)函數(shù)(如read)之間幾乎是一一對(duì)應(yīng)的。而微軟定義了一套過(guò)程,稱為Win32API的應(yīng)用程序接口(ApplicationProgramInterface),程序員利用它們?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)制程序中。目前九十一頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)6.6.2假脫機(jī)(Spooling)系統(tǒng)

1.假脫機(jī)技術(shù)

在20世紀(jì)50年代,為了緩和CPU的高速性與I/O設(shè)備低速性間的矛盾,而引入了脫機(jī)輸入、脫機(jī)輸出技術(shù)。該技術(shù)是利用專門(mén)的外圍控制機(jī),先將低速I(mǎi)/O設(shè)備上的數(shù)據(jù)傳送到高速磁盤(pán)上,或者相反。這樣當(dāng)處理機(jī)需要輸入數(shù)據(jù)時(shí),便可以直接從磁盤(pán)中讀取數(shù)據(jù),極大地提高了輸入速度。反之,在處理機(jī)需要輸出數(shù)據(jù)時(shí),也可以很快的速度把數(shù)據(jù)先輸出到磁盤(pán)上,處理機(jī)便可去做自己的事情。目前九十二頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)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)所示。目前九十三頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)SPOOLing系統(tǒng)組成及工作原理目前九十四頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)

SPOOLing系統(tǒng)主要由以下四部分構(gòu)成:

(1)輸入井和輸出井。

(2)輸入緩沖區(qū)和輸出緩沖區(qū)。

(3)輸入進(jìn)程和輸出進(jìn)程。

(4)井管理程序。目前九十五頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)3.?SPOOLing系統(tǒng)的特點(diǎn)

(1)提高了I/O的速度。

(2)將獨(dú)占設(shè)備改造為共享設(shè)備。

(3)實(shí)現(xiàn)了虛擬設(shè)備功能。目前九十六頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)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)假脫機(jī)管理進(jìn)程和假脫機(jī)打印進(jìn)程。目前九十七頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)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ì)列(目錄)中。目前九十八頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)

6.7緩?沖?區(qū)?管?理

在現(xiàn)代操作系統(tǒng)中,幾乎所有的I/O設(shè)備在與處理機(jī)交換數(shù)據(jù)時(shí)都用了緩沖區(qū)。緩沖區(qū)是一個(gè)存儲(chǔ)區(qū)域,它可以由專門(mén)的硬件寄存器組成,但由于硬件的成本較高,容量也較小,一般僅用在對(duì)速度要求非常高的場(chǎng)合,如存儲(chǔ)器管理中所用的聯(lián)想存儲(chǔ)器;設(shè)備控制器中用的數(shù)據(jù)緩沖區(qū)等。目前九十九頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)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è)備之間的并行性。目前一百頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)圖6-22利用緩沖寄存器實(shí)現(xiàn)緩沖目前一百零一頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)6.7.2單緩沖區(qū)和雙緩沖區(qū)

1.單緩沖區(qū)(SingleBuffer)

在單緩沖情況下,每當(dāng)用戶進(jìn)程發(fā)出一I/O請(qǐng)求時(shí),操作系統(tǒng)便在主存中為之分配一緩沖區(qū)。目前一百零二頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)圖6-23單緩沖工作示意圖目前一百零三頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)2.雙緩沖區(qū)(DoubleBuffer)

由于緩沖區(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)題。目前一百零四頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)圖6-24雙緩沖工作示意圖目前一百零五頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)如果在實(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)所示。目前一百零六頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)圖6-25雙機(jī)通信時(shí)緩沖區(qū)的設(shè)置目前一百零七頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)6.7.3環(huán)形緩沖區(qū)

1.環(huán)形緩沖區(qū)的組成

(1)多個(gè)緩沖區(qū)。在環(huán)形緩沖中包括多個(gè)緩沖區(qū),其每個(gè)緩沖區(qū)的大小相同。作為輸入的多緩沖區(qū)可分為三種類型:用于裝輸入數(shù)據(jù)的空緩沖區(qū)R、已裝滿數(shù)據(jù)的緩沖區(qū)G以及計(jì)算進(jìn)程正在使用的現(xiàn)行工作緩沖區(qū)C,如圖6-26所示。目前一百零八頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)圖6-26環(huán)形緩沖區(qū)目前一百零九頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)2.環(huán)形緩沖區(qū)的使用

計(jì)算進(jìn)程和輸入進(jìn)程可利用下述兩個(gè)過(guò)程來(lái)使用形環(huán)緩沖區(qū)。

(1)Getbuf過(guò)程。

(2)Releasebuf過(guò)程。目前一百一十頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)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指針追趕上Nexti指針。目前一百一十一頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)6.7.4緩沖池(BufferPool)

1.緩沖池的組成

緩沖池管理著多個(gè)緩沖區(qū),每個(gè)緩沖區(qū)由用于標(biāo)識(shí)和管理的緩沖首部以及用于存放數(shù)據(jù)的緩沖體兩部分組成。緩沖首部一般包括緩沖區(qū)號(hào)、設(shè)備號(hào)、設(shè)備上的數(shù)據(jù)塊號(hào)、同步信號(hào)量以及隊(duì)列鏈接指針等。目前一百一十二頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)

為了管理上的方便,一般將緩沖池中具有相同類型的緩沖區(qū)鏈接成一個(gè)隊(duì)列,于是可形成以下三個(gè)隊(duì)列:

(1)空白緩沖隊(duì)列emq。

(2)輸入隊(duì)列inq。

(3)輸出隊(duì)列outq。目前一百一十三頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)2.?Getbuf過(guò)程和Putbuf過(guò)程

在數(shù)據(jù)結(jié)構(gòu)課程中,曾介紹過(guò)隊(duì)列和對(duì)隊(duì)列進(jìn)行操作的兩個(gè)過(guò)程:

第一個(gè)是Addbuf(type,number)過(guò)程。該過(guò)程用于將由參數(shù)number所指示的緩沖區(qū)B掛在type隊(duì)列上。

第二個(gè)是Takebuf(type)過(guò)程。它用于從type所指示的隊(duì)列的隊(duì)首摘下一個(gè)緩沖區(qū)。目前一百一十四頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)3.緩沖區(qū)的工作方式

緩沖區(qū)可以工作在如下四種工作方式。目前一百一十五頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)

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)的類型和訪問(wèn)時(shí)間等方面做扼要的闡述。目前一百一十六頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)1.數(shù)據(jù)的組織和格式

磁盤(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)制位。目前一百一十七頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)圖6-28磁盤(pán)的結(jié)構(gòu)和布局目前一百一十八頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)一個(gè)物理記錄存儲(chǔ)在一個(gè)扇區(qū)上,磁盤(pán)上存儲(chǔ)的物理記錄塊數(shù)目是由扇區(qū)數(shù)、磁道數(shù)以及磁盤(pán)面數(shù)所決定的。 【例如】一個(gè)10GB容量的磁盤(pán),有8個(gè)雙面可存儲(chǔ)盤(pán)片,共16個(gè)存儲(chǔ)面(盤(pán)面),每面有16383個(gè)磁道(也稱柱面),63個(gè)扇區(qū)。每個(gè)扇區(qū)600個(gè)字節(jié)。目前一百一十九頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)圖6-29磁盤(pán)的格式化目前一百二十頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)2.磁盤(pán)的類型

對(duì)于磁盤(pán),可以從不同的角度進(jìn)行分類。最常見(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)。目前一百二十一頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)【訪問(wèn)時(shí)間】1、尋道時(shí)間Ts

:將磁頭從當(dāng)前位置移到指定磁道所經(jīng)歷時(shí)間,該時(shí)間是啟動(dòng)磁臂的時(shí)間s與磁頭移動(dòng)n條磁道所花費(fèi)的時(shí)間之和,即

Ts=m×n+s其中,m是一常數(shù),與磁盤(pán)驅(qū)動(dòng)器的速度有關(guān)。對(duì)于一般磁盤(pán),m=0.2;對(duì)于高速磁盤(pán),m≤0.1,磁臂的啟動(dòng)時(shí)間約為2ms。這樣,對(duì)于一般的溫盤(pán),其尋道時(shí)間將隨尋道距離的增加而增大,大體上是5~30ms。目前一百二十二頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)2、旋轉(zhuǎn)延遲時(shí)間Tr:指定扇區(qū)移動(dòng)到磁頭下面所經(jīng)歷時(shí)間。

不同的磁盤(pán)類型中,旋轉(zhuǎn)速度至少相差一個(gè)數(shù)量級(jí),如軟盤(pán)為300r/min,硬盤(pán)一般為7200~15000r/min,甚至更高。對(duì)于磁盤(pán)旋轉(zhuǎn)延遲時(shí)間而言,如硬盤(pán),旋轉(zhuǎn)速度為15000r/min,每轉(zhuǎn)需時(shí)4ms,平均旋轉(zhuǎn)延遲時(shí)間Tr為2ms;而軟盤(pán),其旋轉(zhuǎn)速度為300r/min或600r/min,這樣,平均Tr

為50~100ms。目前一百二十三頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)3、傳輸時(shí)間Tt:指把數(shù)據(jù)從磁盤(pán)讀出或向磁盤(pán)寫(xiě)入數(shù)據(jù)所經(jīng)歷的時(shí)間。Tt的大小與每次所讀/寫(xiě)的字節(jié)數(shù)b和旋轉(zhuǎn)速度有關(guān):其中,r為磁盤(pán)每秒鐘的轉(zhuǎn)數(shù);N為一條磁道上的字節(jié)數(shù),當(dāng)一次讀/寫(xiě)的字節(jié)數(shù)相當(dāng)于半條磁道上的字節(jié)數(shù)時(shí),Tt與Tr相同。因此,可將訪問(wèn)時(shí)間Ta表示為目前一百二十四頁(yè)\總數(shù)一百三十六頁(yè)\編于十九點(diǎn)【例】讀一個(gè)128KB大小的文件

(1)文件由8個(gè)連續(xù)磁道(每個(gè)磁道32個(gè)扇區(qū))上的256個(gè)扇區(qū)構(gòu)成:

20ms+(9.2ms+16.7ms)*8=220ms;

其中,柱面定位時(shí)間為20ms,旋轉(zhuǎn)延遲時(shí)間為9.2ms,32扇區(qū)數(shù)據(jù)傳送時(shí)間為16.7ms;

(2)文件由256個(gè)隨機(jī)分布的扇區(qū)構(gòu)成: (20ms+9.2ms+0.5ms)*256=7373ms;

其中,

溫馨提示

  • 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論