這一節(jié)講述一般設(shè)備的PNP和電源特性。PNP特性PNP是Plug And Play的簡稱,代表和外部設(shè)備插拔有關(guān)事件的處理。PNP是現(xiàn)代操作系統(tǒng)必須支持的基本特性,其目的是希望操作系統(tǒng)能夠在軟硬件支援下,在基本無需用戶干預(yù)的情況下,即可很好地處理外部設(shè)備的接入和移除操作;當(dāng)設(shè)備配置發(fā)生動態(tài)變更時,系統(tǒng)也能悄沒生息地處理好,并一切正常地使用它們。有些筆記本是當(dāng)成工作站來用的,這樣就需要很多外部接口。但一般的筆記本,局限于物理空間,不能夠提供過多的外部接口,會使用接口塢來擴(kuò)展。大的接口塢上通常有十幾、數(shù)十個擴(kuò)展接口,來滿足工作站的接口要求。其實,一些移動設(shè)備,如手機(jī)、平板電腦,也使用接口塢的方式實現(xiàn)擴(kuò)展,不過接口少一些。接口塢接入主機(jī)的時候,系統(tǒng)如果有PNP支援,就能夠直接使用上面的接口了,不用重啟系統(tǒng),一般也不用手動安裝設(shè)備驅(qū)動。PNP特性,需要操作系統(tǒng)、驅(qū)動程序和硬件的三方支持。缺了某一方都不能實現(xiàn)。比如PCI設(shè)備,雖然可以在PCI驅(qū)動程序中實現(xiàn)某種程度的PNP支持,但因為設(shè)備本身的電氣化特性,是不支持PNP的,所以我們?nèi)圆荒軣岵灏蜳CI設(shè)備。另外一種情況是,如果設(shè)備驅(qū)動寫得不好,未能正確地處理PNP請求,那么即使設(shè)備本身是支持熱插拔的,也會有問題。比如現(xiàn)在很多定制的USB設(shè)備,如加密U盤、網(wǎng)銀密碼器等,如果驅(qū)動寫的不好,用戶往往會在插拔設(shè)備的時候遭遇藍(lán)屏。概括地講,為了很好地支援PNP特性,需要做到下面幾點(diǎn):運(yùn)行時識別設(shè)備。不僅在系統(tǒng)初始化的時候,能識別并正確配置設(shè)備。在系統(tǒng)正常運(yùn)行的過程中,如果有設(shè)備動態(tài)接入,也能夠正確識別并配置設(shè)備;如果設(shè)備動態(tài)移除,也能夠正確響應(yīng)并回收系統(tǒng)資源。系統(tǒng)還需要為設(shè)備動態(tài)加載設(shè)備驅(qū)動程序。設(shè)備的驅(qū)動信息保存在注冊表中,系統(tǒng)從注冊表中查找設(shè)備的驅(qū)動信息。如果注冊表中找不到相關(guān)記錄,系統(tǒng)會嘗試自動為設(shè)備安裝驅(qū)動,否則就通過UI界面,要求用戶手動安裝驅(qū)動。動態(tài)配置設(shè)備。操作系統(tǒng)為設(shè)備動態(tài)地分配系統(tǒng)資源,設(shè)備可能需要用到的資源包括:IO地址空間、物理內(nèi)存映射、中斷、DMA等。設(shè)備驅(qū)動再根據(jù)它所動態(tài)獲取的資源來配置設(shè)備。比如一個支持硬件中斷的設(shè)備,它每次從系統(tǒng)處獲得的中斷號,都可能不同。那么設(shè)備和驅(qū)動程序,就不能假定設(shè)備的中斷號是一個固定的值。PNP接口。操作系統(tǒng)中有一個PNP管理器模塊,包含用戶和內(nèi)核兩個子模塊,所以它能夠?qū)τ脩舫绦蚝蛢?nèi)核驅(qū)動分別提供PNP支持。它們和設(shè)備驅(qū)動、用戶程序之間,有一個定義良好的接口。這個接口用來互相通知PNP事件。簡略地講,它包含三個方面:1. 當(dāng)PNP管理器檢測到PNP事件的時候,能夠把這些事件通知給設(shè)備驅(qū)動。包括設(shè)備接入、移除、異常移除等。2. 當(dāng)設(shè)備驅(qū)動需要向系統(tǒng)報告子設(shè)備的時候,能把這個信息通知給系統(tǒng)。當(dāng)用戶程序想動態(tài)移除指定設(shè)備的時候,也可能通過UI程序?qū)崿F(xiàn),這些UI程序?qū)嶋H上是調(diào)用了系統(tǒng)提供的PNP接口來實現(xiàn)的。比如我們在移除U盤設(shè)備的時候,一般不會直接拔除,而是先通過托盤欄中的彈出設(shè)備程序移除設(shè)備,以免破壞數(shù)據(jù)。3. 驅(qū)動或用戶程序,還可以通過注冊通知函數(shù),來接收PNP通知。比如內(nèi)核驅(qū)動可以通過調(diào)用IoRegisterPlugPlayNotification函數(shù)注冊一個通知函數(shù),當(dāng)感興趣的目標(biāo)發(fā)生PNP事件時,PNP管理器就會調(diào)用它的通知函數(shù),并通過參數(shù)告知它PNP事件的詳細(xì)信息。用戶程序也可以通過WM_DEVICECHANGE消息來接收設(shè)備PNP的通知。這套接口,主要由PNP管理器所提供的若干接口函數(shù),若干類型為IRP_MJ_PNP的IRP包,及驅(qū)動程序所提供的AddDevice回調(diào)來實現(xiàn)。電源特性電源操作的目的是類似的,也是為了能夠在用戶盡量少介入的情況下,就能夠正確地配置和使用外部設(shè)備?,F(xiàn)代計算機(jī)和操作系統(tǒng),都實現(xiàn)了多個級別的系統(tǒng)和設(shè)備電源狀態(tài)。系統(tǒng)和設(shè)備可以在這些電源狀態(tài)之間進(jìn)行切換,并達(dá)到正常情況下全力供電,空閑情況下盡量省電的目的。系統(tǒng)的電源狀態(tài)用S0-S5來標(biāo)識。S0是正常狀態(tài),S1-S3是休眠狀態(tài),但休眠的深度有差別,S4是睡眠狀態(tài),S5是軟關(guān)機(jī)狀態(tài)(Soft Off,不完全等同于斷電)。除了S0和S5這兩個必須支持的狀態(tài)外,系統(tǒng)還支持哪些電源狀態(tài),是由系統(tǒng)BIOS決定的。一般來講,計算機(jī)系統(tǒng)都會支持S3和S4這兩個狀態(tài)。否則除了開機(jī)就是關(guān)機(jī),電腦用起來會很麻煩。設(shè)備的電源狀態(tài)用D0-D3來標(biāo)識。D0是正常狀態(tài),D1-D2是休眠狀態(tài),但深度有差別,D3是斷電狀態(tài)。其中D3還分Hot和Cold兩種子狀態(tài)。在D3Hot狀態(tài)下,設(shè)備的功能已喪失但仍有外部或總線供電,使得設(shè)備本身還能被系統(tǒng)檢測到。和設(shè)備相連的控制器設(shè)備認(rèn)為此設(shè)備還連接著,只要控制器上有設(shè)備連接著,控制器就要處于工作狀態(tài)。但在D3Cold狀態(tài)下,系統(tǒng)已檢測不到設(shè)備,這可能是由于設(shè)備的已經(jīng)斷電了,或者系統(tǒng)本身已經(jīng)處于休眠狀態(tài)而導(dǎo)致的。和設(shè)備連接的控制器,已經(jīng)不認(rèn)為設(shè)備和自己連著,在其它條件滿足的情況下,控制器可以進(jìn)入完全的休眠狀態(tài)。設(shè)備電源狀態(tài),需要由設(shè)備本身和設(shè)備驅(qū)動一起來實現(xiàn)。有些設(shè)備只支持正常和斷電兩種狀態(tài)(即D0和D3),而沒有休眠的功能。那么設(shè)備驅(qū)動只需要處理D0和D3兩種狀態(tài)即可。有些設(shè)備則提供了休眠功能(即可進(jìn)入D1或D2狀態(tài)),驅(qū)動程序在這種情況下,仍然可以決定支持或不支持設(shè)備的休眠狀態(tài)。在支持的情況下,當(dāng)設(shè)備進(jìn)入休眠狀態(tài)時,驅(qū)動程序負(fù)責(zé)關(guān)閉部分硬件模塊,讓其它模塊繼續(xù)工作。系統(tǒng)中有一個電源管理器模塊,它負(fù)責(zé)系統(tǒng)范圍內(nèi)的電源策略。當(dāng)系統(tǒng)的電源狀態(tài)發(fā)生變化時,它負(fù)責(zé)把要進(jìn)行的電源操作及電源狀態(tài),通知給每個設(shè)備棧,讓它們來處理電源變化。設(shè)備驅(qū)動需正確地處理電源事件,有很多系統(tǒng)藍(lán)屏就發(fā)生在驅(qū)動程序處理電源事件的過程中。物理設(shè)備的功能設(shè)備驅(qū)動,一般就是這個物理設(shè)備的電源策略制定者,功能設(shè)備驅(qū)動在設(shè)備初始化的時候,會把設(shè)備電源狀態(tài)映射到系統(tǒng)電源狀態(tài),并把這個映射匯報給電源管理器。這樣電源管理器就可以根據(jù)系統(tǒng)電源狀態(tài),發(fā)送相應(yīng)的設(shè)備電源狀態(tài)給設(shè)備驅(qū)動。這個映射體現(xiàn)在設(shè)備管理器程序中的設(shè)備屬性界面中,我們可以通過它來觀察不同設(shè)備的電源狀態(tài)映射。
-
WINDOWS
+關(guān)注
關(guān)注
4文章
3551瀏覽量
88832 -
pnp
+關(guān)注
關(guān)注
11文章
297瀏覽量
51826 -
電源特性
+關(guān)注
關(guān)注
0文章
3瀏覽量
2593
發(fā)布評論請先 登錄
相關(guān)推薦
評論