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