《最新Windows核心原理講解與實現方式解析》是2010年電子工業出版社出版的圖書,作者是潘愛民。
基本介紹
- 書名:最新Windows核心原理講解與實現方式解析
- 作者:潘愛民
- ISBN:9787121105289
- 出版社:電子工業出版社
基本信息,編輯推薦,內容簡介,前言,
基本信息
出版日期:2010 年5月
開本:16開
頁碼:689
版次:1-1
編輯推薦
微軟亞洲研究院資深研究員潘愛民老師十年磨一劍之作
用真實的原始碼剖析Windows作業系統核心原理
Windows核心專家Dave Probert作序力薦
內容簡介
本書從作業系統原理的角度,詳細解析了windows如何實現現代作業系統的各個關鍵部件,包括進程、執行緒、物理記憶體和虛擬記憶體的管理,windows中的同步和並發性支持,以及windows的i/o模型。在介紹這些關鍵部件時,本書直接以windows的原始碼(wrk, windows research kernel)為參照,因而讀者可以了解像windows這樣的複雜作業系統是如何在x86處理器上運行的。
在內容選取方面,本書側重於windows核心中最基本的系統部件,同時也兼顧到作為一個作業系統的完整性,所以,本書也介紹了像存儲體系、網路、windows環境子系統等,這些雖然並不位於核心模組但卻支撐整個windows運行的重要部件。在本書最後,也介紹了windows server 2003以後的核心發展和變化。
雖然書中有大量關於windows代碼實現的描述,但是本書並沒有羅列wrk中的代碼,即使讀者不對照wrk的原始碼,也可以從這些章節的描述中理解windows的實現機理。在每一個技術專題的介紹中,本書幾乎都提供了一個框架圖,並且有關鍵細節的實現分析,這樣做的意圖是讓讀者既能夠對一項技術有總體上的把握,也通曉關鍵的實現細節。
windows作業系統已經有20年歷史了,市面上有大量關於windows技術的文檔和書籍,但是,真正從原始碼來詮釋windows底層機理的,本書還是第一次嘗試。在本書覆蓋的內容中,有相當一部分是第一次以文字形式披露出來的,期望這些內容能消除人們對於windows的神秘感。
寫作本書的目的是讓對windows有好奇心的人真正了解到windows中的核心機理,讓計算機專業的學生和老師,以及系統軟體工程師可以快速地領略到windows中先進的系統技術,以及在windows上編寫出更加高效的軟體。本書也配備了一些小工具,通過這些小工具,讀者可以查看核心中的靜態或動態的信息,甚至觀察系統的行為,可通過internet下載這些工具。
前言
《Windows核心原理與實現》是一本講述Windows核心機理,並配合Windows的原始碼來解釋其實現細節的學習用書。全書從作業系統原理的角度來組織內容。本書適合於已經有了作業系統基本概念的讀者進一步理解Windows作業系統。通過學習本書的內容,讀者不僅可以掌握Windows的核心機制,也可以理解像Windows這樣的現代作業系統是如何構建起來的。因此,這是一本學習Windows作業系統核心的書,而不是一本指導在Windows平台上進行軟體開發的用書。
對於絕大多數IT從業人員以及高校學生來說,Windows是一個熟悉得不能再熟悉的作業系統了,而且也有相當多人能夠熟練地開發各種類型的Windows應用程式,然而,真正熟悉Windows內部機理的人卻少而又少。究其根源,很多人將這歸咎於Windows是一個閉源作業系統,也就是說,除了Microsoft內部的員工以外,人們接觸不到Windows的原始碼。這樣的解釋只能說是部分正確的,因為從歷史發展來看,UNIX類作業系統確實有廣泛的民眾基礎,很多人得益於閱讀各種UNIX版本的原始碼(包括Linux和FreeBSD)。但對於Windows作業系統,這似乎並非一個合理的解釋,因為事實上,有相當多人在過去三四年間已經獲得了Windows的原始碼,但是在代碼闡釋和核心深入理解方面卻並未表現出擁有原始碼而帶來的優勢。反倒是在過去幾年間基於逆向工程而獲得的Windows核心知識要深刻得多。
這么說並非指Windows原始碼沒有幫助,而是間接地揭示了一個事實:Windows的原始碼不是那么容易讀的,Windows的核心也不是那么好理解的。本書作者在過去幾年間,與國內高校的作業系統課程的老師和學生有廣泛的接觸和了解,真切地理解到,要想在作業系統課程中完全融入Windows的內容,迫切需要一本按照作業系統基本概念和理論來闡釋Windows實現機理的書籍。基於這樣的動機,本書力圖讓學習作業系統的讀者能夠理解Windows中的核心機制,而且還可以近距離地觀察到Windows核心中的實現細節。
本書針對的讀者
對Windows核心有好奇心的讀者,無論您是作業系統課程的學生,或是正在從事系統軟體開發的軟體工程師,或是有技術背景的Windows系統管理員,都可以從本書中找到很多問題的答案。雖然本書中描述的大多數細節是以WRK(Windows Research Kernel)的代碼為基礎,但是,對於各種核心機制的介紹卻是通用的,並不限於WRK核心,甚至適用於各種版本的Windows,包括最新的Windows Vista和Windows 7。
對於有資格獲得WRK的讀者(包括高校老師和學生),本書可以是配套的學習參考用書。本書正文部分列出了WRK中一些關鍵的數據結構定義,而在介紹各種核心機制時,明確地指出了原始碼中的函式調用關係、關鍵數據的含義和用途,甚至在有些地方指明了WRK中對應的代碼片斷。因此,配合WRK代碼來閱讀本書是最理想的閱讀方式,就如同本書作者在寫作過程中經常查看WRK代碼一樣。
然而,對於因某些原因而無法獲得WRK的讀者,本書仍然有指導意義。首先,本書在講解Windows核心的核心機制時,幾乎都以文字或圖形的方式描述了這些機制的總體結構,並指出了關鍵的數據結構或函式。即使沒有WRK代碼的參照,讀者也可以想像出這些函式的功能實現。如果讀者善用windbg,並設定Microsoft提供的公共符號服務(參考本書附錄A),則可以在核心調試環境中查看到很多實現細節。書中描述的絕大多數核心機制不僅適用於Windows Server 2003 SP1(即WRK核心適用的系統),也適用於其他的Windows版本,包括Windows XP、Windows Vista、Windows Server 2008和Windows 7。
本書不是一本輕鬆的入門書籍,無論讀者是否擁有WRK,最好在閱讀以前先有作業系統的基本知識,以及較為熟練的編程能力,起碼能夠輕鬆地閱讀C代碼。硬體系統結構、彙編語言和編譯原理等知識雖然不是必要的,但是有了這些知識,可以讓您更加深入地理解各種系統機制。
本書內容組織
本書的內容並沒有覆蓋Windows核心的方方面面,而是從現代作業系統的概念模型出發,重點討論了進程、執行緒和記憶體管理的基本概念以及在Windows中的實現細節,也討論了Windows中的並發性和同步處理機制。作為一個對各種硬體設備有廣泛兼容性的桌面作業系統,Windows的I/O模型是提供這種兼容能力的基礎,因此,Windows中的I/O處理也是本書重點討論的內容之一。在此基礎上,本書還講述了Windows的存儲體系結構,它把Windows系統中眾多的核心組件,包括快取管理器、檔案系統、磁碟管理驅動程式等,納入到一個統一的框架中。
這些內容構成了本書的主體。然而,僅僅這些還不足以形成一個完整的作業系統,Windows核心中還有其他一些不可或缺的機制,比如核心中的對象管理、配置管理(即註冊表服務)、系統事件追蹤、安全性管理、系統服務管理、LPC(Local Procedure Call,本地過程調用),以及網路和Windows子系統等,本書也給出了足夠詳盡的描述,以使讀者能夠透徹地理解Windows作業系統的全貌。另外,Windows核心的初始化過程也是本書的覆蓋範圍。
在描述以上這些核心機制時,本書以WRK為主要的參照系統。WRK支持AMD64和Intel x86兩種體系結構,本書選擇Intel x86作為目標平台,而完全忽略在其他體系結構上的差異。Windows XP (x64)和Windows Server 2003 SP1 (x86)分別代表了客戶端作業系統和伺服器端作業系統,它們使用了同樣的核心,所以,本書討論的內容以Windows Server 2003 SP1為基準系統,但同樣適用於客戶端作業系統。
本書討論的範圍顯然超越了WRK中原始碼的範圍,對於在WRK中未提供原始碼的話題,比如即插即用管理器、Windows子系統和網路等,本書參考了Microsoft提供的各種文檔,以及通過其他途徑提供的原始碼,例如Windows DDK文檔和例子驅動程式。此外,Mark Russinovich和David Solomon合著的《Windows Internals》(第4、5版,中文版書名為《深入解析Windows作業系統》)也是重要的參考材料。本書在講解各個話題時註明了所引用材料的出處,對於Microsoft提供的參考材料,包括Windows DDK文檔,本書在文獻引用條目中註明了這些內容在MSDN網站上的超連結。
本書內容簡介
本書共包括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支持大量的同步語義,而且很多同步語義被導出成系統服務,可供應用程式使用。