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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

5.4緩沖技術

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

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

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

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

用了緩沖技術。

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

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

高速送到緩沖區(qū)。若為順序寫請求,則不斷把

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

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

內容寫到I/O設備上。當一個進程執(zhí)行操作輸入

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

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

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

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

吊Md叫零件WKH?中亥李、

海1F藪沖、多緩沖。

5.4.1單緩沖

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

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

5.4.2雙緩沖

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

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

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

輸入設備填充緩沖區(qū)2。當緩沖區(qū)1空出

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

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

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

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

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

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

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

543多緩沖

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

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

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

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

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

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

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

字符緩存隊I

列控制塊1

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

磁盤一類高速大容量旋轉型存儲設備,在繁重

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

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

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

求,這就叫驅動調度,使用的算法叫驅動調度

算法。

*驅動調度能減少為若干個輸入輸出請求服務所

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

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

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

訪問速度。

1存儲設備的物理結構

右順序存取存儲設備是嚴格依賴信息的物

理位置進行定位和讀寫的存儲設備

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

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

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

V

■塊間塊問塊間塊間塊■

始點末點

1隙2隙3隙i隙i+1

直接存取存儲設備

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

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

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

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

息的位置。

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

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

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

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

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

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

等待被訪問的信息塊旋轉到讀寫頭下時,按塊

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

平均要10毫秒。

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

轉移和讀寫。

552循環(huán)排序

為考慮每一磁道保存4個記錄的旋轉型設備,

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

在一條到該設備的可用道路。

》請示次序記錄號

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

&(2)讀記錄3

&(3)讀記錄2

》(4)讀記錄1

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

8?方法1:如果調度算法按照輸入輸出請求次

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

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

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

也?方法2:如果調度算法決定的讀入次序為

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

于1,5周,即30毫秒。

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

則調度算法采用的次序為讀記錄4、1、2、3

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

553優(yōu)化分布

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

取等待時間??紤]10個邏輯記錄A,

B……,J被存于旋轉型設備上,每道存

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

&物理塊邏輯紀錄

&1-10A-J

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

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

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

記錄)]=214毫秒

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

物理塊邏輯紀錄

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搜查定位

小移臂調度有若干策略

“電梯調度”算法

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

“掃描”算法

“分步掃描”算法

“單向掃描”算法

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

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

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

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

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

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

的差距最小,而吞吐量適中?!皢蜗驋呙琛眱H

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

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

56獨立磁盤冗余陣列

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

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

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

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

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

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

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

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

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

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

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

RAID樣式共有6級組成

&RAIDO至RAID5,最新又擴充了RAID6和RAID7,

它們之間并不隱含層次關系,而是標明了不同

的設計結構,

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

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

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

③冗余磁盤的作用是保存奇偶校驗信息,當磁

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

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

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

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

類應用。

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

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

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

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

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

量I/O請求,如圖像和CAD這類的應用。

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

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

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

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

RAIDlevel0

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

列中的所有磁盤上,

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

在橫向相鄰的磁盤驅動器上,

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

地址空間的映射。

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

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

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

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

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

RAIDlevel1

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

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

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

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

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

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

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

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

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

個決定;

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

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

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

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

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

即可用。

RAIDlevel2

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

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

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

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

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

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

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

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

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

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

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

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

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

取。

RAIDlevel3

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

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

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

用剩下的磁盤中的信息來重新構造,考慮有五個磁盤驅

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

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

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

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

得至U

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

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

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

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

RAID5o

RAIDlevel4

為RAID4和RAID5使用了獨立存取技術,在

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

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

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

存取陣列適合于有頻繁I/O請求的應用。

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

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

校驗位??紤]有五個驅動器組成的一個陣列,X0

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

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

對每一個二進位i,有下列關系式:

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類似,差別僅

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

盤上,典型的存放方法為輪轉法,設有n

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

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

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

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

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

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

Dlevel6和RAIDlevel7

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

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

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

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

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

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

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

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

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

次要讀出的盤塊的地址,因此,可在讀當前盤

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

在Unix和Windows中也采用了這一技術。

5.6設備分配

區(qū)561設備獨立性

通常用戶不指定特定的設備,而指定邏

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

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

物理設備之間的對應關系,我們稱這種

特性為“設備獨立性”

設備獨立性帶來的好處

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

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

對付輸入輸出設備的故障

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

占設備、共享設備和虛擬設備三類,

改相應的管理和分配外圍設備的技術可分

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

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

算法常用的有:

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

此外,在多進程請求I/O設備分配時,應

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

生死鎖,應預先進行性檢查。

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

&系統(tǒng)中應設有設備分配的數(shù)據(jù)結構:設備類表

和設備表。

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

備表中的一欄,其包括的內容通常有:設備類、

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

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

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

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

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

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

結構,不難設計出I/O設備的分配流程。

5.7虛擬設備

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

&采用脫機外圍設備操作

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

作)

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

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

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

干預帶來的損失。

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

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

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

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

序”。

X-

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

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

備上預輸入。

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

選中執(zhí)行。

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

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

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

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

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

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

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

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

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

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

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

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

井文件空間的管理

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

一塊信息的位置登記在預輸入表中,以后各塊用指針連起來,讀出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的設備管理

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

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

&?使用標準的Windows2000安全機制保護共享資源。

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

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

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

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

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

件I/O的能力。

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

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

I/O函數(shù)。

&?I/O管理器負責驅動I/O請求的處理。

改?核心態(tài)設備驅動程序把I/O請求轉化為對硬

件設備的特定的控制請求。

驅動程序支持例程被設備驅動程序調用來

完成它們的I/O請求。

硬件抽象層HALI/O訪問例程把設備驅動程

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

在給定的體系結構家族中是二進制可移植的,

并且在Windows2000支持的硬件體系結構中是

源代碼可移植的。

十五用.1.3設備驅動程序

為WindowsNT4支持以下三類設備驅動程序:

》?虛擬設備驅動程序VDD:用于模擬16位DOS應

用程序,它們俘獲DOS應用程序對I/O端口的引

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

DOS應用程序不能直接訪問硬件,必須通過一

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

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

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

無關的圖形GDI請求轉化為設備專用請求。

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

和訪問硬件設備的唯一驅動程序類型。

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

*?低層硬件設備驅動程序:它直接訪問和控制硬件設備。

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

磁帶、光盤。

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

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

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

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

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

布它們自己的、更明確的請求給物理設備驅動程序來滿

定該請求。

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

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

磁盤驅動程序FTDISK.SYS。

X-

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

系統(tǒng)對象。

&?調度例程集:提供設備驅動調度函數(shù)。

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

&?中斷服務例程:處理設備中斷。

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

&另外,設備驅動程序還可能有以下一些例程:

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

序何時完成一個IRP處理。

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

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

得I/O管理器可以從內存當中刪除它們。

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

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

5^.2Win€loWs

5.8.2.1即插即用和電源管理

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

的結合,這種結合使得計算機只需要極

少的用戶干預或完全不需要用戶干預就

能識別和適應硬件配置的更改。

&Windows2000即插即用結構的設計目標有兩個:

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

用和電源管理,擴展原有的NT輸入輸出底層結構。

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

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

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

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

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

&?加載適當?shù)尿寗映绦颉?/p>

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

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

&?設備通知事件的登記。

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

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

如下:

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

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

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

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

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

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

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

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

對注冊表結構進行了更改和擴展,其結構支持即插即用,

同時具備向后兼容功能。

.8.2.4即插即用結構

4

功能部件的作用是

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

態(tài)API。

'-1/0管理器:負責驅動I/O請求的處理,為設備驅動程

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

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

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

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

協(xié)調即插即用程序的用戶態(tài)部分來暫?;騽h除可用于

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

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

驅動程序及其與活動設備有關的信息。當系統(tǒng)添加和

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

新設備樹。

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

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

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

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

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

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

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

分層結構,這一結構包括WDM驅動程序、驅動程

序層和設備對象。WDM驅動程序可以分為三類:

總線驅動程序、功能驅動程序和篩選驅動程序。

每一個設備都含有兩個以上的驅動程序層:用于

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

持設備的功能驅動程序,以及可選的對總線、設

備或設備類的I/O請求進行分類的篩選驅動程序。

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

備對象。

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

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

備的設備都被看作是一個總線??偩€驅動程序的

主要任務是:枚舉總線上的設備,標志它們病危

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

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

多路復用;管理總線上的設備。

3?WDM驅動程序:包括功能驅動程序/小功能驅動

程序對和篩選驅動程序。在驅動程序對中,類驅

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

設備所需要的功能,小功能驅動程序(一般由廠

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

驅動程序除了為設備提供操作接口以外,還提供

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

休眠和滿負荷工作狀態(tài)之間的轉換有關。

5.9實例研究:Linux的設備管理

A5.9.1Linux的設備管理概述

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

備、隹設備和網(wǎng)絡設備。

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

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

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

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

也不存在任何尋址操作。

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

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

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

也在邙1UX中,所有的硬件設備均當作特殊的

設備文件處理,可以使用標準的文件操作。

*對于字符設備和塊設備,其設備文件用

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

標識,同一個設備驅動程序控制的所有設

備具有相同的主設備號,并用不同的次設

備號加以區(qū)別。

&網(wǎng)絡設備也是當作設備文件來處理,不同

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

器初始化。

*Linux核心具體負責I/O設備的操作,這些管理和控制硬件設備控制器的

程序代碼稱為設備驅動程序,它們是常駐內存的底層硬件處理子程序,

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

下的共同特性:

*?核心代碼。設備驅動程序是Linux核心的重要組成部分,在內核運行。

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

&?核心接口。設備驅動程序提供標準的核心接口,供上層軟件使用。

山?核心機制和服務。設備驅動程序使用標準的核心系統(tǒng)服務,如內存

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

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

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

為?可配置性。設備驅動程序可以編譯并鏈接進入Linux核心。當編譯Linux

核心時,可以指定并配置你所需要的設備驅動程序。

*?動態(tài)性。系統(tǒng)啟動時將監(jiān)測所有的設備,當一個設備驅動程序對應的

設備不存在時,該驅動程序將被閑置,僅占用了一點內存而己。

設備輸入輸出

為Linux的設備驅動程序可以通過查詢

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

式來控制設備進行輸入輸出。

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

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

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

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

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

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

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

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

出了設備驅動程序所使用的中斷編號。

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

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

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

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

DMA也不能被不同的設備驅動程序共享,因此一些設備

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

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

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

出dma_chan的內容。

'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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論