編碼的世界 / 優質文選 / 財富

《Windows內核原理與實現》的進度


2021年8月22日
-   

《Windows內核原理與實現》的進度
去年1月份,我曾經寫到了,我正在寫一本講Windows內核技術的書,一年過去了,書還沒有出來。期間常有讀者問起這本書的情況,現在我介紹一下這本書的進展情況。
這本書的全部初稿09年12月初已經完成,將近700頁,不算厚,也不薄。內容比較紮實,把Windows內核中重要的話題都討論了。現在我正在複查,已經把一部分交給編輯審稿了。
由於編審和排版流水線作業,所以,可望這本書在4、5月份能面市。
 
附上內容結構和配套工具的介紹:
本書內容簡介
本書共包括9章正文內容和兩個附錄。內容介紹如下:
第1章介紹了操作系統的基礎概念、Windows操作系統的發展歷史、Windows內核的發展,以及學習操作系統的一些前提知識,最後還介紹了操作系統的研究進展。
第2章從總體上介紹Windows操作系統。首先討論現代操作系統的基本模型,以及一些重要部件的職責;然後討論Windows的總體結構,以及有關WRK和相應源代碼的一些說明。為了讓讀者對Windows內核有一個初步的認識,這一章還介紹了內核中的一些基本概念,包括進程、線程、內存管理、中斷、異常、同步等,然後細致地討論了Windows內核中的公共管理設施,包括對象管理器、配置管理器、事件追蹤(ETW)和安全性管理。之所以在這一章中介紹這些公共設施,是為了讓讀者在學習本書後面章節中的核心概念和機制時,可以方便地直接引用這些管理設施中的功能。這一章的最後還介紹了Windows 引導過程,包括內核初始化和用戶會話建立過程。
第3章討論Windows中的進程和線程管理。首先討論了進程和線程的基本概念,然後描述了Windows中有關進程和線程的重要數據結構,列出了這些數據結構的定義並解釋了其中的域的含義。接下來介紹了Windows進程中的句柄表結構、進程和線程的創建過程和結束處理,以及系統的初始進程和線程。這一章後面還介紹了Windows中的線程調度,包括時限管理、環境切換、線程狀態轉移等內容。
第4章介紹Windows中的內存管理。首先介紹了一般性的內存管理知識,包括頁式內存管理和段式內存管理。然後介紹Windows的系統內存管理,涉及到系統地址空間初始化、換頁內存池和非換頁內存池的管理算法,以及系統PTE區域的管理算法。緊接著介紹了進程虛擬地址空間的內存管理,包括地址空間的創建和初始化、虛擬內存的管理數據結構,以及虛擬內存中的內存區對象(section object)。然後討論了Windows的頁面交換機制和物理內存的管理,最後討論了Windows的工作集(working set)管理。
第5章討論Windows中的並發和同步機制。這一章首先介紹了有關進程和線程同步的基礎知識,然後介紹了Windows中的中斷和異常處理機制,包括IRQL(中斷請求級別)和中斷對象、DPC(延遲過程調用)和定時器管理、APC(異步過程調用),以及異常分發過程。接下來分別介紹了兩種類型的同步機制:高IRQL時的同步處理,以及基於線程調度的同步機制。Windows支持大量的同步語義,而且很多同步語義被導出成系統服務,可供應用程序使用。
第6章講述Windows的I/O模型。首先討論了Windows I/O系統的三個重要部件:I/O管理器、即插即用管理器和電源管理器,介紹了設備驅動程序的初始化,驅動程序對象、設備對象和文件對象的數據結構,設備的列舉過程,以及Windows中電源I/O請求的處理過程。在此基礎上,這一章還詳細地討論了設備驅動程序,包括驅動程序分類、驅動程序結構模型,並通過一個例子(toaster)來說明驅動程序設備棧結構。最後,這一章介紹了I/O處理,包括IRP(I/O請求包)的定義、I/O請求的處理過程以及I/O完成處理。
第7章討論Windows的存儲體系。這一章分別討論了Windows的緩存管理器、卷的管理以及文件系統。緩存管理器將文件系統和內存管理器有機地結合起來;而文件系統和卷管理驅動程序以及磁盤管理驅動程序聯合起來形成了一個存儲棧,為Windows提供外部存儲服務。第7.4節討論了文件系統的過濾機制,以及三個文件系統的實現:RAW(由內核模塊提供)、FAT和NTFS。
第8章討論Windows的系統服務。這一章首先描述了Windows用戶模式代碼調用內核模式系統服務的詳細過程,然後介紹Windows的系統服務分發表的結構。隨後,這一章還介紹了三個重要的跨進程通訊系統服務:LPC(Local Procedure Call)、命名管道(Named Pipe)和郵件槽(Mailslot)。
第9章介紹一些高級話題,重點討論了Windows中的網絡模型、Windows子系統,以及Windows的內核日志。這一章最後也介紹了Windows最新版本(Windows Vista、Windows Server 2008和Windows 7)中的一些重要變化。
本書正文之後是兩個附錄。附錄A講述了如何編譯WRK,以及在虛擬機環境中運行和調試WRK。附錄B介紹了一個基於WRK的學生實習項目:KInjectToolKit,KInjectToolKit允許把一段用戶模式代碼插入到內核模式下運行,從而提供了在響應內核模式事件時執行用戶指定代碼的能力。
 
本書的配套工具
為了配合本書中的內容講解,本書也特別提供了一組工具,讀者可以通過本書的Web主頁下載到這些工具,它們不僅可以運行在WRK內核的系統中,也可以在其他版本的Windows系統上運行。下面是這一組工具的簡單介紹:
·        ProcMon,進程和線程監視工具。它可以實時地顯示當前每個處理器正在執行哪些進程和線程。這些信息還可以被轉儲到一個文本文件中供進一步分析和查看。
·        MemMon,內存監視工具。它可以顯示當前系統內存空間和每一個進程的用戶空間的內存布局。在進程內存空間,MemMon能夠顯示進程中的模塊、堆、棧等信息。
·        DPerfLite,一個可以揭示線程間同步關系的工具。它記錄了當前系統中與同步有關的內核操作,允許用戶在一個圖形界面中直觀地觀察這些操作,並檢查線程之間的各種同步關系。
·        IRPMon,IRP完成情況的監視工具。它在內核中記錄下每一個I/O請求的完成操作,並且由IRPMon用戶模式程序定期地從內核中獲取這些紀錄,並顯示在一個列表窗口中,供用戶檢查或查詢。
·        SdtViewer,SDT(服務描述符表)顯示工具。此工具可以顯示出當前系統中的SDT表;如果有符號表支持的話,它也能夠顯示Windows子系統的SDT。
 
 

熱門文章