文章編號(hào):1672-5913(2008)20-0038-03
摘 要:本文介紹了我院根據(jù)WRK軟件對(duì)現(xiàn)有教學(xué)內(nèi)容和方式所做的改進(jìn),并介紹了我院設(shè)計(jì)的一系列實(shí)驗(yàn)教學(xué)內(nèi)容,實(shí)踐證明可提高教學(xué)效果與質(zhì)量,提高學(xué)生在學(xué)習(xí)過程中的主動(dòng)性、能動(dòng)性以及動(dòng)手實(shí)踐能力。
關(guān)鍵詞:操作系統(tǒng)原理;WRK;實(shí)驗(yàn)教學(xué)
中圖分類號(hào):G642
文獻(xiàn)標(biāo)識(shí)碼:B
1 引言
我國(guó)的本科生操作系統(tǒng)教學(xué)中通常包括兩個(gè)部分,一個(gè)是介紹操作系統(tǒng)原理的課程教學(xué),另一個(gè)是課程實(shí)驗(yàn)教學(xué)。在課程教學(xué)中通常講解操作系統(tǒng)的基本概念和原理,并通過Microsoft Windows、UNIX或者Linux作為操作系統(tǒng)的示例。
操作系統(tǒng)原理中包含了很多的概念,如線程、虛擬內(nèi)存、硬件抽象等等。在教學(xué)中,能夠提供一個(gè)展示真實(shí)操作系統(tǒng)工作方式的環(huán)境是很重要的。但目前普遍使用的教學(xué)平臺(tái)大多是非真實(shí)的、模擬的環(huán)境,無法將操作系統(tǒng)的概念付諸實(shí)際,這樣就導(dǎo)致學(xué)生在學(xué)習(xí)的過程中,獲得的只是一些空洞的知識(shí),對(duì)操作系統(tǒng)的理解也出現(xiàn)偏差。同時(shí),與UNIX和Linux不同,對(duì)于廣泛使用的Microsoft Windows操作系統(tǒng),其源代碼和一些內(nèi)核技術(shù)并沒有公開,一直以來無法在教學(xué)中讓學(xué)生了解更多有關(guān)微軟操作系統(tǒng)的內(nèi)核技術(shù)和實(shí)現(xiàn)。
在基于Windows的操作系統(tǒng)原理教學(xué)中,我們采用WRK作為操作系統(tǒng)課程的教學(xué)實(shí)踐平臺(tái)。WRK的全稱是“Windows Research Kernel”,它不是一個(gè)商業(yè)產(chǎn)品,而是微軟為高校操作系統(tǒng)課程提供的可修改和跟蹤的操作系統(tǒng)教學(xué)平臺(tái),是微軟公司將Windows Kernel的核心技術(shù)融入到高校的教學(xué)和科研中的產(chǎn)物。它給出了Windows這個(gè)成功的商業(yè)操作系統(tǒng)的大部分內(nèi)核代碼,可以對(duì)其進(jìn)行修改、編譯,并且可以用這個(gè)內(nèi)核啟動(dòng)Windows操作系統(tǒng),可讓學(xué)生將操作系統(tǒng)基本原理和商業(yè)操作系統(tǒng)內(nèi)核聯(lián)系起來,進(jìn)一步加深對(duì)操作系統(tǒng)整體的理解。
本文基于WRK軟件以及隨軟件配備的WinDbg調(diào)試工具對(duì)現(xiàn)有操作系統(tǒng)原理本科生教學(xué)進(jìn)行改進(jìn),設(shè)計(jì)一系列實(shí)驗(yàn)教學(xué)內(nèi)容來提高Windows操作系統(tǒng)原理教學(xué)的效果,同時(shí)大大提高學(xué)生在學(xué)習(xí)過程中的主動(dòng)性、能動(dòng)性以及動(dòng)手實(shí)踐能力。
2 WRK的特點(diǎn)
2.1 可運(yùn)行在真實(shí)的硬件平臺(tái)
WRK是建立在真實(shí)的NT內(nèi)核基礎(chǔ)上的,實(shí)現(xiàn)了線程調(diào)度、內(nèi)存管理、I/O管理、文件系統(tǒng)等操作系統(tǒng)所必需的組成部分,可以將編譯出的內(nèi)核放到裝有Windows 2003的機(jī)器上,通過增加啟動(dòng)項(xiàng),指定從WRK內(nèi)核啟動(dòng)。通過修改編譯時(shí)的選項(xiàng),可以支持X86和AMD64兩種架構(gòu)。
當(dāng)然,我們也可以使用虛擬機(jī)運(yùn)行WRK??梢苑乐剐薷倪^的代碼對(duì)真實(shí)的硬件和文件系統(tǒng)產(chǎn)生負(fù)面影響;也可以方便地通過串口進(jìn)行調(diào)試。
2.2 包含操作系統(tǒng)中很多概念的具體實(shí)現(xiàn)
WRK中將Windows的大部分內(nèi)核實(shí)現(xiàn)都展示出來,包括CPU、內(nèi)存管理、進(jìn)程和線程調(diào)度等機(jī)制。
2.3 調(diào)試比較方便,隨機(jī)性使體驗(yàn)更加真實(shí)
一般來說,操作系統(tǒng)內(nèi)核的調(diào)試需要兩臺(tái)計(jì)算機(jī)。一臺(tái)作為宿主機(jī),運(yùn)行需要調(diào)試的內(nèi)核;另一臺(tái)作為調(diào)試機(jī),運(yùn)行調(diào)試程序。兩臺(tái)機(jī)器通過串口進(jìn)行連接,傳送調(diào)試指令和調(diào)試數(shù)據(jù)。
因?yàn)閃RK可以運(yùn)行在虛擬機(jī)上,我們可以通過一個(gè)命名管道連接虛擬機(jī)和物理機(jī)。將虛擬機(jī)作為宿主機(jī),而物理機(jī)器作為調(diào)試機(jī)來進(jìn)行調(diào)試。
不確定性是操作系統(tǒng)所必須具有的特征。WRK運(yùn)行在真實(shí)的硬件平臺(tái)上,各種硬件中斷的隨機(jī)性和不確定性賦予了WRK天生的不確定性。當(dāng)然,這個(gè)不確定性對(duì)于我們也是具有兩面性的,一方面展示的真實(shí)操作系統(tǒng)的特征;另一方面,對(duì)于我們內(nèi)核的調(diào)試也具有不確定性。
圖1展示了WRK軟件運(yùn)行的截圖示例。
3 實(shí)驗(yàn)教學(xué)內(nèi)容規(guī)劃
整體的實(shí)驗(yàn)教學(xué)過程由教師設(shè)計(jì)實(shí)驗(yàn)教學(xué)內(nèi)容和學(xué)生完成實(shí)驗(yàn)學(xué)習(xí)兩部分完成。在教學(xué)中教師與學(xué)生互動(dòng)共同實(shí)現(xiàn)教學(xué)內(nèi)容。主要工作內(nèi)容如圖2所示。
首先,由教師完成實(shí)驗(yàn)內(nèi)容設(shè)計(jì)、實(shí)驗(yàn)方案指導(dǎo)和實(shí)驗(yàn)材料,并且設(shè)計(jì)對(duì)各種實(shí)驗(yàn)結(jié)果進(jìn)行評(píng)測(cè)的方法。學(xué)生根據(jù)實(shí)驗(yàn)方案分析內(nèi)核源代碼并修改相關(guān)內(nèi)容,通過設(shè)計(jì)好的測(cè)試方法測(cè)試運(yùn)行結(jié)果,評(píng)估修改算法。
教師的工作重點(diǎn)可以歸納為以下幾個(gè)方面的內(nèi)容。
3.1 編寫有關(guān)Windows核心分析的教學(xué)和實(shí)驗(yàn)材料
基于WRK以及微軟提供的課程材料,例如CRK、TRK,在Windows操作系統(tǒng)原理學(xué)習(xí)中加強(qiáng)操作系統(tǒng)內(nèi)核分析并編寫相應(yīng)的教學(xué)和實(shí)驗(yàn)材料。
3.2 指導(dǎo)學(xué)生建設(shè)有關(guān)Windows內(nèi)核分析的實(shí)驗(yàn)環(huán)境
實(shí)驗(yàn)環(huán)境配置包括以下工作:
●準(zhǔn)備實(shí)驗(yàn)軟件,包括Windows Server 2003、Visual Studio 2007、Windows Research Kernel、Virtual PC以及WinDbg工具;
●編寫用于實(shí)驗(yàn)測(cè)試的程序;
●安裝實(shí)驗(yàn)運(yùn)行環(huán)境、Windows Server 2003虛擬機(jī)系統(tǒng);
●配置網(wǎng)絡(luò);
●在WinXP操作系統(tǒng)中編譯WRK;
●在Windows Server 2003虛擬機(jī)中使用WRK內(nèi)核;
●建立WRK的Debug環(huán)境。
3.3 指導(dǎo)學(xué)生使用WRK分析Windows內(nèi)核
在WRK正式在高校中公開使用之前,已在北大、南開等六個(gè)高校中開展教學(xué)研究,并開發(fā)了四個(gè)典型實(shí)驗(yàn)示例,打包為教學(xué)資源工具集TRK。基于WRK教學(xué)工具和這些實(shí)驗(yàn)示例,學(xué)生可以在實(shí)驗(yàn)中分析一些Windows操作系統(tǒng)源代碼,加深對(duì)其運(yùn)行機(jī)制的理解。學(xué)生必須在熟悉WRK的基礎(chǔ)上實(shí)踐已有的實(shí)驗(yàn)示例。
3.4 導(dǎo)學(xué)生對(duì)Windows內(nèi)核進(jìn)一步的學(xué)習(xí)
為了加強(qiáng)課程相關(guān)內(nèi)容的教學(xué)效果,需要調(diào)動(dòng)學(xué)生在實(shí)踐了已有的實(shí)驗(yàn)示例之后,繼續(xù)實(shí)踐新的實(shí)驗(yàn),包括通過操作系統(tǒng)經(jīng)典問題程序在WRK中的運(yùn)行狀態(tài)跟蹤、動(dòng)手修改Windows內(nèi)核某些代碼并測(cè)試運(yùn)行結(jié)果。這一階段的練習(xí)可以大大提高教學(xué)效果并鍛煉學(xué)生動(dòng)手實(shí)踐能力。
4 實(shí)驗(yàn)教學(xué)內(nèi)容設(shè)計(jì)
4.1 實(shí)踐TRK實(shí)驗(yàn)內(nèi)容
實(shí)驗(yàn)一:分析進(jìn)程和線程結(jié)構(gòu)
每個(gè)Windows進(jìn)程通過進(jìn)程模塊EPROCESS運(yùn)行,該模塊包含和指向一些其他的數(shù)據(jù)結(jié)構(gòu),如每個(gè)進(jìn)程又有一個(gè)或者多個(gè)運(yùn)行的線程模塊ETHREAD。
本實(shí)驗(yàn)首先深入了解進(jìn)程和線程的數(shù)據(jù)結(jié)構(gòu),然后分析Windows操作系統(tǒng)的進(jìn)程和線程管理。
實(shí)驗(yàn)二:進(jìn)程管理
在WRK平臺(tái)中,進(jìn)程管理是很復(fù)雜的,但是本質(zhì)上依然是進(jìn)程三種基本狀態(tài)之間的轉(zhuǎn)換:運(yùn)行態(tài)、阻塞態(tài)和就緒態(tài)。運(yùn)行態(tài)正在占用CPU運(yùn)行程序;阻塞態(tài)等待外部事件發(fā)生,無法占用CPU;就緒態(tài)進(jìn)程可運(yùn)行,但其他進(jìn)程正在占用CPU,所以被暫時(shí)掛起。
這個(gè)實(shí)驗(yàn)中將會(huì)根據(jù)一些主題和實(shí)驗(yàn)設(shè)計(jì)改變內(nèi)核代碼,以便掌握有關(guān)進(jìn)程/線程管理的內(nèi)核代碼知識(shí)。學(xué)生需要通過這個(gè)實(shí)驗(yàn)學(xué)習(xí)進(jìn)程和線程的調(diào)試技術(shù)和知識(shí)。
實(shí)驗(yàn)三:進(jìn)程間同步/互斥問題
在本實(shí)踐項(xiàng)目中,首先對(duì)“生產(chǎn)者-消費(fèi)者”算法和“讀者-寫者”算法進(jìn)行充分理解,在Windows的Visual Studio開發(fā)平臺(tái)上重新編寫這兩個(gè)問題的程序,將生成的exe程序置于WRK調(diào)試環(huán)境中,觀察用戶程序中同步/互斥數(shù)據(jù)結(jié)構(gòu)的狀態(tài),更好地理解同步/互斥機(jī)制。學(xué)習(xí)并分析同步/互斥對(duì)象及線程中的同步/互斥數(shù)據(jù)結(jié)構(gòu)以及對(duì)象和線程之間是如何有機(jī)地結(jié)合起來、分析對(duì)象的釋放、WRK的調(diào)度機(jī)制,并且使用WinDbg聯(lián)機(jī)察看相關(guān)線程狀態(tài)等。
實(shí)驗(yàn)四:工作集
一個(gè)進(jìn)程當(dāng)前正在使用的頁面的集合成為它的工作集(working set),工作集是內(nèi)存管理一個(gè)相當(dāng)重要的概念。如果在內(nèi)存中裝的是整個(gè)工作集,那么進(jìn)程的運(yùn)行在進(jìn)入下一運(yùn)行階段之前不會(huì)產(chǎn)生大量的頁面失效。若內(nèi)存太小無法容納下整個(gè)工作集,進(jìn)程的運(yùn)行會(huì)產(chǎn)生大量的頁面失效,且速度也會(huì)很緩慢,大大降低系統(tǒng)性能。通過對(duì)缺頁率的長(zhǎng)期研究,Denning提出了工作集理論。由于程序在運(yùn)行時(shí)對(duì)頁面的訪問是不均勻的(即局部性),如果能夠預(yù)知程序在某段時(shí)間內(nèi)要訪問那些頁面,并將它們提前調(diào)入內(nèi)存,這將降低缺頁率,提高CPU利用率。
實(shí)驗(yàn)內(nèi)容主要包括頁面替換算法的分析、修改和驗(yàn)證等。分析Windows的頁面調(diào)度算法,了解基本的數(shù)據(jù)結(jié)構(gòu)、原理、相關(guān)的函數(shù),借此了解Windows頁面調(diào)度算法的原理;修改Windows頁面調(diào)度算法,從最簡(jiǎn)單的隨機(jī)算法開始,逐步嘗試課程中介紹的幾種經(jīng)典算法。
4.2 其他實(shí)驗(yàn)設(shè)計(jì)
在WRK平臺(tái)中,CPU、進(jìn)程、線程、內(nèi)存的管理是很復(fù)雜的,但也是可以進(jìn)行相應(yīng)修改的。在教學(xué)中,可以在WRK平臺(tái)上設(shè)計(jì)一系列較為簡(jiǎn)單的實(shí)驗(yàn),讓學(xué)生通過對(duì)Windows內(nèi)核機(jī)制修改、Windows內(nèi)核系統(tǒng)學(xué)習(xí)兩方面來加強(qiáng)教學(xué)效果。具體設(shè)計(jì)的實(shí)驗(yàn)如下:
實(shí)驗(yàn)一:線程調(diào)度原理實(shí)驗(yàn)
嘗試對(duì)Windows操作系統(tǒng)的線程調(diào)度進(jìn)行分析,了解多任務(wù)調(diào)度和切換的原理。
●分析源代碼,了解調(diào)度的原理,包括:調(diào)度的時(shí)機(jī),線程切換的步驟,上下文保存和恢復(fù)的機(jī)制,時(shí)間片等。
●修改WRK的源代碼,修改時(shí)間片等,編寫測(cè)試程序,查看對(duì)系統(tǒng)的影響和性能的影響。
實(shí)驗(yàn)二:修改線程調(diào)度機(jī)制實(shí)驗(yàn)
嘗試對(duì)Windows操作系統(tǒng)的線程調(diào)度機(jī)制進(jìn)行修改,共享內(nèi)核模式線程棧。
●分析源代碼,了解等待操作的原理、用戶模式與內(nèi)核模式切換、線程的等待與喚醒、內(nèi)核棧的分配、線程數(shù)據(jù)結(jié)構(gòu)等。
●修改WRK的線程調(diào)度源代碼,包括創(chuàng)建內(nèi)核模式棧緩沖池、內(nèi)核線程模塊、指針地址、調(diào)度時(shí)機(jī)等,編寫測(cè)試程序,查看對(duì)系統(tǒng)的影響和性能的影響。
實(shí)驗(yàn)三:虛擬內(nèi)存模型實(shí)驗(yàn)
32位的Windows為每個(gè)進(jìn)程提供了4GB的虛擬地址空間。因此可以保證多任務(wù)之間不會(huì)發(fā)生進(jìn)程之間數(shù)據(jù)互相訪問問題。本實(shí)驗(yàn)嘗試熟悉Windows虛擬內(nèi)存模型,以更進(jìn)一步了解Windows的原理。
●閱讀WRK的源代碼,了解Windows 4GB虛擬地址空間的構(gòu)成。了解X86硬件對(duì)虛擬地址空間的支持。
●閱讀WRK的源代碼,了解非法內(nèi)存訪問的時(shí)候操作系統(tǒng)的處理過程。
●修改WRK的源代碼,把虛擬地址空間的布局進(jìn)行修改,讓不同的進(jìn)程可以有一塊共享的地址空間,并且所有的進(jìn)程都可以對(duì)這段地址空間進(jìn)行訪問。
其他可選實(shí)驗(yàn)
●多核實(shí)驗(yàn):考察在Windows系統(tǒng)下多核環(huán)境下的跨處理器同步機(jī)制,跨處理器調(diào)度的優(yōu)化。
●物理內(nèi)存管理算法:按照學(xué)生自己的思考修改WRK的物理內(nèi)存管理算法。
●作業(yè)調(diào)度管理分析實(shí)驗(yàn):分析和修改作業(yè)調(diào)度機(jī)制。
●進(jìn)程掛起和恢復(fù):通過增加一個(gè)API,把一個(gè)進(jìn)程中所有的資源掛起,保存到文件上,然后在需要的時(shí)候恢復(fù)該進(jìn)程的執(zhí)行。
5 結(jié)束語
我們?cè)诨赪indows的操作系統(tǒng)原理教學(xué)中,采用微軟為高校提供的最新WRK軟件作為操作系統(tǒng)課程的教學(xué)實(shí)踐平臺(tái),對(duì)現(xiàn)有操作系統(tǒng)原理本科生教學(xué)進(jìn)行改進(jìn),基于WRK軟件以及隨軟件配備的TRK、WinDbg調(diào)試工具等設(shè)計(jì)一系列實(shí)驗(yàn)教學(xué)內(nèi)容來提高Windows操作系統(tǒng)原理教學(xué)的效果,同時(shí)大大提高了學(xué)生的主動(dòng)性、能動(dòng)性以及動(dòng)手實(shí)踐能力。
參考文獻(xiàn)
[1] 黃水松等.計(jì)算機(jī)操作系統(tǒng)[M].武漢大學(xué)出版社,2003.
[2] 王化文.Windows網(wǎng)絡(luò)操作系統(tǒng)原理與應(yīng)用[M].武漢大學(xué)出版社,2003.