緩沖技術(shù)課件_第1頁
緩沖技術(shù)課件_第2頁
緩沖技術(shù)課件_第3頁
緩沖技術(shù)課件_第4頁
緩沖技術(shù)課件_第5頁
已閱讀5頁,還剩63頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

5.4緩沖技術(shù)

改為了改善中央處理器與外圍設(shè)備之間速

度不配的矛盾,以及協(xié)調(diào)邏輯記錄大小

與物理記錄大小不一致的問題,提高CPU

和I/O設(shè)備的并行性,在操作系統(tǒng)中普遍采

用了緩沖技術(shù)。

改當(dāng)一個進程執(zhí)行寫操作輸出數(shù)據(jù)時,先向系統(tǒng)

申請一個主存區(qū)域一一緩沖區(qū),然后,將數(shù)據(jù)

高速送到緩沖區(qū)。若為順序?qū)懻埱螅瑒t不斷把

數(shù)據(jù)填到緩沖區(qū),直到它被裝滿為止。此后,

進程可以繼續(xù)它的計算,同時,系統(tǒng)將緩沖區(qū)

內(nèi)容寫到I/O設(shè)備上。當(dāng)一個進程執(zhí)行操作輸入

數(shù)據(jù)時,先向系統(tǒng)申請一個主存區(qū)域一一緩沖

區(qū),系統(tǒng)將一個物理記錄的內(nèi)容讀到緩沖區(qū)域

中,然后根據(jù)進程要求,把當(dāng)前需要的邏輯記

錄從緩沖區(qū)中選出并傳送給進程。

吊Md叫零件WKH?中亥李、

海1F藪沖、多緩沖。

5.4.1單緩沖

&對于塊設(shè)備,單緩沖機制如下工作

*對于字符設(shè)備,單緩沖機制如下工作

5.4.2雙緩沖

改輸入數(shù)據(jù)時,首先填滿緩沖區(qū)1,操作系統(tǒng)

可從緩沖區(qū)1把數(shù)據(jù)送到用戶進程區(qū),用戶

進程便可對數(shù)據(jù)進行加工計算;與此同時,

輸入設(shè)備填充緩沖區(qū)2。當(dāng)緩沖區(qū)1空出

后,輸入設(shè)備再次向緩沖區(qū)1輸入。操作

系統(tǒng)又可以把緩沖區(qū)2的數(shù)據(jù)傳送到用戶

進程區(qū),用戶進程開始加工緩沖2的數(shù)據(jù)。

右對于塊設(shè)備,處理或傳輸一塊的時間為

max(C,T),如果C<T,可以保證塊設(shè)備連續(xù)工

作;如果C>T,使得進程不必要等待I/O。雙

緩沖使,效率提高了,但復(fù)雜性也增加了。

543多緩沖

泳操作系統(tǒng)從自由主存區(qū)域中分配一組緩

沖區(qū)組成循環(huán)緩沖,每個緩沖區(qū)的大小

可以等于物理記錄的大小。多緩沖的緩

沖區(qū)是系統(tǒng)的公共資源,可供各個進程

共享,并由系統(tǒng)統(tǒng)一分配和管理。緩沖

區(qū)可用途分為:輸入緩沖區(qū),處理緩沖

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

字符緩存隊I

列控制塊1

&作為操作系統(tǒng)的輔助存儲器,用來存放文件的

磁盤一類高速大容量旋轉(zhuǎn)型存儲設(shè)備,在繁重

的輸入輸出負(fù)載之下,同時會有若干個輸入輸

出請求來到并等待處理。系統(tǒng)必須采用一種調(diào)

度策略,使能按最佳次序執(zhí)行要求訪問的諸請

求,這就叫驅(qū)動調(diào)度,使用的算法叫驅(qū)動調(diào)度

算法。

*驅(qū)動調(diào)度能減少為若干個輸入輸出請求服務(wù)所

需的總時間,從而提高系統(tǒng)效率、除了輸入輸

出請求的優(yōu)化排序外,信息在輔助存儲器上的

排列方式,存儲空間的分配方法都能影響存取

訪問速度。

1存儲設(shè)備的物理結(jié)構(gòu)

右順序存取存儲設(shè)備是嚴(yán)格依賴信息的物

理位置進行定位和讀寫的存儲設(shè)備

&具有存儲容量大、穩(wěn)定可靠、卷可裝卸

和便于保存等優(yōu)點

磁頭(正走,反走,正讀,反讀,正寫,反寫,到帶)

V

■塊間塊問塊間塊間塊■

始點末點

1隙2隙3隙i隙i+1

直接存取存儲設(shè)備

泳磁盤是一種直接存取存儲設(shè)備,又叫隨

機存取存儲設(shè)備。它的每個物理記錄有

確定的位置和唯一的地址,存取任何一

個物理塊所需的時間幾乎不依賴于此信

息的位置。

詡可磁盤上的一個物理記錄,必須給

出三個參數(shù):柱面號、磁頭號、塊號

*磁盤機根據(jù)柱面號控制臂作機械的橫向移動,

帶動讀寫磁頭到達(dá)指定柱面,這個動作較慢,

一般稱作'查找時間',平均需20毫秒左右。

*下一步從磁頭號可以確定數(shù)據(jù)所在的盤,然后

等待被訪問的信息塊旋轉(zhuǎn)到讀寫頭下時,按塊

號進行存取,這段等待時間稱為“搜索延遲”,

平均要10毫秒。

改磁盤機實現(xiàn)些操作的通道命令是:查找、搜索、

轉(zhuǎn)移和讀寫。

552循環(huán)排序

為考慮每一磁道保存4個記錄的旋轉(zhuǎn)型設(shè)備,

假定收到以下四個輸入輸出請求并且存

在一條到該設(shè)備的可用道路。

》請示次序記錄號

區(qū)(1)讀記錄4

&(2)讀記錄3

&(3)讀記錄2

》(4)讀記錄1

對這些輸入輸出請求有多種排序方法

8?方法1:如果調(diào)度算法按照輸入輸出請求次

序讀記錄4、3、2、1,假定平均要用1/2的周

來定位,再加上1/4周讀出記錄,則總的處理

時間等于3周,即60毫秒。

也?方法2:如果調(diào)度算法決定的讀入次序為

讀記錄1、2、3、4o那么,總的處理時間等

于1,5周,即30毫秒。

4?方法3:如果我們知道當(dāng)前讀位置是記錄3,

則調(diào)度算法采用的次序為讀記錄4、1、2、3

會更好。總的處理時間等于1周,即20毫秒。

553優(yōu)化分布

改信息在存儲空間的排列方式也會影響存

取等待時間。考慮10個邏輯記錄A,

B……,J被存于旋轉(zhuǎn)型設(shè)備上,每道存

放10個記錄,可安排如下:

&物理塊邏輯紀(jì)錄

&1-10A-J

10毫秒(移動到記錄A的平均時間)+2毫秒(讀

記錄A)+4毫秒(處理記錄A)+9X[16毫秒(訪

問下一記錄)+2毫秒(讀記錄)+4毫秒(處理

記錄)]=214毫秒

方式對信息分布優(yōu)化

物理塊邏輯紀(jì)錄

1A

2H

3E

4B

5I

6F

7C

8J

9G

10D

10毫秒(移動到記錄A的平均時間)+10義[2毫

秒(讀記錄)X4毫秒(處理記錄)]=70

毫秒

度亨

5.5.4交替地址

2詠&

U\、,■/v

?^C>

Jf7

5.5.5搜查定位

小移臂調(diào)度有若干策略

“電梯調(diào)度”算法

“最短查找時間優(yōu)先”算法

“掃描”算法

“分步掃描”算法

“單向掃描”算法

區(qū)第1和第2兩種算法,在單位時間內(nèi)處理的輸入

輸出請求較多即吞吐量較大,但是請求的等待

時間較長,第1種算法使等待時間更長一些。

一般說來“掃描”算法較好,但它不分具體情

況而掃過所有柱面造成性能不夠好。“分步掃

描”算法使得各個輸入輸出請求等待時間之間

的差距最小,而吞吐量適中。“單向掃描”僅

適應(yīng)有不斷大批量輸入輸出存取請求,且磁道上

存放記錄數(shù)量較大的情況。

56獨立磁盤冗余陣列

先獨立磁盤冗余陣列它是利用一臺磁盤陣列控制器

統(tǒng)一管理和控制一組磁盤驅(qū)動器,組成一個速度

塊、可靠性高、性能價格比好的大容量磁盤系統(tǒng)。

*RAID的提出填補了CPU速度快與磁盤設(shè)備速度慢

之間的間隙,其策略是:用一組較小容量的、獨立

的、可并行工作的磁盤驅(qū)動器組成陣列來代替單

一的大容量磁盤,再加進冗余技術(shù),數(shù)據(jù)能用多種

方式組織和分布存儲,于是,獨立的I/O請求能被并

行處理,數(shù)據(jù)分布的單個I/O請求也能并行地從多

個磁盤驅(qū)動器同時存取數(shù)據(jù),從而,改進了I/O性能

和系統(tǒng)可靠性。

RAID樣式共有6級組成

&RAIDO至RAID5,最新又?jǐn)U充了RAID6和RAID7,

它們之間并不隱含層次關(guān)系,而是標(biāo)明了不同

的設(shè)計結(jié)構(gòu),

*有三個共同特性:①RAID是一組物理磁盤驅(qū)動器,

可以被操作系統(tǒng)看作是單一的邏輯磁盤驅(qū)動器;

②數(shù)據(jù)被分布存儲在陣列橫跨的物理驅(qū)動器上;

③冗余磁盤的作用是保存奇偶校驗信息,當(dāng)磁

盤出現(xiàn)失誤時它能確保數(shù)據(jù)的恢復(fù)。

在RAM支持第三個特性,采用把大塊數(shù)據(jù)分割成

"數(shù)據(jù)子塊(strip),交替間隔地分布存儲,但未引入

冗余磁盤,適用于性能要求高,但非要害數(shù)據(jù)這

類應(yīng)用。

*DAID1采用鏡像技術(shù),適用于做系統(tǒng)驅(qū)動器,存放

關(guān)鍵的系統(tǒng)文件。

*RAID2和RAID3主要采用了并行存取技術(shù),分別還

引入海明(Hammingcode)校驗碼和位打入(bit

interleaved)奇偶校驗碼改進可靠性,適用于大數(shù)據(jù)

量I/O請求,如圖像和CAD這類的應(yīng)用。

&RAID4和RAID5主要采用了獨立存取技術(shù),分別還

引入塊桿入(blockinterleaved)奇偶校驗碼和塊桿入

分布式(blockinterleaveddistributed)希彳禺校驗碼詼進

可靠性,適用于I/O請求頻繁的事務(wù)處理。

RAIDlevel0

為用戶和系統(tǒng)的數(shù)據(jù)劃成子塊被分布存儲在橫跨陣

列中的所有磁盤上,

改邏輯上連續(xù)的數(shù)據(jù)子塊,在物理上可被依次存儲

在橫向相鄰的磁盤驅(qū)動器上,

&通過一個陣列管理軟件進行邏輯地址空間到物理

地址空間的映射。

*與單個大磁盤相比有著明顯優(yōu)點,它能并行地處

理要求位于不同磁盤上數(shù)據(jù)的不同I/O請求。RAID

level。并不能真正劃入RAID家族,因為它沒有引入

冗余校驗來改進性能,導(dǎo)致磁盤系統(tǒng)的可靠性差,

容易丟失數(shù)據(jù),故己較少使用。

RAIDlevel1

&RAID1簡單地采用雙份所有數(shù)據(jù)的辦法,數(shù)據(jù)劃成子塊被

分布存儲在橫跨陣列中的所有磁盤上,但是,每個數(shù)據(jù)子

塊被存儲到兩個獨立的物理磁盤上,故陣列中的每個盤都

有一個包含相同數(shù)據(jù)的它的鏡像盤。

*這種數(shù)據(jù)組織方法的主要可取之處在于:

①讀請求能通過包含相同請求數(shù)據(jù)中的任何一個磁盤來提

供服務(wù),其中的一個所化查找和搜索時間最少;

②寫操作時,要求改寫對應(yīng)的兩個數(shù)據(jù)子塊,但這一點可

采用并行操作實現(xiàn),寫操作的性能由并行操作中較慢的一

個決定;

③出現(xiàn)故障后的恢復(fù)很簡單,當(dāng)一個驅(qū)動器出現(xiàn)故障,數(shù)

據(jù)可以從鏡像盤獲得。

RAID1缺點是價格太貴,空間利用率僅有一半,往往作為存

放系統(tǒng)軟件、關(guān)鍵數(shù)據(jù)和要害文件的驅(qū)動器;但是當(dāng)磁盤故

障時,它提供了一個實時的數(shù)據(jù)備份,所有的數(shù)據(jù)信息立

即可用。

RAIDlevel2

*RAID2采用了并行存取技術(shù)。在并行存取陣列中,所有的磁

盤參與每個I/O請求的執(zhí)行,且每個驅(qū)動器的移動臂同步工

作,使得任何時刻每個磁盤的磁頭都在相同的位置。RAID2

和RAID3的數(shù)據(jù)子塊非常小,常常小到單個字節(jié)或一個字。

對于RAID2糾錯碼按照橫跨的每個數(shù)據(jù)盤的相應(yīng)位進行計算,

并存儲在多只奇偶校驗盤的相應(yīng)位的位置。典型地使用海明

校驗碼,它能糾正單位錯,發(fā)現(xiàn)雙位錯。

為雖然RAID2所需磁盤數(shù)少于RAID1,但價格仍然很貴。所需奇

偶校驗磁盤的數(shù)量與數(shù)據(jù)盤的多少成比例。在執(zhí)行單個讀操

作時,所有的磁盤要被同時存取,請求的數(shù)據(jù)和關(guān)聯(lián)的糾錯

碼都提交給陣列控制器,如果發(fā)現(xiàn)有一個二進位錯,陣列

控制器能立即確認(rèn)和糾正錯誤,所以讀操作時間并未變陵

在執(zhí)行單個寫請求時,所有的數(shù)據(jù)盤和奇偶校驗盤必須被存

取。

RAIDlevel3

*RAID3的組織與RAID2相似,其差別是它僅使用一只冗余

盤,而不論是多大的磁盤陣列。

當(dāng)出現(xiàn)磁盤故障時,要使用奇偶校驗盤的信息,數(shù)據(jù)可以

用剩下的磁盤中的信息來重新構(gòu)造,考慮有五個磁盤驅(qū)

動器組成的陣列,若X0到X3存放數(shù)據(jù),X4為奇偶校驗盤,

對于第i位的奇偶校驗位可如下計算:

X4(i)=X3(i)?X2(i)?X1(i)?X0(i)

假定驅(qū)動器X1出故障,如果把X4(i)X1(i)加到上面等式的兩邊,

得至U

X1(i)=X4(i)十X3(i)十X2(i)十XO(i)

因此,在陣列中的任何一只數(shù)據(jù)盤上的任一數(shù)據(jù)子塊的

內(nèi)容,都能從陣列中剩余下來的其它磁盤的對應(yīng)數(shù)據(jù)子

塊的內(nèi)容來重新生成,這個原理適用于RAID3、RAID4和

RAID5o

RAIDlevel4

為RAID4和RAID5使用了獨立存取技術(shù),在

一個獨立存取的磁盤陣列中,每個驅(qū)動

器都可以獨立地工作,所以,獨立的I/O

請求可以被并行地得到滿足。因此獨立

存取陣列適合于有頻繁I/O請求的應(yīng)用。

&鯉釉符Fb數(shù)據(jù)量寫操作時,陣列管理軟件

示或修改用戶數(shù)據(jù),而且也要修改對應(yīng)的奇偶

校驗位。考慮有五個驅(qū)動器組成的一個陣列,X0

到X3存儲數(shù)據(jù),X4是奇偶校驗磁盤。假如執(zhí)行一

個僅僅涉及磁盤X1上數(shù)據(jù)的寫操作。開始的時候,

對每一個二進位i,有下列關(guān)系式:

X4(i)=X3(i)十X2(i)十X1(i)十XO(i)

在數(shù)據(jù)修改之后,對于改變了的二進位用'符號來

指出,得到:

X4,(i)=X3(i)十X2(i)十X1,(i)十XO(i)

=X3(i)十X2(i)十X1,(i)十XO(i)十X1(i)十X1(i)

=X4(i)十X1(i)十X1,(i)

為了計算新的奇偶校驗位,陳列管理軟件必須讀出

老的用戶數(shù)據(jù)子塊和老的奇偶校驗碼,因此每個

數(shù)據(jù)寫操作包含了兩次讀操作和兩次寫操作。

RAIDlevel5

&RAID5的組織形式與RAID4類似,差別僅

奇偶校驗碼是分布橫跨存放在所有的磁

盤上,典型的存放方法為輪轉(zhuǎn)法,設(shè)有n

個磁盤的一個陣列,則開頭的n個奇偶校

驗碼螺旋式地位于n個磁盤上(即每個盤上

有一個奇偶校驗碼),接著按這個模式再

次重復(fù)。采用螺旋式把奇偶校驗碼分布

橫跨存放在所有的磁盤上,能避免RAID4

中發(fā)生的奇偶校驗盤湖瓶頸口問題。

Dlevel6和RAIDlevel7

為這是增強型RAID。RAID6中設(shè)置了專用快

速的異步校驗磁盤,具有獨立的數(shù)據(jù)訪

問通路,比低級RAID性能更好,但價格

昂貴。RAID7對RAID6作了改進,該陣列

中的所有磁盤都有較高傳輸速率,性能

優(yōu)異,但價格也很高。

是高磁盤I/O速度的一些方法

改提前讀。用戶經(jīng)常采用順序方式訪問文件的各

個盤塊上的數(shù)據(jù),在讀當(dāng)前盤塊時已能知道下

次要讀出的盤塊的地址,因此,可在讀當(dāng)前盤

塊的同時,提前把下一個盤塊數(shù)據(jù)也讀入磁盤

緩沖區(qū)。這樣一來,當(dāng)下次要讀盤塊中的那些

數(shù)據(jù)時,由于已經(jīng)提前把它們讀入了緩沖區(qū),

便可直接使用數(shù)據(jù),而不必再啟動磁盤I/O,從

而,減少了讀數(shù)據(jù)的時間,也就相當(dāng)于提高了

磁盤I/O速度。”提前讀”功能已被許多操作系

統(tǒng)如Unix、Windows等廣泛采用。

》至遲溝在執(zhí)行寫操作時,磁盤緩沖區(qū)中的數(shù)據(jù)

本來應(yīng)該立即寫回磁盤,但考慮到該緩沖區(qū)中的

數(shù)據(jù)不久之后再次被輸出進程或其它進程訪問,

因此,并不馬上把緩沖區(qū)中數(shù)據(jù)寫盤,而是把它

掛在空閑緩沖區(qū)隊列的末尾。隨著空閑緩沖區(qū)的

使用,存有輸出數(shù)據(jù)的緩沖區(qū)也不停地向隊列頭

移動,直至移動到空閑緩沖區(qū)隊列之首。當(dāng)再有

進程申請緩沖區(qū),且分到了該緩沖區(qū)時,才把其

中的數(shù)據(jù)寫到磁盤上,于是這個緩沖區(qū)可作為空

閑緩沖區(qū)分配了。只要存有輸出數(shù)據(jù)的緩沖區(qū)還

在隊列中,任何訪問該數(shù)據(jù)的進程,可直接從中

讀出數(shù)據(jù),不必再去訪問磁盤。這樣做,可以減

少磁盤的I/O時間,相當(dāng)于提高了I/O速度。同樣,

在Unix和Windows中也采用了這一技術(shù)。

5.6設(shè)備分配

區(qū)561設(shè)備獨立性

通常用戶不指定特定的設(shè)備,而指定邏

輯設(shè)備,使得用戶作業(yè)和物理設(shè)備獨立

開來,再通過其它途徑建立邏輯設(shè)備和

物理設(shè)備之間的對應(yīng)關(guān)系,我們稱這種

特性為“設(shè)備獨立性”

設(shè)備獨立性帶來的好處

改用戶與物理的外圍設(shè)備無關(guān),系統(tǒng)增減

或變更外圍設(shè)備時程序不必修改;易于

對付輸入輸出設(shè)備的故障

改從設(shè)備的特性來看,可以把設(shè)備分成獨

占設(shè)備、共享設(shè)備和虛擬設(shè)備三類,

改相應(yīng)的管理和分配外圍設(shè)備的技術(shù)可分

成:獨占方式、共享方式和虛擬方式,

操作系統(tǒng)中,對I/O設(shè)備的分配

算法常用的有:

&先請求先服務(wù),優(yōu)先級高者先服務(wù)等。

此外,在多進程請求I/O設(shè)備分配時,應(yīng)

防止因循環(huán)等待對方所占用的設(shè)備而產(chǎn)

生死鎖,應(yīng)預(yù)先進行性檢查。

實現(xiàn)I/O設(shè)備的分配

&系統(tǒng)中應(yīng)設(shè)有設(shè)備分配的數(shù)據(jù)結(jié)構(gòu):設(shè)備類表

和設(shè)備表。

*系統(tǒng)中擁有一張設(shè)備類表,每類設(shè)備對應(yīng)于設(shè)

備表中的一欄,其包括的內(nèi)容通常有:設(shè)備類、

總臺、空閑臺數(shù)和設(shè)備表起始地址等。

*每一類設(shè)備,如輸入機、行式打印機等都有各

自的設(shè)備表,該表用來登記這類設(shè)備中每一臺

設(shè)備的狀態(tài),其包含的內(nèi)容通常有:物理設(shè)備

名、邏輯設(shè)備名、占有設(shè)備的進程號、已分配/

未分配、好、壞等。按照上述分配使用的數(shù)據(jù)

結(jié)構(gòu),不難設(shè)計出I/O設(shè)備的分配流程。

5.7虛擬設(shè)備

★靜態(tài)分配方式是不利于提高系統(tǒng)效率的

&采用脫機外圍設(shè)備操作

右聯(lián)機同時外圍設(shè)備操作(又稱作假脫機操

作)

斯普林系統(tǒng)的設(shè)計和實現(xiàn)

*'井”是用作緩沖的存儲區(qū)域,采用井的

技術(shù)能調(diào)節(jié)供求之間的矛盾,消除人工

干預(yù)帶來的損失。

&“預(yù)輸入程序”;能將信息從輔助存儲

器輸出緩沖區(qū)域輸出到輸出設(shè)備的“緩

輸出程序”以及控制作業(yè)和輔助存儲器

緩沖區(qū)域之間交換信息的“井管理程

序”。

X-

中的作業(yè)有四種狀態(tài):

&?輸入狀態(tài):作業(yè)的信息正從輸入設(shè)

備上預(yù)輸入。

**收容收態(tài):作業(yè)預(yù)輸入結(jié)束但未被

選中執(zhí)行。

也?執(zhí)行狀態(tài):作業(yè)已被選中,它可從

輸入井讀取信息可向輸出井寫信息。

區(qū)?完成狀態(tài):作業(yè)已經(jīng)撤離,該作業(yè)

的執(zhí)行結(jié)果等待緩輸出。

*作業(yè)表用來登記進入系統(tǒng)的所有作業(yè)的

作業(yè)名、狀態(tài)、預(yù)輸入表位置等信息。

*每個用戶作業(yè)擁有一張預(yù)輸入表用來登

記該作業(yè)的各個文件的情況,包括設(shè)備

類、信息長度及存放位置等。

改每個用戶作業(yè)擁有一張緩輸出表的格式

包括作業(yè)名、作業(yè)狀態(tài)、文件名、設(shè)備

類、數(shù)據(jù)起始位置、數(shù)據(jù)當(dāng)前位置等項。

井文件空間的管理

內(nèi)第一種方式是連接方式,輸入的信息被組織成連接文件,文件的第

一塊信息的位置登記在預(yù)輸入表中,以后各塊用指針連起來,讀出n

塊后,由連接指針就可找到第n+1塊數(shù)據(jù)的位置。這種方式的優(yōu)點

是數(shù)據(jù)信息可以不連續(xù)存放,文件空間利用率高。

&第二種是計算方式,假定從讀卡機上讀入信息并存放到磁盤的井文

件空間,每張卡片為80個字節(jié),每個磁道可存放100個80字節(jié)的記錄,

若每個柱面有20個磁道,則一個柱面可以存放2000張卡片信息。如

果把2000張卡片作為一疊存放在一個柱面上,于是輸入數(shù)據(jù)在磁盤

上的位置為:第一張卡片信息是0號磁道的第1個記錄,第二張卡

片信息是0號第2個記錄,第101張卡片信息是1號磁道的第1個記錄,

那么,第n姓卡片信息被存放在:

&磁道號=卡片號n/100

&記錄號=(卡片號n)mod100

*用卡片號n除以100的整數(shù)和余數(shù)部分分別為其存放的磁道號和記錄

號。

A5.8.1WindowsNT4的設(shè)備管理

&WindowsNT4設(shè)備管理(I/O系統(tǒng))的設(shè)計目標(biāo)如下:

*?加快單處理器或多處理器系統(tǒng)的I/O處理。

&?使用標(biāo)準(zhǔn)的Windows2000安全機制保護共享資源。

*?滿足WIN32、0S2和POSIX子系統(tǒng)指定的I/O服務(wù)的需要。

&?提供服務(wù),使得設(shè)備驅(qū)動程序的開發(fā)盡可能簡單。

&?允許在系統(tǒng)中動態(tài)地添加和刪除設(shè)備驅(qū)動程序。

N?支持FAT、NTFS和CDFS等多種可安裝的文件系統(tǒng)。

&?為映像活動、文件高速緩存和應(yīng)用程序提供映射文

件I/O的能力。

土系統(tǒng)API是內(nèi)部的執(zhí)行體系統(tǒng)服務(wù),子

系統(tǒng)DLL調(diào)用它們來實現(xiàn)子系統(tǒng)的文檔化的

I/O函數(shù)。

&?I/O管理器負(fù)責(zé)驅(qū)動I/O請求的處理。

改?核心態(tài)設(shè)備驅(qū)動程序把I/O請求轉(zhuǎn)化為對硬

件設(shè)備的特定的控制請求。

驅(qū)動程序支持例程被設(shè)備驅(qū)動程序調(diào)用來

完成它們的I/O請求。

硬件抽象層HALI/O訪問例程把設(shè)備驅(qū)動程

序與各種各樣的硬件平臺隔離開來,是它們

在給定的體系結(jié)構(gòu)家族中是二進制可移植的,

并且在Windows2000支持的硬件體系結(jié)構(gòu)中是

源代碼可移植的。

十五用.1.3設(shè)備驅(qū)動程序

為WindowsNT4支持以下三類設(shè)備驅(qū)動程序:

》?虛擬設(shè)備驅(qū)動程序VDD:用于模擬16位DOS應(yīng)

用程序,它們俘獲DOS應(yīng)用程序?qū)/O端口的引

用,并將它們轉(zhuǎn)化為本機WIN32I/O函數(shù)。所以

DOS應(yīng)用程序不能直接訪問硬件,必須通過一

個真正的核心態(tài)設(shè)備驅(qū)動程序。

*?WIN32子系統(tǒng)顯示驅(qū)動程序和打印驅(qū)動程序

(總稱核心態(tài)圖形驅(qū)動程序):用于將與設(shè)備

無關(guān)的圖形GDI請求轉(zhuǎn)化為設(shè)備專用請求。

*?核心態(tài)設(shè)備驅(qū)動程序:它們是能夠直接控制

和訪問硬件設(shè)備的唯一驅(qū)動程序類型。

亥心態(tài)設(shè)備驅(qū)動程序的類型有:

*?低層硬件設(shè)備驅(qū)動程序:它直接訪問和控制硬件設(shè)備。

&?類驅(qū)動程序:為某一類設(shè)備執(zhí)行I/O處理,例如磁盤、

磁帶、光盤。

&?端口驅(qū)動程序:實現(xiàn)了對特定于某一種類型的I/O端口

的I/O請求的處理,如SCSI。

&?小端口驅(qū)動程序:把對端口類型的一般的I/O請求映射

到適配器類型,如一個特定的SCSI適配器。

&?文件系統(tǒng)驅(qū)動程序:接受到文件的I/O請求,并通過發(fā)

布它們自己的、更明確的請求給物理設(shè)備驅(qū)動程序來滿

定該請求。

&?文件系統(tǒng)過濾器驅(qū)動程序:截取I/O請求,執(zhí)行另外的

處理,并且將它們傳遞給更低層的驅(qū)動程序,例如容錯

磁盤驅(qū)動程序FTDISK.SYS。

X-

8?初始化例程:I/O系統(tǒng)加載驅(qū)動程序后首先執(zhí)行,以創(chuàng)建

系統(tǒng)對象。

&?調(diào)度例程集:提供設(shè)備驅(qū)動調(diào)度函數(shù)。

&?啟動I/O例程:初始化與設(shè)備之間的數(shù)據(jù)傳輸。

&?中斷服務(wù)例程:處理設(shè)備中斷。

*?中斷服務(wù)DPC例程:在ISR執(zhí)行以后的設(shè)備中斷處理。

&另外,設(shè)備驅(qū)動程序還可能有以下一些例程:

&?完成例程:用來告知分層驅(qū)動程序一個較低層的驅(qū)動程

序何時完成一個IRP處理。

&?取消I/O例程:用來取消一個可以被取消的I/O操作。

%?卸載例程:用于釋放驅(qū)動程序正在使用的系統(tǒng)資源,使

得I/O管理器可以從內(nèi)存當(dāng)中刪除它們。

&?系統(tǒng)關(guān)閉通知例程:用于在系統(tǒng)關(guān)閉時做清理工作。

8?錯誤紀(jì)錄例程:用于在錯誤發(fā)生時紀(jì)錄發(fā)生的事情。

5^.2Win€loWs

5.8.2.1即插即用和電源管理

也即插即用和電源管理是硬件和軟件支持

的結(jié)合,這種結(jié)合使得計算機只需要極

少的用戶干預(yù)或完全不需要用戶干預(yù)就

能識別和適應(yīng)硬件配置的更改。

&Windows2000即插即用結(jié)構(gòu)的設(shè)計目標(biāo)有兩個:

3??在支持用于即插即用工業(yè)硬件標(biāo)準(zhǔn)的同時,為了實現(xiàn)即插

用和電源管理,擴展原有的NT輸入輸出底層結(jié)構(gòu)。

&?實現(xiàn)通用設(shè)備驅(qū)動程序接口,這些接口在Windows98

Windows2000下支持許多設(shè)備類的即插即用和電源管理。

*Windows2000提供以下的即插即用支持:

&?已安裝硬件的自動和動態(tài)識別。

&?硬件資源的分配和再分配。

&?加載適當(dāng)?shù)尿?qū)動程序。

*?與即插即用系統(tǒng)相互作用的驅(qū)動程序接口。

&?與電源管理的相互作用。

&?設(shè)備通知事件的登記。

*Windows2000為了能夠支持即插即用和電源管理,

設(shè)備程序的初始化較NT4作了很大修改。這些修改

如下:

&?總線驅(qū)動程序從HAL中分離。在新的構(gòu)造中,為了與現(xiàn)

有的核心態(tài)組件如執(zhí)行體、驅(qū)動程序和HAL的更改和擴展

一致,總線驅(qū)動程序從HAL中分離出去。

&?支持設(shè)備安裝和設(shè)備配置的新方法和新功能。新的設(shè)計

包括對NT4中用戶態(tài)組件的更改和擴展,如:假脫機、類

安裝程序、控制面板應(yīng)用程序和安裝程序。另外系統(tǒng)增加

了新的核心態(tài)和用戶態(tài)即插即用組件。

&?從注冊表重讀寫信息的新的即插即用API。在新的設(shè)計中,

對注冊表結(jié)構(gòu)進行了更改和擴展,其結(jié)構(gòu)支持即插即用,

同時具備向后兼容功能。

.8.2.4即插即用結(jié)構(gòu)

4

功能部件的作用是

&?用戶態(tài)即插即用組件:用于控制和配置設(shè)備的用戶

態(tài)API。

'-1/0管理器:負(fù)責(zé)驅(qū)動I/O請求的處理,為設(shè)備驅(qū)動程

序提供核心服務(wù)。它把用戶態(tài)的讀寫轉(zhuǎn)化為I/O請求包

IRPo其工作方式和工作原理與NT4相同。

*?核心態(tài)即插即用管理器:指導(dǎo)總線驅(qū)動程序執(zhí)行枚舉

和配置、執(zhí)行添加設(shè)備和啟動設(shè)備操作,同時還負(fù)責(zé)

協(xié)調(diào)即插即用程序的用戶態(tài)部分來暫停或刪除可用于

這類操作的設(shè)備。即插即用管理器維護著一棵設(shè)備樹,

驅(qū)動程序管理器可以查看該設(shè)備樹,跟蹤系統(tǒng)中活動

驅(qū)動程序及其與活動設(shè)備有關(guān)的信息。當(dāng)系統(tǒng)添加和

刪除設(shè)備或進行資源再分配時,即插即用管理器便更

新設(shè)備樹。

先叫原管理需和策略管理器:電源管理器是核心

W縉件,它和策略管理器一起工作,處理電源管

理API,協(xié)調(diào)電源事件并生成電源管理IRP。策略

管理器監(jiān)控系統(tǒng)中的活動,將用戶狀態(tài)、應(yīng)用程

序狀態(tài)和設(shè)備管理程序狀態(tài)集成為電源策略,在

特定環(huán)境或請求條件中生成更改電源狀態(tài)的IRP。

*?即插即用WDM接口:I/O系統(tǒng)為驅(qū)動程序提供了

分層結(jié)構(gòu),這一結(jié)構(gòu)包括WDM驅(qū)動程序、驅(qū)動程

序?qū)雍驮O(shè)備對象。WDM驅(qū)動程序可以分為三類:

總線驅(qū)動程序、功能驅(qū)動程序和篩選驅(qū)動程序。

每一個設(shè)備都含有兩個以上的驅(qū)動程序?qū)樱河糜?/p>

支持它所基于的I/O總線的總線驅(qū)動程序,用于支

持設(shè)備的功能驅(qū)動程序,以及可選的對總線、設(shè)

備或設(shè)備類的I/O請求進行分類的篩選驅(qū)動程序。

另外,驅(qū)動程序為它所控制的每一個設(shè)備創(chuàng)建設(shè)

備對象。

“期M總線驅(qū)動程序:它控制總線電源控制和即

插即用。在即插急用描述表中,任何枚舉其他設(shè)

備的設(shè)備都被看作是一個總線。總線驅(qū)動程序的

主要任務(wù)是:枚舉總線上的設(shè)備,標(biāo)志它們病危

它們創(chuàng)建設(shè)備對象;向操作系統(tǒng)報告總線上的動

態(tài)事件;響應(yīng)即插即用和電源管理IRP;對總線的

多路復(fù)用;管理總線上的設(shè)備。

3?WDM驅(qū)動程序:包括功能驅(qū)動程序/小功能驅(qū)動

程序?qū)秃Y選驅(qū)動程序。在驅(qū)動程序?qū)χ校愹?qū)

動程序(一般由操作系統(tǒng)提供)提供所有這一類

設(shè)備所需要的功能,小功能驅(qū)動程序(一般由廠

家提供)提供一個特定設(shè)備所需要的功能。功能

驅(qū)動程序除了為設(shè)備提供操作接口以外,還提供

電源管理功能和執(zhí)行操作的有關(guān)信息,該操作與

休眠和滿負(fù)荷工作狀態(tài)之間的轉(zhuǎn)換有關(guān)。

5.9實例研究:Linux的設(shè)備管理

A5.9.1Linux的設(shè)備管理概述

在Linux操作系統(tǒng)中,輸入輸出設(shè)備可以分為字符設(shè)

備、隹設(shè)備和網(wǎng)絡(luò)設(shè)備。

塊設(shè)備把信息存儲在可尋址的固定大小的數(shù)據(jù)塊

中,數(shù)據(jù)塊均可以被獨立地讀寫,建立塊緩沖,

能隨機訪問數(shù)據(jù)塊。

字符設(shè)備可以發(fā)送或接收字符流,通常無法編址,

也不存在任何尋址操作。

網(wǎng)絡(luò)設(shè)備在Linux中是一種獨立的設(shè)備類型,有一些

特殊的處理方法。也有一些設(shè)備無法利用上述方

法分類,如時鐘,他們也需要特殊的處理。

也在邙1UX中,所有的硬件設(shè)備均當(dāng)作特殊的

設(shè)備文件處理,可以使用標(biāo)準(zhǔn)的文件操作。

*對于字符設(shè)備和塊設(shè)備,其設(shè)備文件用

mknod命令創(chuàng)建,用主設(shè)備號和次設(shè)備號

標(biāo)識,同一個設(shè)備驅(qū)動程序控制的所有設(shè)

備具有相同的主設(shè)備號,并用不同的次設(shè)

備號加以區(qū)別。

&網(wǎng)絡(luò)設(shè)備也是當(dāng)作設(shè)備文件來處理,不同

的是這類設(shè)備由Linux創(chuàng)建,并由網(wǎng)絡(luò)控制

器初始化。

*Linux核心具體負(fù)責(zé)I/O設(shè)備的操作,這些管理和控制硬件設(shè)備控制器的

程序代碼稱為設(shè)備驅(qū)動程序,它們是常駐內(nèi)存的底層硬件處理子程序,

具體控制和管理I/O設(shè)備。雖然設(shè)備驅(qū)動程序的類型很多,它們都有以

下的共同特性:

*?核心代碼。設(shè)備驅(qū)動程序是Linux核心的重要組成部分,在內(nèi)核運行。

如果出現(xiàn)錯誤,則可能造成系統(tǒng)的嚴(yán)重破壞。

&?核心接口。設(shè)備驅(qū)動程序提供標(biāo)準(zhǔn)的核心接口,供上層軟件使用。

山?核心機制和服務(wù)。設(shè)備驅(qū)動程序使用標(biāo)準(zhǔn)的核心系統(tǒng)服務(wù),如內(nèi)存

分配、中斷處理、進等待隊列等待。

*?可裝載性。絕大多數(shù)設(shè)備驅(qū)動程序可以根據(jù)需要以核心模塊的方式

裝入,在不需要是可以卸裝。

為?可配置性。設(shè)備驅(qū)動程序可以編譯并鏈接進入Linux核心。當(dāng)編譯Linux

核心時,可以指定并配置你所需要的設(shè)備驅(qū)動程序。

*?動態(tài)性。系統(tǒng)啟動時將監(jiān)測所有的設(shè)備,當(dāng)一個設(shè)備驅(qū)動程序?qū)?yīng)的

設(shè)備不存在時,該驅(qū)動程序?qū)⒈婚e置,僅占用了一點內(nèi)存而己。

設(shè)備輸入輸出

為Linux的設(shè)備驅(qū)動程序可以通過查詢

(polling)>中斷和直接內(nèi)存訪問等多種形

式來控制設(shè)備進行輸入輸出。

生查洲為式,Linux專門引入了系統(tǒng)定時器,以便每隔一段

時間才查詢一次設(shè)備的狀態(tài),從而解決忙式查詢帶來的

效率下降問題。Linux的軟盤驅(qū)動程序就是以這樣一種方

式工作的。即便如此,查詢方式依然存在著效率問題。

*中斷I/O控制方式,在中斷方式下,Linux核心能夠把中斷傳

遞到發(fā)出I/O命令的設(shè)備驅(qū)動程序。為了做到這一點,設(shè)

備驅(qū)動程序必須在初始化時向Linux核心注冊所使用的中

斷編號和中斷處理子程序入口地址,/proc/interrupts文件歹U

出了設(shè)備驅(qū)動程序所使用的中斷編號。

為硬盤設(shè)備、SCSI設(shè)備等高速I/O設(shè)備,Linux采用DMA方式

進行I/O控制,這是稀有資源一共只有7個。DMA控制器不

能使用虛擬內(nèi)存,且由于其地址寄存器只有16位(加上

頁面寄存器8位),它只能訪問系統(tǒng)最低端的16M內(nèi)存。

DMA也不能被不同的設(shè)備驅(qū)動程序共享,因此一些設(shè)備

獨占專用的DMA,另一些設(shè)備互斥使用DMA。Linux使用

dma_chan數(shù)據(jù)結(jié)構(gòu)跟蹤DMA的使用情況,它包括擁有者的

名字和分配標(biāo)志兩個字段,可以使用cat/proc/dma命令列

出dma_chan的內(nèi)容。

'A一個典型的Linux系統(tǒng)一般包括

一個DOS分區(qū)、

一個EXT2分區(qū)(Linux主分區(qū))、

一個Linux交換分區(qū)、

以及零個或多個擴展用戶分區(qū)O

2在1踴次系統(tǒng)中,IDE系統(tǒng)(InergratedDiskElectronic,

一種磁盤接口)和SCSI系統(tǒng)(SmallComputerSystem

Interface,一種I/O總線)的管理有所不同。Linux系

統(tǒng)使用的大多數(shù)硬盤都是IDE硬盤,每一個IDE

控制器可以掛接兩個IDE硬盤,一個稱為主硬盤,

一個稱為從硬盤。一個系統(tǒng)可以有多個IDE控制

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論