秦俊平 壽永熙 馬志強(qiáng) 趙俊生
摘要:本文介紹了作者多年來對操作系統(tǒng)實(shí)例與實(shí)踐教學(xué)的研究與探索的經(jīng)驗(yàn),提出了在教學(xué)過程中采用工具軟件詮釋實(shí)例的方法。
關(guān)鍵詞:操作系統(tǒng);工具軟件;鏈接;模塊;虛實(shí)地址空間;地址轉(zhuǎn)換
中圖分類號:G642文獻(xiàn)標(biāo)識碼:B文章編號:1672-5913(2009)04-0030-02
操作系統(tǒng)是用來管理計(jì)算機(jī)系統(tǒng)中所有軟、硬件資源的系統(tǒng)軟件,所有的計(jì)算機(jī)用戶都在使用操作系統(tǒng),只不過不同層次的用戶在不同層次使用操作系統(tǒng)提供的功能。計(jì)算機(jī)相關(guān)專業(yè)一直以來將操作系統(tǒng)作為最重要的專業(yè)核心課程,一方面,使學(xué)生通過操作系統(tǒng)的學(xué)習(xí),深入理解計(jì)算機(jī)的軟硬件協(xié)同工作原理;另一方面,有助于加強(qiáng)和培養(yǎng)同學(xué)們的解決實(shí)際問題的綜合能力,加深專業(yè)素養(yǎng),而這也正是計(jì)算機(jī)專業(yè)與非計(jì)算機(jī)專業(yè)對學(xué)生計(jì)算機(jī)知識培養(yǎng)的區(qū)別所在。
1課題背景
面對這樣的定位,教師如何教、學(xué)生如何學(xué)成為各高校相關(guān)教師不斷研究的方向。教師所講授的內(nèi)容從基本理論知識和典型算法到理論與實(shí)際操作系統(tǒng)相結(jié)合,與此相對應(yīng),各高校也編寫出版了一些新的將操作系統(tǒng)理論與實(shí)際操作系統(tǒng)結(jié)合在一起的教材。新的教學(xué)內(nèi)容對教師提出了更高的要求,也促使我們探索更有效的教學(xué)方式。以“傳授知識、培養(yǎng)能力”為目標(biāo),我們將操作系統(tǒng)教學(xué)內(nèi)容分為三部分處理:
(1)對于傳統(tǒng)操作系統(tǒng)理論和典型算法,既要讓同學(xué)們學(xué)習(xí)系統(tǒng)的操作系統(tǒng)理論,又要為同學(xué)們參加研究入學(xué)考試奠定基礎(chǔ)。在覆蓋大綱的前提下,講授時(shí)務(wù)求透徹。保證同學(xué)們能夠理解原理。
(2)對于操作系統(tǒng)實(shí)例,講授操作系統(tǒng)功能在具體操作系統(tǒng)中是如何實(shí)現(xiàn)的,從實(shí)際教學(xué)情況來看,不太易于解釋明白。究其原因,主要有:
①操作系統(tǒng)作為大型系統(tǒng)軟件,規(guī)模龐大,比如較流行的作為實(shí)例的Unix、Linux或Windows系統(tǒng),規(guī)模都很大;
②操作系統(tǒng)功能都是軟件和硬件配合工作實(shí)現(xiàn)的,其中任一部分功能的實(shí)現(xiàn),都涉及太多的細(xì)節(jié)問題,比如存儲器管理中進(jìn)程邏輯地址到物理地址的映射,就涉及到了CPU中專用寄存器、內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)和硬件的地址轉(zhuǎn)換結(jié)構(gòu)等知識。
這一部分所涉及知識全部講述,課時(shí)必然不夠用:囫圇吞棗地講,同學(xué)們課堂上聽不懂,下去自學(xué)必定遇到障礙(復(fù)雜的結(jié)構(gòu),瑣碎的細(xì)節(jié)),最終極有可能使此一部分內(nèi)容以記住幾個(gè)概念、了解幾個(gè)數(shù)據(jù)結(jié)構(gòu)收場,從而失去學(xué)習(xí)實(shí)例的本意。
(3)對于操作系統(tǒng)的實(shí)踐環(huán)節(jié),要使學(xué)生主動(dòng)運(yùn)用所學(xué)理論解決問題,以提高能力為目標(biāo)。
操作系統(tǒng)實(shí)例和操作系統(tǒng)的實(shí)踐部分是加強(qiáng)和培養(yǎng)學(xué)生的解決實(shí)際問題的綜合能力的關(guān)鍵環(huán)節(jié),對加深學(xué)生的專業(yè)素養(yǎng)很有意義,其如何實(shí)施是教學(xué)研究的重點(diǎn)。
2操作系統(tǒng)實(shí)例教學(xué)的研究
我院在教學(xué)過程中,注重實(shí)踐能力和創(chuàng)新能力的培養(yǎng),強(qiáng)調(diào)學(xué)以致用,激發(fā)同學(xué)們的學(xué)習(xí)興趣。
具體在操作系統(tǒng)實(shí)例教學(xué)中,我們的目標(biāo)是:
(1)力求從整體上展現(xiàn)操作系統(tǒng)功能的實(shí)現(xiàn)方法,避免陷入細(xì)節(jié)。
(2)操作系統(tǒng)作為大型軟件,結(jié)構(gòu)復(fù)雜,功能完善,操作系統(tǒng)實(shí)例教學(xué)不求面面俱到,而是以其中的幾個(gè)方面作為突破口,詮釋具體操作系統(tǒng)的實(shí)現(xiàn)方法,從而舉一反三,理解全部。
講授實(shí)例的目的是介紹在具體操作系統(tǒng)中,理論是如何實(shí)現(xiàn)的。新教材有的是以分析開源操作系統(tǒng)的源代碼及操作系統(tǒng)的結(jié)構(gòu)來進(jìn)行解釋的,這是非常好的資料,但往往篇幅較大,作為課堂教學(xué)內(nèi)容有散亂、不易于組織的缺點(diǎn)。鑒于此,如果能將理論知識的實(shí)現(xiàn)方法通過直觀的方法進(jìn)行剖析,從另外一個(gè)角度展現(xiàn)實(shí)現(xiàn)的細(xì)節(jié),對學(xué)生的學(xué)習(xí)、理解是大有幫助的。我們采用一系列工具軟件由外向內(nèi)一步步地展現(xiàn)操作系統(tǒng)的功能實(shí)現(xiàn)。
3操作系統(tǒng)實(shí)例教學(xué)的實(shí)踐
下面主要以Windows系統(tǒng)下存儲器管理為例,介紹采用工具軟件進(jìn)行教學(xué)的過程。講授操作系統(tǒng)其他管理功能的思想與此相同,只是所使用工具軟件有所不同。
在介紹存儲器管理部分時(shí),要介紹程序的鏈接方式。我們用一段源程序作為實(shí)例,分別采用不同的IDE環(huán)境,得到功能完全相同的兩種不同格式(靜態(tài)鏈接和動(dòng)態(tài)鏈接)的可執(zhí)行文件。首先比較兩種格式文件的大小,一般而言,靜態(tài)鏈接可執(zhí)行文件遠(yuǎn)大于動(dòng)態(tài)鏈接可執(zhí)行文件,相比而言多了些什么內(nèi)容呢?靜態(tài)鏈接可執(zhí)行文件中包含了該程序運(yùn)行需要的所有內(nèi)容,其中有程序中所調(diào)用的庫函數(shù)實(shí)現(xiàn)代碼,那么動(dòng)態(tài)鏈接可執(zhí)行文件是如何組織的呢?分析動(dòng)態(tài)鏈接所得到可執(zhí)行文件,在Windows下,使用dependences工具,分析PE文件頭部得出了所要?jiǎng)討B(tài)鏈接的庫以及庫中的具體函數(shù);在Linux下,使用idd工具分析ELF文件頭部得出了所要?jiǎng)討B(tài)鏈接的庫。
接下來,分析動(dòng)態(tài)鏈接庫是如何加載的。對于Windows的虛擬存儲器,在進(jìn)程邏輯地址空間,分段概念如何體現(xiàn)呢?首先運(yùn)行鏈接得到的可執(zhí)行文件,創(chuàng)建進(jìn)程之后使用工具軟件分析進(jìn)程快照(snapshot),可得該進(jìn)程當(dāng)前加載的模塊的情況,包括每個(gè)模塊的名稱、大小、基地址和共享計(jì)數(shù)等,這就可以看到動(dòng)態(tài)鏈接庫確實(shí)被加載到進(jìn)程邏輯地址空間,而且這些模塊是被整體加載的,它們占用不連續(xù)的邏輯地址,由此可見,動(dòng)態(tài)鏈接庫就是操作系統(tǒng)理論中分段管理的實(shí)際對應(yīng)物,從而段是一個(gè)面向用戶的邏輯單位,段內(nèi)連續(xù)、段間離散,分段引入的是二維地址空間等理論得到了生動(dòng)的詮釋。
再進(jìn)一步,在程序中增加動(dòng)態(tài)加載模塊的語句,并安排到某分支中,重新編譯、鏈接得到可執(zhí)行文件。運(yùn)行并分析其所加載的模塊,執(zhí)行相應(yīng)的包含動(dòng)態(tài)加載模塊的語句分支后,再分析其所加載的模塊,對比分析兩次結(jié)果的不同,闡述動(dòng)態(tài)加載的相應(yīng)內(nèi)容。在程序中加載兩個(gè)占用同一推薦地址的動(dòng)態(tài)鏈接庫模塊,運(yùn)行其并分析其所加載的模塊,可見當(dāng)發(fā)生地址沖突時(shí)系統(tǒng)是如何處理的,借以解釋地址重定位。在兩個(gè)程序中使用同一個(gè)動(dòng)態(tài)鏈接庫,分別編譯、鏈接得到動(dòng)態(tài)鏈接格式的可執(zhí)行文件,先后分別運(yùn)行兩個(gè)程序,并觀察隨著進(jìn)程創(chuàng)建、結(jié)束該模塊引用計(jì)數(shù)的變化情況,闡述以段作為管理單位實(shí)現(xiàn)共享的實(shí)現(xiàn)方法。
進(jìn)程邏輯地址空間涉及內(nèi)容講授完畢之后,虛擬存儲器的另一個(gè)重要問題——虛實(shí)地址空間的地址轉(zhuǎn)換問題,是這樣來解釋的:首先選中程序中某個(gè)變量,運(yùn)行程序并得到具體某時(shí)刻變量值、變量邏輯地址。其次通過工具軟件得到該進(jìn)程對應(yīng)的物理地址空間。再次用工具軟件計(jì)算得該變量對應(yīng)的物理地址,利用工具從該物理地址讀出當(dāng)前值,從變量的數(shù)據(jù)類型、所占用字節(jié)數(shù)和當(dāng)前值等方面分析物理內(nèi)存內(nèi)容與之是否吻合。再次,剖析剛才地址轉(zhuǎn)換所涉及的頁目錄索引、頁表索引和責(zé)表內(nèi)容等具體內(nèi)容,由此闡述具體操作系統(tǒng)實(shí)現(xiàn)從邏輯地址到物理地址映射的映射過程及各種數(shù)據(jù)結(jié)構(gòu)的組織及所起的作用。
總體上講,將軟件工具引入到教學(xué)中,是一種“擺事實(shí),講道理”的教學(xué)方法,對于每個(gè)知識點(diǎn),首先結(jié)合實(shí)例通過軟件工具盡可能地將操作系統(tǒng)所做的工作展現(xiàn)出來,在這一過程中結(jié)合操作系統(tǒng)理論和適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)、硬件知識,剖析這部分功能是如何實(shí)現(xiàn)的,從而達(dá)到使同學(xué)們在較短時(shí)間內(nèi)理解的目的。
4操作系統(tǒng)實(shí)踐教學(xué)的研究
操作系統(tǒng)實(shí)踐教學(xué)環(huán)節(jié),讓同學(xué)們親自動(dòng)手,檢驗(yàn)和應(yīng)用前面學(xué)習(xí)的知識,完成相應(yīng)題目來提高能力。從面向應(yīng)用的角度,制定恰當(dāng)?shù)念}目與合理的組織形式是實(shí)施的關(guān)鍵。為此,我們進(jìn)行了如下改革:
(1)實(shí)踐教學(xué)內(nèi)容
在課堂授課的基礎(chǔ)上,遵循“傳授知識、培養(yǎng)能力”這一思路,我們將以往模擬實(shí)現(xiàn)操作系統(tǒng)功能的實(shí)踐環(huán)節(jié),改為面向應(yīng)用指定題目,大體分為兩個(gè)方向:
①課時(shí)較少的情況下利用系統(tǒng)功能調(diào)用編程,在應(yīng)用層開發(fā)出有特色的功能;
②課時(shí)較多的情況下首先編寫工作于核心層下的驅(qū)動(dòng)程序,獲得訪問核心數(shù)據(jù)結(jié)構(gòu)的權(quán)限后再將相關(guān)數(shù)據(jù)傳給工作于應(yīng)用層的普通程序,兩者結(jié)合完成有特色的功能。前述實(shí)現(xiàn)分析虛實(shí)地址轉(zhuǎn)換過程的工具軟件就是這樣設(shè)計(jì)的。
(2)實(shí)踐教學(xué)組織形式
如何激發(fā)同學(xué)們的學(xué)習(xí)熱情,是我們一直在探索的內(nèi)容。具體到實(shí)踐教學(xué)組織上,積極鼓勵(lì)優(yōu)秀的同學(xué)提出自己的創(chuàng)意及想法。這些創(chuàng)意及想法經(jīng)教師審閱后可作為實(shí)踐題目。在此基礎(chǔ)上,較大題目組織為項(xiàng)目組,目標(biāo)是在有限的時(shí)間內(nèi)完成較完整的項(xiàng)目,之后項(xiàng)目組成員共同總結(jié),完成實(shí)踐報(bào)告;較小題目個(gè)人完成并提交實(shí)踐報(bào)告。
(3)實(shí)踐教學(xué)平臺
我們在虛擬機(jī)上配置操作系統(tǒng),再配置開發(fā)環(huán)境來搭建實(shí)踐教學(xué)平臺,這樣從高級語言編程到系統(tǒng)功能調(diào)用,以及直接的硬件編程全部可以實(shí)施,而且可以根據(jù)同學(xué)們的熟悉情況選擇相應(yīng)的系統(tǒng)及編程環(huán)境,自由度較大。
經(jīng)過幾年的摸索與積累,我們已收集和自己開發(fā)了一部分用于操作系統(tǒng)教學(xué)的工具軟件,其中有的是教師開發(fā)的,也有的是師生共同努力開發(fā)的,之中的許多工作得到了學(xué)校、學(xué)院的立項(xiàng)支持;同時(shí)教師申請的科研項(xiàng)目積極吸收感興趣的同學(xué)參加,搭建起一個(gè)開放的平臺推動(dòng)教學(xué)水平和科研能力的發(fā)展。我們也積極借鑒國內(nèi)外同行的有益經(jīng)驗(yàn),為提升操作系統(tǒng)的教學(xué)水平不斷努力。