驅動學習之windows認識!

來源:互聯網
上載者:User

 

VxD是虛擬設備驅動程式的簡稱,其中X表示各種裝置的名字,如虛擬鍵盤驅動程式(VKD),虛擬滑鼠驅動程式(VMD)。

       VxD本身是運行在Ring0層上的32位的可執行程式,它是Winodws應用程式和實際硬體之間的借口,也是作業系統管理資源的介面,主要完成對裝置的虛擬化功能。

       Windows系統是多任務多線程的作業系統,外部裝置往往同時被基於DOS或者windows的多個線程共同使用。而真正的硬體裝置只有一套(不可能三個程式用滑鼠,就買三套滑鼠),所以要從只有一套裝置的基礎上虛擬出三套裝置來,讓應用程式感覺到每時每刻自己都是獨佔硬體裝置。

       而裝置的虛擬化是通過運行在Ring0層上的裝置驅動程式來實現的。驅動程式充當了實際硬體的“替身”,線程或者應用程式總是與硬體的“替身”(即我們編寫的VxD的驅動程式)交換資訊。

       可以這樣來看,VxD相當與運行在Ring0層上的DLL,任何想再Ring0層完成的工作,都可以調用它。

       有幾點注意:

1.  VxD是windows 9Xx系統專屬的驅動程式模型,它不適合windows NT windows 2000系統,因此,不能將驅動程式進行平台移植。

2.  VxD程式是運行在Ring0層上的特權層級程式,可以對系統做任何事情,一個惡意的VxD程式可以破壞掉這個系統,對於VxD系統是沒有任何的保護措施。

3.  所以一定要三思!!!

 

NT系統中,CPU只運行在兩個層級層上,NT作業系統是建立在客戶、伺服器模型基礎上的作業系統,系統由運行在Ring0層上的核心態模式程式和運行在Ring3層上的使用者態模式組成。

核心模式,也就是NT執行體,是OS的核心,包括系統服務和硬體描述層。它完成作業系統應該提供的服務,如檔案系統、進程式控制制、記憶體管理、裝置管理等。

使用者模式,是運行在Ring3層上的,是NT提供的一些環境子系統。NT OS中在Ring3層上運行了幾個子系統,這些子系統就像是虛擬機器一樣,為了是和不同的系統能相容,比如unix,OS/2、DOS、windows9x、等等,雖然看起來調用的是別的系統上的API其實,在進入核心後,都被統一的轉換成了NTAPI,這樣做無非想類比出各種OS。

而現在windows32 子系統中,USER GDI兩大組件都被轉移到了核心下,為的是圖形處理更加的快。

在NT作業系統中採用階層,分可執行層、微核層、和硬體抽象層HAL。

可執行層包括:

一、              I/0管理器,負責作業系統I/O子系統管理。它通過發送資料包,非同步完成I/0操作。

        對於裝置驅動程式來說,I/0管理器負責為核心驅動程式提供體繫結構,為這些驅動程式提供支援,例如接受使用者的請求、與使用者程式交換資料、記憶體映射、掛接中斷、同步等工作都由I/O管理器來完成。可以這樣認為,當核心驅動動態裝入系統後,這個驅動程式可以看作是I/O管理器的一部分。I/O為裝置驅動程式和NT作業系統其它部分之間提供介面。

I/O系統服務在發出請求的應用程式和IO子系統的其他部分之間提供裝置獨立介面。不管啟動請求的模式如何,運行子系統的環境或者請求裝置類如何,提供的介面不變。

I/O系統服務和IO管理器總是向核心驅動程式提供一個IRP標準描述,使得核心模式驅動程式不必處理請求之間的差別。

二、              對象管理器,執行層是通過一個基於對象的介面為使用者模式應用程式提供服務。這些對象一般用來表示檔案、進程、線程和共用記憶體段等事物。對象管理器就是用來管理這些對象的工作,包括建立和刪除對象、維護全域對象名字空間,以及記錄對指定對象有多少等待的引用等。

三、              安全引用監視器,提供一些安全存取原則,以原語的形式供核心模式和使用者模式調用,驗證對象訪問的許可權,檢查使用者的特權和生產審查訊息。大多數裝置驅動程式不考慮安全性問題。由I/O管理器在調用驅動程式之前處理。

四、              進程管理器,負責處理進程的建立和刪除,同對象管理器一起,建立進程對象和線程對象。它和記憶體管理器一起工作,為進程分配虛擬位址空間。

五、              虛擬記憶體管理器和高速緩衝管理器,它倆在一起組成了NT的細膩記憶體管理子系統,每個進程4GB空間,記憶體管理器要管理好這些記憶體的使用,必須才需按需分頁的虛擬記憶體管理技術。

從驅動程式開發角度來說,記憶體管理器作為驅動程式的記憶體 Clerk,因此更要。

六、              局部程序呼叫機制,LPC機制是一種訊息傳遞機制,實現在同一台機器上的進程之間通訊,通常專門為應用程式和其環境子系統之間通訊使用,驅動程式沒有訪問LPC的許可權。      

七、              Windows32支援組件,包括許多在win32環境子系統中的使用者組件代碼,使得GUI應用程式和圖形裝置之間的介面實現更為方便。

微核心層:

提供中斷和異常處理、進程調度和同步、多處理機同步、定時控制等。OS高層部分利用微核層提供的服務,可以忽略底層CPU體繫結構的不同,因此,裝置驅動程式和高層作業系統組件可以不考慮與底層CPU之間的差異,使得驅動程式可以在體繫結構不同的CPU上工作。

 

硬體抽象層:

       HAL可以使作業系統不依賴特殊硬體平台或體系,HAL提供可用系統資源的標準模型,以及特定硬體平台功能的標準視圖,向外提供一組標準介面,其它可執行組件通過標準介面訪問資源,從而實現了硬體的“抽象化”。

       這些標準介面,實際上就是一組定義很好的函數,各種操作組件使用HAL函數與CPU外的硬體打交道。HAL函數基本上把平台特定細節對系統其餘部分隱藏起來,從而屏蔽了不同硬體平台間的差異性。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.