王亞 ,李歡 ,晁妍 ,王先傳
(1.阜陽師范大學(xué)計算機(jī)與信息工程學(xué)院,安徽 阜陽 236037;2.阜陽師范大學(xué)教務(wù)處,安徽 阜陽 236037)
操作系統(tǒng)課程教學(xué)普遍存在注重對理論基礎(chǔ)知識和經(jīng)典算法分析,學(xué)生缺少機(jī)會學(xué)習(xí)實例操作系統(tǒng)的內(nèi)部結(jié)構(gòu)和運行機(jī)制。而真正學(xué)好操作系統(tǒng)這些基礎(chǔ)理論知識,最有效的學(xué)習(xí)途徑就是動手實踐操作系統(tǒng)的開發(fā)過程。操作系統(tǒng)實踐課程具有較強(qiáng)的工程特征,教學(xué)過程中應(yīng)注重實踐環(huán)節(jié),要求學(xué)生完成大量實驗,以理解操作系統(tǒng)的運行機(jī)制。
根據(jù)教育部 《高等學(xué)校計算機(jī)科學(xué)與技術(shù)專業(yè)實踐教學(xué)體系與規(guī)范》的要求,操作系統(tǒng)課程不僅要開設(shè)實驗課程,而且要開設(shè)課程設(shè)計。操作系統(tǒng)實驗教學(xué)是課程教學(xué)中薄弱的環(huán)節(jié),缺少實例分析,學(xué)生動手實踐的機(jī)會也很少,致使學(xué)生無法深入理解操作系統(tǒng)的運行機(jī)制,這種理論與實踐脫節(jié)的現(xiàn)象嚴(yán)重影響操作系統(tǒng)教學(xué)效果[1-3]。綜合國內(nèi)外高校操作系統(tǒng)課程建設(shè)以及相關(guān)實驗課程情況,本文將重點分析國內(nèi)外高校使用的教學(xué)操作系統(tǒng)特點,以及在這些平臺之上開設(shè)課程設(shè)計的情況。從中汲取成功經(jīng)驗,選擇合適的教學(xué)操作系統(tǒng),設(shè)計適合本校學(xué)生特點的課程設(shè)計內(nèi)容,為推進(jìn)本校的操作系統(tǒng)實踐教學(xué)改革做指導(dǎo)。
以教學(xué)為目的教學(xué)操作系統(tǒng)不斷涌現(xiàn),國外有 Minix、XV6、GeekOS、Nachos、OS/161 等,國內(nèi)有uCore、Tinix、MOS等。雖然設(shè)計方法和主要功能各有差別,但都有共同特點:以教學(xué)為目的、開源、開放和易擴(kuò)展,所以能很好地滿足操作系統(tǒng)實驗教學(xué)需求。教學(xué)操作系統(tǒng)的運行要依賴于重要的硬件資源——處理器,根據(jù)處理器類型可分為兩大類:一個基于復(fù)雜指令集CISC(Complex Instruction Set Computing)結(jié)構(gòu)的X86(或Intel IA32)通用處理器的,另一是基于精簡指令集RISC(Reduced Instruction Set Computing)結(jié)構(gòu)的MIPS處理器的。
1.1.1 Minix
Minix(Mini-Unix)由荷蘭阿姆斯特丹大學(xué)Andrew S.Tanenbaum 開發(fā)設(shè)計[4]。 具有微內(nèi)核結(jié)構(gòu),包括系統(tǒng)啟動、進(jìn)程管理、存儲管理、文件系統(tǒng)、設(shè)備驅(qū)動程序、網(wǎng)絡(luò)和Shell等比較完整的內(nèi)容。系統(tǒng)由一萬多行代碼組成,五千多行代碼運行在內(nèi)核模式下,其它代碼運行在用戶模式下。該系統(tǒng)已基本實現(xiàn)了操作系統(tǒng)的主要功能,適合學(xué)生練習(xí)的空間已很小。系統(tǒng)功能較完整,結(jié)構(gòu)過于龐雜,用于集中式教學(xué)過程中,比較難以理解和掌握,特別對專業(yè)基礎(chǔ)不是扎實的學(xué)生,更難掌握。所以國內(nèi)選擇該系統(tǒng)作為課程設(shè)計平臺的高校都是一些知名重點高校,如:上海交大、南京大學(xué)、南開大學(xué)等。雖然設(shè)計的最初目的是為了教學(xué),但是在實際的教學(xué)過程使用還是有些困難。
1.1.2 XV6
基于Unix系統(tǒng)的第6版用ANSI標(biāo)準(zhǔn)的C語言編寫,在X86處理器上運行的微內(nèi)核系統(tǒng),所以命名為XV6。它是由麻省理工大學(xué)(MIT)為操作系統(tǒng)工程課程教學(xué)而設(shè)計的[5],XV6是一個供學(xué)生閱讀的學(xué)習(xí)操作系統(tǒng),除了XV6外還有一個供學(xué)生實驗JOS微內(nèi)核系統(tǒng),避免了學(xué)生花太多的精力在底層設(shè)計,讓學(xué)生集中精力在操作系統(tǒng)核心設(shè)計。國內(nèi)外也有很多大學(xué)使用該系統(tǒng),如:耶魯大學(xué)(Yale University)、清華大學(xué)、北京大學(xué)、東北大學(xué)等。
1.1.3 GeekOS
由美國馬里蘭大學(xué)老師開發(fā)設(shè)計,其設(shè)計目標(biāo)是在一個真實的X86硬件平臺上實現(xiàn)簡潔版操作系統(tǒng)[6]。雖然整個系統(tǒng)只設(shè)計了七個項目,但卻覆蓋了操作系統(tǒng)的核心內(nèi)容,并且項目與項目之間難度逐漸遞增,給學(xué)生提供一個循序漸進(jìn)的學(xué)習(xí)環(huán)境。以該系統(tǒng)為學(xué)習(xí)內(nèi)核的工具,學(xué)生動手參與到一個操作系統(tǒng)的開發(fā)中,更適合學(xué)生學(xué)習(xí)的需求。GeekOS基于C語言,可以在Linux環(huán)境下編程,對其功能進(jìn)行擴(kuò)充,也可以在Windows下使用Cygwin工具進(jìn)行開發(fā)。該平臺的使用對學(xué)生專業(yè)基礎(chǔ)和能力的要求,相對較弱一些,所以國內(nèi)選擇使用該平臺作為課程設(shè)計的高校,普通本科院校占據(jù)多數(shù),如:桂林電子科技大學(xué)、山東科技大學(xué)等,當(dāng)然也有少數(shù)重點高校使用,如西北工業(yè)大學(xué)等。
1.1.4 其他
(1)Linux
芬蘭赫爾辛基大學(xué) (Helsinki University)的Linus Torvalds,以Minix-386硬盤鏡像為最初環(huán)境開發(fā)了Linux-0.01。它的源代碼開放,經(jīng)過眾多優(yōu)秀程序員共同開發(fā)完善,現(xiàn)在已經(jīng)發(fā)展為功能強(qiáng)大的Linux操作系統(tǒng)。用于教學(xué)時一般選擇低版本內(nèi)核,但其內(nèi)核用于教學(xué)還是過于龐大。目前有哥倫比亞大學(xué)(Columbia University)、國防科技大學(xué)、西安電子科技大學(xué)、杭州電子科技大學(xué)等大學(xué)使用該系統(tǒng)。
(2)uCore
清華大學(xué)計算機(jī)系陳渝團(tuán)隊為本科生而設(shè)計的教學(xué)操作系統(tǒng)[7],該系統(tǒng)基于 XV86、參考了麻省理工(MIT)的JOS、哈佛(Harvard University)的OS/161和Linux系統(tǒng),采用C語言和X86匯編語言,以增量方式完成uCore OS的設(shè)計,代碼在五千行以內(nèi)非常適合教學(xué)為目的。
(3)Pintos
Pintos是Nachos系統(tǒng)的改版,由于Nachos依賴于MIPS匯編代碼,不便于在X86硬件平臺運行。斯坦福大學(xué)(Stanford University)用C語言編寫了,可以運行在X86實際硬件平臺上的Pintos[8]。目前國內(nèi)高校有解放軍理工大學(xué)、西安電子科技大學(xué)等在使用該系統(tǒng)。
1.2.1 Nachos
Nachos(Not Another Completely Heuristic Operating System)由Thomas Anderson設(shè)計,在美國加州大學(xué)伯克利分校 (University of California,Berkeley)發(fā)展起來操作系統(tǒng)課程設(shè)計平臺[9]。 它是一個運行過程可以被跟蹤的教學(xué)操作系統(tǒng),作為一個用戶進(jìn)程運行在主操作系統(tǒng)之上,同時還需要運行在一個模擬MIPSR2/3000指令集虛擬機(jī)上。Nachos建立在軟件模擬的虛擬機(jī)上,避免了編寫復(fù)雜的硬件控制程序,用C++和JAVA語言中的類來表示各個機(jī)器模擬對象。與GeekOS相比,只能運行在MIPS處理器的模擬器上,若移植到實際硬件機(jī)器行,需要使用交叉編譯器才能把代碼編譯成MIPS相應(yīng)的機(jī)器代碼。但是該系統(tǒng)存在和實際操作系統(tǒng)不相符合的設(shè)計,比如:內(nèi)核設(shè)計不受內(nèi)存容量限制,這樣會對實際操作系統(tǒng)運行機(jī)制會造成誤解。由C++對象設(shè)計與底層硬件隔離模擬器接口,學(xué)生無法了解真正硬件的工作過程。國內(nèi)使用該系統(tǒng)的高校有山東大學(xué)、四川大學(xué)、北京大學(xué)等。
1.2.2 OS/161
由美國哈佛大學(xué)(Harvard University)設(shè)計,運行在與操作系統(tǒng)無關(guān)的System/161模擬器上[10]。它只包括一個便攜系統(tǒng)的框架結(jié)構(gòu),與處理器和平臺相關(guān)的代碼分開維護(hù),用C語言編寫、GCC編譯。系統(tǒng)提供了基本的核心功能,其它功能不包括在內(nèi),設(shè)計成任務(wù)由學(xué)生編程完成,給學(xué)生提供了充分的學(xué)習(xí)空間。與Nachos有很多相似之處,需要使用交叉編譯器才能把代碼編譯成MIPS相應(yīng)的機(jī)器代碼。
由于基于CISC結(jié)構(gòu)的X86或IA32處理器是最通用的處理器,下面重點介紹該結(jié)構(gòu)下的幾個教學(xué)操作系統(tǒng)的課程設(shè)計項目。
國外知名高校MIT開設(shè)了6.828:Operating System Engineering[11],在 XV6 和 JOS 的基礎(chǔ)上開設(shè)了七個實驗,課程設(shè)計內(nèi)容如表1所示。
表1 MIT 6.828基于XV6課程設(shè)計項目
清華大學(xué)計算機(jī)系教師開發(fā)設(shè)計的uCore OS,2015年春季在專業(yè)IT在線實訓(xùn)平臺 “實驗樓”上開設(shè)了“操作系統(tǒng)實驗-基于uCore OS”的實驗課程[12],課程設(shè)計內(nèi)容如表2所示。
該教學(xué)操作系統(tǒng)一般在普通本科院校中使用較廣泛,以桂林電子科技大學(xué)為例,詳細(xì)課程設(shè)計內(nèi)容如表3所示。
表2 清華大學(xué)基于uCore OS的課程設(shè)計項目
表3 桂林電子科技大學(xué)基于GeekOS的課程設(shè)計項目
“紙上得來終覺淺,絕知此事要躬行”,在操作系統(tǒng)課程最有效的學(xué)習(xí)方法是動手實踐。國內(nèi)外高校也在操作系統(tǒng)實踐教學(xué)上進(jìn)行了堅持不懈的改革,逐步開發(fā)設(shè)計出以教學(xué)為目的教學(xué)操作系統(tǒng)。本文介紹了幾種類型的教學(xué)操作系統(tǒng),如何選擇一種合適的教學(xué)操作系統(tǒng)作為操作系統(tǒng)課程設(shè)計的平臺,是要解決的首要問題。良好的課程設(shè)計平臺不需要規(guī)模龐大、功能非常完善的大型操作系統(tǒng),而應(yīng)該為開源與實際操作系統(tǒng)運行工作機(jī)制接近的微型操作系統(tǒng)。作為開源的教學(xué)操作系統(tǒng)其功能相對完善、代碼應(yīng)該短小精簡、便于學(xué)習(xí)擴(kuò)展。各學(xué)??山Y(jié)合學(xué)生的專業(yè)基礎(chǔ)和學(xué)習(xí)能力,設(shè)計不同層次的課程設(shè)計內(nèi)容,以不斷擴(kuò)充學(xué)生知識面、提升動手實踐能力。