標籤:驅動開發 作業系統
Windows驅動程式基礎系列,轉載請標明出處:http://blog.csdn.net/ikerpeng/article/details/38778375
Windows運行模式:使用者模式和核心模式
Windows從總體上來說分為:核心模式和使用者模式,Intel的i386系列CPU邏輯概念上有4個特權層:Ring0(特權最高),Ring1,Ring2,Ring3. 核心模式則運行在Ring0上面,使用者模式就運行在Ring3上。
運行在核心模式下面的Windows組件是安全的(驅動程式就是運行在此),不會受到惡意的攻擊;而運行在使用者模式下的程式是不安全而且容易受到攻擊的。
驅動程式運行在核心模式下面,擁有最高的許可權。因此沒有任何的其他的保護措施,所以編寫驅動程式要格外的小心,很可能直接導致系統的崩潰。
Windows作業系統的架構:
現代的作業系統都是基於分層的思路設計的。一般都是“用戶端——伺服器”的結構。
Windows架構簡圖(iker製作)
Win32子系統是最純正的Windows子系統,提供大量的API。應用程式都是通過對它的調用實現對電腦的操作的。而大部分麼的Win32子系統的API都是通過NativeAPI實現的。設定NativeAPI的是基於版本相容的考慮。它通過軟體中斷的方式進入到核心模式。
下面說一下幾個重要的概念:
虛擬記憶體管理:Windows中引入虛擬記憶體的概念,然後通過某種映射將實體記憶體和虛擬記憶體關聯起來。每個進程擁有4G的虛擬記憶體,然後又被分為兩部分:前半部分,0~0X7FFFFFFF規定為使用者模式地址;後半部分規定為核心模式地址。另外,Windows規定記憶體模式下虛擬記憶體的映射方式一樣,頂端的核心模式地址的資料一致。
I/O管理器: 負責發起I/O請求,並且管理這些請求。無論是連接埠的讀寫,對鍵盤的訪問,還是對磁碟檔案的操作都統一為IRP(I/O Request Packages)。而驅動程式負責完成這些IRP。
驅動程式就是在接收這些IRP請求後,進行相應的操作。
本小節完。
參考書目:
《 Windows 驅動開發技術詳解 》
Windows驅動程式基礎(三)Windows系統基礎