包括模組
微軟的WRK計畫(Windows Research Kernel),這個計畫是讓高校師生以及親密的合作商有一個機會能夠了解和學習windows的核心代碼。WRK包含了以下模組:
* Processes
* Threads
* Virtual memory and cache managers
* I/O management
* The registry
* Executive functions, such as the kernel heap and synchronization
* Object manager
* Local procedure call mechanism
* Security reference monitor
* Low-level CPU management (thread scheduling, Asynchronous and Deferred Procedure calls, interrupt/trap handling, exceptions)
特點功能
在本科的作業系統教學中,能夠提供一個展示真實作業系統是如何工作的環境是很重要的。同時教學平台要求在學生的理解和修改的基礎上能夠真實的運行起來,所以我們採用WRK作為作業系統課程的教學實踐平台。WRK平台隸屬於Windows Academic Program項目,是微軟公司將Windows Kernel的核心技術融入到高校的教學和科研中的產物。該平台是基於Windows作業系統的真實核心代碼進行提煉、修改形成的。它在作業系統教學方面具有以下幾個突出的優點:
真實可靠
WRK是建立在真實的NT核心基礎上的,實現了執行緒調度、記憶體管理、I/O管理、檔案系統等作業系統所必須的組成部分。
可以將編譯出的核心放到裝有Windows 2003的機器上,通過增加啟動項,指定從WRK核心啟動。通過修改編譯時的選項,可以支持X86和AMD64兩種架構。
當然,我們也可以使用虛擬機運行WRK。可以防止修改過的代碼對真實的硬體和檔案系統產生負面影響;也可以方便的通過串口進行調試。
概念實現
現代作業系統原理中包含了很多的概念,如執行緒、虛擬記憶體、硬體抽象等等。一些模擬的作業系統由於各種原因無法將這些概念付諸實際,這樣就導致學生在學習的過程中,獲得的只是一些空洞的知識。WRK中將Windows的各種實現都展示了出來。
真實體驗
一般來說,作業系統核心的調試需要兩台計算機。一台作為宿主機,運行需要調試的核心;另一台作為調試機,運行調試程式。兩台機器通過串口進行連線,傳送調試指令和調試數據。
因為WRK可以運行在虛擬機上,我們可以通過一個命名管道連線虛擬機和物理機。將虛擬機作為宿主機,而物理機器作為調試機來進行調試。
不確定性是作業系統所必須具有的特徵。WRK運行在真實的硬體平台上,各種硬體中斷的隨機性和不確定性賦予了WRK天生的不確定性。當然,這個不確定性對於我們也是具有兩面性的,一方面展示的真實作業系統的特徵;另一方面,對於我們核心的調試也具有不確定性。
結構清晰
WRK具有非常清晰的目錄結構,將所有代碼分布在16個資料夾中。如下表:
表格 1 WRK目錄列表
1.表格 1 WRK目錄列表
模組目錄 | 模組功能 |
cache\ | cache manager |
config\ | registry implementation |
dbgk\ | user-mode debugger support |
ex\ | executive functions |
fsrtl\ | file system run-time support |
io\ | I/O manager |
ke\ | scheduler, CPU management, low-level synchronization |
lpc\ | local procedure call implementation |
mm\ | virtual memory manager |
ob\ | kernel object manager |
ps\ | process/thread support |
se\ | security functions |
wmi\ | Windows Management Instrumentation |
inc\ | NTOS-only include files |
rtl\ | kernel run-time support |
init\ | kernel startup |
WRK的代碼量相當大,原始碼有47M。所以,隨著作業系統課程的進行,同學可以有針對性的閱讀某一個模組的代碼,能夠更好的理論聯繫實際。
代碼質量
WRK是用C語言來實現的。這是考慮到了作業系統核心效率的問題。WRK代碼質量很高,規範很好,可以通過閱讀提高自己的水平。
編譯程式
1. 用VMware安裝一個windows server 2003系統(以下所指系統如未加說明均為該windows 2003虛擬機)
2. 將WRK源碼拷貝到系統下C糟,將資料夾取名wrk(可以任意命名)
3. 將系統中的環境變數Path設定為C:\wrk\tools\x86;%path%
4. (在命令提示符中輸入)cd wrk\base\ntos
5. (在命令提示符中輸入)nmake -nologo x86=
(核心正在編譯...編譯完後在wrk\base\ntos\BUILD\EXE下生成核心檔案)
6. 將wrk\base\ntos\BUILD\EXE下的核心檔案拷貝到C:\windows\system32下
7. (在命令提示符中輸入)在C:\windows\system32路徑下輸入link -dump -all hal.dll | findstr pdb命令,查看你的hal按照下面對照:
halacpi.dll -> halacpim.dll ; ACPI PIC-based PC [used by VirtualPC]
halaacpi.dll -> halmacpi.dll ; ACPI APIC-based PC
halapic.dll -> halmps.dll ; MPS
8. 進入C:\wrk\WS03SP1HALS\x86目錄下,將相應的hal資料夾下的檔案(2個)拷貝到C:\windows\system32下
9. 進入C糟,將隱藏的檔案boot.ini打開,在最後一行加入:
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="test" /kernel=wrkx86.exe /hal=halmacpi.dll
10. 重新啟動,進入新編譯好的核心。
PS: 1. 注意第9步中,發光的數字"2",該數值應與原來最後一句中的一致(否則進入系統時會出現沒有找到引導盤);
2. 如果還是進入不了系統,則下載win2003sp1ch進行系統升級。
安裝運行
WRK 1.2可以在兩種環境下運行:
* X86(Windows Server 2003 Service Pack 1)
* AMD64(Windows XP x64 Professional)
可以在運行上述作業系統的物理計算機上安裝WRK,但是,為了實驗方便同時也為了保護物理計算機的作業系統,建議在虛擬機下安裝WRK。
目前最為流行的虛擬機軟體有VMware 和Virtual PC,這兩種軟體都可以用來安裝WRK。