摘要:隨著智能手機(jī)、網(wǎng)絡(luò)通信以及多媒體娛樂設(shè)備的高速發(fā)展,各種版本的Linux系統(tǒng)在這些嵌入式系統(tǒng)中得到了廣泛的應(yīng)用。文章提出一種基于Linux內(nèi)核的嵌入式操作系統(tǒng)課程教學(xué)方案。針對在教學(xué)實(shí)施過程中遇到的一些關(guān)鍵問題,從培養(yǎng)目標(biāo)、知識(shí)體系、實(shí)驗(yàn)設(shè)計(jì)以及教學(xué)手段等多方面進(jìn)行了分析和探討。實(shí)施效果表明,這些方法和手段的采用能夠有效提高學(xué)生對理論知識(shí)的掌握,強(qiáng)化對問題分析能力和動(dòng)手編程能力的培養(yǎng)。
關(guān)鍵詞:Linux內(nèi)核 嵌入式操作系統(tǒng) 教學(xué)方法
文章編號(hào):1672-5913(2011)18-0029-04 中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:B
基金項(xiàng)目:北航研究生院精品課程項(xiàng)目(201010);軟件開發(fā)環(huán)境國家重點(diǎn)實(shí)驗(yàn)室開放課題(SKLSDE-2009KF-2-0X)。
隨著嵌入式系統(tǒng)中處理器性能和內(nèi)存容量的快速提高,Linux在智能手機(jī)、網(wǎng)絡(luò)通信以及多媒體娛樂設(shè)備等領(lǐng)域得到了廣泛應(yīng)用。國內(nèi)外高校也對嵌入式相關(guān)課程進(jìn)行了探索[1-2]。
針對軟件學(xué)院高層次工程化創(chuàng)新型人才的培養(yǎng)目標(biāo),結(jié)合國家Linux技術(shù)培訓(xùn)與推廣中心的建設(shè),我們在嵌入式操作系統(tǒng)的教學(xué)內(nèi)容中融入Linux的新概念、新技術(shù),以就業(yè)需求為導(dǎo)向,系統(tǒng)而全面地進(jìn)行了課程的教改研究和建設(shè)。
當(dāng)然,作為實(shí)用操作系統(tǒng),將Linux系統(tǒng)應(yīng)用到實(shí)際教學(xué)中,也有很多問題需要討論和探索,如龐大的代碼量,繁雜的基礎(chǔ)概念和應(yīng)用工具等。針對這些困難,文獻(xiàn)[3-4]進(jìn)行分析并給出了一些嘗試方案。
基于我們在相關(guān)課程中的知識(shí)和經(jīng)驗(yàn)積累,結(jié)合國內(nèi)外針對Linux教學(xué)已經(jīng)取得的成果,我們設(shè)計(jì)了一套具有自己特色的課程體系和實(shí)施方案。學(xué)生通過該課程的學(xué)習(xí),不僅可采用實(shí)例方式對嵌入式操作系統(tǒng)和計(jì)算機(jī)組成原理等核心專業(yè)基礎(chǔ)課程進(jìn)行深入系統(tǒng)地拔高,而且可強(qiáng)化C語言編程能力和UNIX平臺(tái)的系統(tǒng)開發(fā)能力,學(xué)會(huì)以“系統(tǒng)”的觀點(diǎn)來看待嵌入式系統(tǒng)的組成,理清軟件和硬件之間的相互依賴關(guān)系,為將來從事嵌入式軟件的研發(fā)奠定堅(jiān)實(shí)的理論和實(shí)踐基礎(chǔ)。
1 課程群的發(fā)展歷程
北航軟件學(xué)院自2004年起為一年級(jí)研究生和高年級(jí)本科生開設(shè)“Linux內(nèi)核分析與實(shí)踐”課程(該課程2009年得到教育部-英特爾精品課程項(xiàng)目支持),最初強(qiáng)調(diào)對操作系統(tǒng)本身原理(即內(nèi)核機(jī)制、進(jìn)程管理、內(nèi)存管理、文件系統(tǒng)和設(shè)備管理等部分)的理解。在經(jīng)過一輪授課實(shí)踐后,相當(dāng)部分學(xué)生反映對課程內(nèi)容學(xué)習(xí)有相當(dāng)困難。認(rèn)真分析后,我們結(jié)合軟件學(xué)院承擔(dān)的北航“國家Linux技術(shù)培訓(xùn)與推廣中心”的建設(shè)任務(wù),引入了Novell公司的SUSE Linux的使用和系統(tǒng)管理課程,并另外增加了Linux環(huán)境下應(yīng)用程序設(shè)計(jì)內(nèi)容,用于解決學(xué)生Linux基礎(chǔ)知識(shí)不足的問題。我們發(fā)現(xiàn)根本原因是由于這些學(xué)生不具備Linux的相關(guān)基本概念和使用經(jīng)驗(yàn),在直接學(xué)習(xí)操作系統(tǒng)相關(guān)知識(shí)時(shí),出現(xiàn)了知識(shí)斷檔。課改的實(shí)施旨在改善課程的教學(xué)效果。
嵌入式操作系統(tǒng)是該專業(yè)一年級(jí)研究生第二學(xué)期的專業(yè)限選課程,該課程和上述兩門Linux相關(guān)的課程相互結(jié)合,強(qiáng)調(diào)嵌入式系統(tǒng)中的操作系統(tǒng)的實(shí)時(shí)性、可定制等特點(diǎn),緊密結(jié)合實(shí)際就業(yè)需求,在課程中設(shè)置內(nèi)核移植、硬件驅(qū)動(dòng)和中斷并發(fā)內(nèi)核機(jī)制等跟硬件平臺(tái)相關(guān)且實(shí)踐性較強(qiáng)的內(nèi)容,并通過μCOSII原理的對比,來加強(qiáng)學(xué)生對嵌入式操作系統(tǒng)中相關(guān)概念的掌握和理解。
綜合以上課程群的內(nèi)容,驅(qū)動(dòng)程序與內(nèi)核的學(xué)習(xí)是相互促進(jìn)的,即先學(xué)習(xí)一些簡單的驅(qū)動(dòng)程序的知識(shí),有利于對內(nèi)核相關(guān)原理的學(xué)習(xí)。反過來,對內(nèi)核知識(shí)的深入學(xué)習(xí),也是進(jìn)行高級(jí)驅(qū)動(dòng)程序開發(fā)的前提。這樣做的好處是,不僅強(qiáng)調(diào)驅(qū)動(dòng)程序?qū)W習(xí)的重要性,而且重視相關(guān)的內(nèi)核原理對驅(qū)動(dòng)程序設(shè)計(jì)的相關(guān)性,將課程定位于培養(yǎng)高端的嵌入式系統(tǒng)實(shí)用人才,
結(jié)合以上教改內(nèi)容,可以總結(jié)出自頂向下和自底向上相結(jié)合的課程學(xué)習(xí)路線圖,在自頂向下部分,通過對Linux基本使用和應(yīng)用編程的學(xué)習(xí),學(xué)生可由Linux外部使用特性對內(nèi)核相關(guān)機(jī)制形成一些感性認(rèn)識(shí)。在自底向上部分,通過首先學(xué)習(xí)一種硬件平臺(tái),包括一些基本接口及其驅(qū)動(dòng),學(xué)生可對硬件提供的對內(nèi)核的支撐機(jī)制有個(gè)初步了解。
在具備上下兩方面的基礎(chǔ)后,再逐步從應(yīng)用需求和資源管理兩種角度引入操作系統(tǒng)內(nèi)核的功能需求,通過內(nèi)核相關(guān)實(shí)現(xiàn)將上層的應(yīng)用接口和下層的硬件原理銜接起來。這種知識(shí)的組織結(jié)構(gòu)既符合內(nèi)核設(shè)計(jì)的原則,也有利于學(xué)生將平臺(tái)開發(fā)和計(jì)算機(jī)組成知識(shí)融合起來。
2 課程內(nèi)容與實(shí)施
鑒于嵌入式操作系統(tǒng)相關(guān)知識(shí)點(diǎn)繁雜、涉及面廣、相互之間關(guān)聯(lián)性強(qiáng)從而造成學(xué)習(xí)時(shí)難于入門的特點(diǎn),基于對實(shí)際開源操作系統(tǒng)具體實(shí)現(xiàn)方式的分析和對比,我們確定了“理論和實(shí)踐相結(jié)合,強(qiáng)調(diào)課程‘邊界’知識(shí)點(diǎn),關(guān)注并及時(shí)融入新技術(shù)”的課程內(nèi)容設(shè)置原則。
2.1 課堂講授內(nèi)容
課程首先介紹嵌入式操作系統(tǒng)的基本功能和發(fā)展歷程,總結(jié)嵌入式操作系統(tǒng)特點(diǎn)。然后,講述實(shí)時(shí)系統(tǒng)的相關(guān)概念,包括臨界區(qū)、可重入、同步和任務(wù)切換等內(nèi)容。
課程內(nèi)容基于i386處理器,但在涉及硬件細(xì)節(jié)時(shí)一般會(huì)適當(dāng)對比ARM平臺(tái),并考慮64位結(jié)構(gòu)對內(nèi)核的影響。課堂講授的關(guān)鍵知識(shí)點(diǎn)還包括Linux的模塊編程、進(jìn)程管理、內(nèi)核機(jī)制(如中斷和下半部、時(shí)鐘和定時(shí)器、多處理器和內(nèi)核同步等基礎(chǔ)機(jī)制)、內(nèi)存管理、文件系統(tǒng)、設(shè)備管理和驅(qū)動(dòng)開發(fā)等部分。各知識(shí)點(diǎn)相應(yīng)的部分,通常都會(huì)與μCOSII的實(shí)現(xiàn)方式進(jìn)行適當(dāng)對比。由于內(nèi)容和細(xì)節(jié)繁多,且相互之間關(guān)聯(lián)性強(qiáng),所以在課堂上只選擇講授各大部分中關(guān)鍵和基礎(chǔ)性的知識(shí)點(diǎn),而對于具體細(xì)節(jié)等需要深入學(xué)習(xí)的部分則通過實(shí)驗(yàn)進(jìn)行涵蓋。在具體內(nèi)容組織時(shí)采用“理論與實(shí)踐”的組織方式,即首先針對各相關(guān)內(nèi)容設(shè)計(jì)實(shí)驗(yàn)(分為源代碼分析和動(dòng)手編碼兩類),然后再根據(jù)實(shí)驗(yàn)內(nèi)容確定課堂上的講授內(nèi)容。
嵌入式操作系統(tǒng)處于硬件與應(yīng)用程序之間,這決定了學(xué)習(xí)操作系統(tǒng)時(shí)存在一些“邊界”知識(shí)。比如,編譯鏈接時(shí)的地址重定位、硬件的支撐機(jī)制、內(nèi)核的啟動(dòng)過程等。盡管這些知識(shí)不屬于核心知識(shí)點(diǎn),但它們是完整理解核心知識(shí)點(diǎn)的基礎(chǔ),因此需要在課程講授時(shí)明確指出。
對于軟硬件領(lǐng)域出現(xiàn)的新技術(shù),如虛擬化、多核等與操作系統(tǒng)內(nèi)核密切相關(guān)的一些新技術(shù),在課程中也會(huì)適當(dāng)解釋。
2.2 實(shí)驗(yàn)內(nèi)容
為適應(yīng)不同基礎(chǔ)和能力的學(xué)生,我們設(shè)計(jì)了分層次的實(shí)驗(yàn)內(nèi)容,形式上分為源代碼閱讀分析和上機(jī)實(shí)驗(yàn)兩大類。
2.2.1 源代碼閱讀分析
源代碼閱讀分析實(shí)驗(yàn)的主要目標(biāo)是使學(xué)生深入理解Linux或μCOSII操作系統(tǒng)的核心工作機(jī)制,并熟悉內(nèi)核代碼的組織方式和編程風(fēng)格。這類實(shí)驗(yàn)的主要內(nèi)容涉及內(nèi)核的啟動(dòng)、內(nèi)存映射、進(jìn)程的創(chuàng)建、打開文件、信號(hào)量的實(shí)現(xiàn)等。
要求學(xué)生選擇2項(xiàng)以上的題目進(jìn)行分析,并完成分析報(bào)告。報(bào)告的內(nèi)容包括所選內(nèi)容的技術(shù)背景和應(yīng)用價(jià)值、所使用的算法和數(shù)據(jù)結(jié)構(gòu)、具體實(shí)現(xiàn)時(shí)函數(shù)的調(diào)用關(guān)系,并對各函數(shù)的基本功能進(jìn)行說明。報(bào)告最后還要求從操作系統(tǒng)原理的角度對所選擇技術(shù)的優(yōu)缺點(diǎn)及可能存在的改進(jìn)方法進(jìn)行分析。
2.2.2 上機(jī)實(shí)驗(yàn)
上機(jī)實(shí)驗(yàn)的主要目的是培養(yǎng)學(xué)生C語言和系統(tǒng)平臺(tái)的編程能力,并對課堂和源代碼閱讀所學(xué)習(xí)的原理進(jìn)行驗(yàn)證式或創(chuàng)造式的動(dòng)手技能訓(xùn)練。這類實(shí)驗(yàn)的主要內(nèi)容包括內(nèi)核的編譯與安裝、模塊編程與管理、為內(nèi)核增加一種新的同步對象[5]、共享內(nèi)存和內(nèi)存映射文件、字符設(shè)備驅(qū)動(dòng)程序以及復(fù)雜設(shè)備驅(qū)動(dòng)程序等,內(nèi)容的設(shè)置在涵蓋主要原理的同時(shí),兼顧實(shí)際就業(yè)時(shí)的技能需求。
2.3 教學(xué)實(shí)施
作為以動(dòng)手能力培養(yǎng)為目標(biāo)的課程,強(qiáng)調(diào)以學(xué)生為主體,但同時(shí)也重視教師的引導(dǎo)作用。本課程綜合運(yùn)用以下多種教學(xué)方法和手段,以達(dá)到高層次工程化創(chuàng)新型人才的培養(yǎng)目標(biāo)。
1) 課堂專題討論。針對操作系統(tǒng)各部分知識(shí)相關(guān)性強(qiáng),不易理清的特點(diǎn),在課堂上給出一些引導(dǎo)性的問題,讓學(xué)生分組進(jìn)行討論。老師根據(jù)各組的討論情況進(jìn)行相應(yīng)的引導(dǎo),從而使學(xué)生在討論的過程中將各相關(guān)的知識(shí)點(diǎn)進(jìn)行整理、組合,達(dá)到靈活應(yīng)用的目的
2) 實(shí)驗(yàn)指導(dǎo)教師引導(dǎo)小組討論。實(shí)驗(yàn)指導(dǎo)老師定期組織其指導(dǎo)的學(xué)生小組進(jìn)行討論,依據(jù)實(shí)驗(yàn)報(bào)告和項(xiàng)目文檔對其中存在的難題進(jìn)行解答并展開討論,對一些有爭議的話題進(jìn)行引導(dǎo),鼓勵(lì)學(xué)生進(jìn)行發(fā)散型思考,以提高其創(chuàng)新能力。
3) 綜合考評方式。采用源代碼分析論文(25%)、實(shí)驗(yàn)報(bào)告(25%)和期末筆試(50%)相結(jié)合的考核方式。源代碼分析論文強(qiáng)調(diào)學(xué)生從分析獲得的個(gè)人體會(huì),實(shí)驗(yàn)強(qiáng)調(diào)學(xué)生的動(dòng)手能力和代碼規(guī)范性,而筆試則全部采用簡答題形式,注重對概念與具體實(shí)現(xiàn)方式的理解與對接。
4) 現(xiàn)代教學(xué)手段的運(yùn)用。針對課程中的一些重要內(nèi)容,制作相關(guān)的圖形、動(dòng)畫或視頻,以增強(qiáng)教學(xué)效果。利用網(wǎng)絡(luò)環(huán)境展開教師與學(xué)生、學(xué)生與學(xué)生之間的及時(shí)溝通和交流,促進(jìn)學(xué)生的學(xué)習(xí)主動(dòng)性和自主性。
3 課程特色
1) 針對課程特點(diǎn),合理組織教學(xué)內(nèi)容。針對該課程相關(guān)知識(shí)點(diǎn)繁雜,涉及面廣,相互之間關(guān)聯(lián)性強(qiáng)從而造成學(xué)習(xí)時(shí)難于入門的特點(diǎn),本課程采用兩種實(shí)際的軟件硬件平臺(tái)的具體實(shí)現(xiàn)技術(shù)相對比的方式進(jìn)行教學(xué),以場景的形式對進(jìn)程創(chuàng)建和切換、虛存映射等操作系統(tǒng)核心知識(shí)進(jìn)行組織,有利于學(xué)生對相關(guān)知識(shí)的理解。另外,為了使學(xué)生理解操作系統(tǒng)和應(yīng)用程序運(yùn)行的來龍去脈,增加了(動(dòng)態(tài))連接、系統(tǒng)的引導(dǎo)和啟動(dòng)、可執(zhí)行文件的格式和組成等“邊界”內(nèi)容。
2) 明確課程目標(biāo),注意理清同時(shí)涉及軟硬件的概念之間的關(guān)系。作為軟硬件密切結(jié)合的嵌入式系統(tǒng),嵌入式操作系統(tǒng)的深入學(xué)習(xí)離不開對硬件平臺(tái)的深入理解。但很多技術(shù),比如中斷處理、地址綁定等概念,操作系統(tǒng)中的設(shè)計(jì)都需要依賴于處理器提供的支持才能實(shí)現(xiàn)。因此,在講述這類知識(shí)點(diǎn)時(shí),強(qiáng)調(diào)哪些是硬件的技術(shù),哪些是軟件的技術(shù)。這種做法非常有利于學(xué)生理解硬件中有哪些技術(shù)是為了操作系統(tǒng)的存在而設(shè)計(jì)的,操作系統(tǒng)中有哪些技術(shù)的實(shí)現(xiàn)是為了在多種硬件平臺(tái)上“通用”而設(shè)計(jì)的,從而達(dá)到培養(yǎng)創(chuàng)新型高級(jí)“系統(tǒng)”設(shè)計(jì)人才的目的。
3) 強(qiáng)調(diào)實(shí)用技能,采用源代碼分析和編程實(shí)驗(yàn)相結(jié)合的實(shí)踐形式。為了達(dá)到高效運(yùn)行的設(shè)計(jì)目的,操作系統(tǒng)的源代碼通常設(shè)計(jì)得非?!熬馈保虼丝勺鳛榫幊棠芰ε囵B(yǎng)的經(jīng)典范例來使用。而上機(jī)編程實(shí)驗(yàn),則需學(xué)生綜合運(yùn)用所學(xué)的相關(guān)原理和編程技術(shù),設(shè)計(jì)并實(shí)現(xiàn)一種系統(tǒng)功能,因此強(qiáng)調(diào)實(shí)際動(dòng)手技能的培養(yǎng)。這種代碼分析與上機(jī)實(shí)驗(yàn)相結(jié)合,真正做到了理論與實(shí)踐相結(jié)合的培養(yǎng)模式。
4 結(jié)語
以上教改的實(shí)施顯著提高了學(xué)生的學(xué)習(xí)興趣和學(xué)習(xí)主動(dòng)性,通過學(xué)生反饋的課程評估結(jié)果及其就業(yè)表現(xiàn)驗(yàn)證了課程建設(shè)的有效性。
我們深知,課程的建設(shè)和改進(jìn)沒有止境,教學(xué)內(nèi)容和教學(xué)方法需要根據(jù)教學(xué)效果的反饋不斷地進(jìn)行循環(huán)優(yōu)化。希望能通過進(jìn)一步借鑒國內(nèi)外同行的寶貴經(jīng)驗(yàn),把我們的教學(xué)水平提高到一個(gè)新的層面。
參考文獻(xiàn):
[1] Ian McLough