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