王 雷
摘 要:“操作系統(tǒng)”課程的理論性和實(shí)踐性都很強(qiáng),本文從北京航空航天大學(xué)操作系統(tǒng)課程設(shè)計(jì)出發(fā),針對操作系統(tǒng)實(shí)驗(yàn)中存在的問題,通過分析、借鑒國內(nèi)外著名大學(xué)的經(jīng)驗(yàn),以MIT操作系統(tǒng)實(shí)驗(yàn)為基礎(chǔ)設(shè)計(jì)了一套以MIPS為硬件平臺的操作系統(tǒng)實(shí)驗(yàn),并在北航選取了一些學(xué)生進(jìn)行應(yīng)用。
關(guān)鍵詞:操作系統(tǒng);實(shí)驗(yàn)設(shè)計(jì);教學(xué)實(shí)踐
中圖分類號:G642 文獻(xiàn)標(biāo)識碼:B
“操作系統(tǒng)”課程內(nèi)容豐富,既要講授關(guān)于操作系統(tǒng)的基礎(chǔ)理論,又要讓學(xué)生了解實(shí)際操作系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。操作系統(tǒng)實(shí)驗(yàn)設(shè)計(jì)正是該課程實(shí)踐環(huán)節(jié)的集中表現(xiàn),不僅使學(xué)生鞏固理論學(xué)習(xí)的概念和原理,同時培養(yǎng)學(xué)生 的工程實(shí)踐能力。國內(nèi)很多大學(xué)都非常重視操作系統(tǒng)實(shí)驗(yàn)設(shè)計(jì),北京大學(xué)根據(jù)MIT課程,建立了自己的操作系統(tǒng)實(shí)驗(yàn)體系;清華大學(xué)專門設(shè)置了操作系統(tǒng)專題訓(xùn)練課程,以提高學(xué)生的工程實(shí)踐能力;南開大學(xué)提倡使用系統(tǒng)仿真的實(shí)驗(yàn)環(huán)境加強(qiáng)學(xué)生理論聯(lián)系實(shí)際的能力;浙江大學(xué)提出了“邊學(xué)邊干”的操作系統(tǒng)教學(xué)理念。
北京航空航天大學(xué)計(jì)算機(jī)學(xué)院在2006年將“操作系統(tǒng)”課程分成了兩門課程:一門講授“操作系統(tǒng)”原理,一門“操作系統(tǒng)課程設(shè)計(jì)”專門進(jìn)行操作系統(tǒng)實(shí)驗(yàn)。本文將以MIT的操作系統(tǒng)課程設(shè)計(jì)為基礎(chǔ),介紹在操作系統(tǒng)課程設(shè)計(jì)中,讓學(xué)生自主開發(fā)一個小型教學(xué)操作系統(tǒng)。由于開發(fā)一個實(shí)際的操作系統(tǒng)難度和工作量很多,為了保證教學(xué)效果,我們首先為學(xué)生提供一個基礎(chǔ)系統(tǒng),該系統(tǒng)實(shí)現(xiàn)操作系統(tǒng)中最基本的部分。在此基礎(chǔ)上,學(xué)生可以再進(jìn)一步擴(kuò)充,實(shí)現(xiàn)一個完整的操作系統(tǒng)。將來可以與硬件課程進(jìn)一步集成,將教學(xué)操作系統(tǒng)移植到學(xué)生自己開發(fā)的硬件平臺中。我們試圖通過操作系統(tǒng)作為紐帶,將計(jì)算機(jī)硬件與軟件結(jié)合起來,培養(yǎng)學(xué)生對計(jì)算機(jī)系統(tǒng)的整體認(rèn)識。
1 目前存在的問題
在前幾年的教學(xué)實(shí)踐中,我們嘗試過Nachos、Minix、Linux和Windows四種不同類型的實(shí)驗(yàn),目前保留了Linux和Windows兩組實(shí)驗(yàn)。每類實(shí)驗(yàn)包含4組實(shí)驗(yàn),每個(組)同學(xué)選做一類實(shí)驗(yàn),并完成該類中全部4組實(shí)驗(yàn)。Linux實(shí)驗(yàn)包括“Yalnix Shell”、“虛擬存儲”、“作業(yè)控制系統(tǒng)”、“文件系統(tǒng)操作”或“模擬文件系統(tǒng)”(后面兩個實(shí)驗(yàn)選做一個)。Windows2000/XP實(shí)驗(yàn)包括“生產(chǎn)者消費(fèi)者問題”、“Windows虛擬存儲器管理”、“NDIS協(xié)議驅(qū)動程序的分析與改進(jìn)”、“虛擬磁盤的文件系統(tǒng)驅(qū)動程序設(shè)計(jì)”。
這兩組實(shí)驗(yàn)與主流操作系統(tǒng)結(jié)合緊密,極大地提高了學(xué)生的專業(yè)技能。雖然這些實(shí)驗(yàn)已經(jīng)在國內(nèi)一流院校中廣泛使用,但是仔細(xì)分析我們可以發(fā)現(xiàn),這些實(shí)驗(yàn)大部分還是停留在系統(tǒng)編程的水平。因此為提高操作系統(tǒng)教學(xué)水平,我們必須向國外研究型大學(xué)看齊,改進(jìn)操作系統(tǒng)的課程設(shè)計(jì)。
2 國外主要研究性大學(xué)操作系統(tǒng)實(shí)驗(yàn)
我們選擇了四所大學(xué)的操作系統(tǒng)實(shí)驗(yàn)情況進(jìn)行重點(diǎn)介紹。
Brown University
? 課程名稱cs167/cs169 operating system Fall 2006
? cs167課程介紹操作系統(tǒng)的基本原理
? cs169課程:學(xué)生每人用 C編寫一個簡單的、單內(nèi)核操作系統(tǒng)。所寫的操作系統(tǒng)在技術(shù)上等價(jià)現(xiàn)代的操作系統(tǒng)
? 實(shí)習(xí)項(xiàng)目:Kernel 1,Kernel 2,虛擬文件系統(tǒng),文件系統(tǒng),虛擬存儲
? 基礎(chǔ)系統(tǒng):Weenix
Princeton University
? 課程名稱:Operating Systems Fall 2006
? 實(shí)習(xí)項(xiàng)目:項(xiàng)目1:引導(dǎo)機(jī)制;項(xiàng)目2:非搶占式調(diào)度;項(xiàng)目3:搶占式調(diào)度;項(xiàng)目4:進(jìn)程間通信與進(jìn)程調(diào)度;項(xiàng)目5:虛存;項(xiàng)目6:文件系統(tǒng)
University of California at Berkeley
? 課程名稱:Operating Systems and System Programming Spring 2006
? 實(shí)習(xí)項(xiàng)目:工程為仿真MIPS平臺構(gòu)造操作系統(tǒng)有4個工程。工程1:線程管理;工程2:多道程序設(shè)計(jì);工程3:高速緩存和虛擬存儲;工程4:網(wǎng)絡(luò)和分布式系統(tǒng)
Harvard University
? 課程名稱:CS161: Operating Systems Spring 2006
? 實(shí)習(xí)項(xiàng)目:工程0:熟悉OS/161以及其運(yùn)行環(huán)境System/161;工程1: 同步;工程2:系統(tǒng)調(diào)用和進(jìn)程;工程3:虛擬內(nèi)存;工程4:文件系統(tǒng)
MIT
? 課程名稱:6.828: Operating System Engineering - Fall 2003 (for graduate student)
? 實(shí)習(xí)項(xiàng)目:工程1:啟動裝載過程;工程2:內(nèi)存管理;工程3:進(jìn)程和上下文切換;工程4:Fork和進(jìn)程間通信;工程5:簡單的文件系統(tǒng);工程6:編寫一個Shell
從上面的分析可以看出,這幾所大學(xué)操作系統(tǒng)實(shí)驗(yàn)內(nèi)容豐富、難度大。這些大學(xué)都有同一個理念:要想學(xué)好操作系統(tǒng),最好的辦法就是自己編寫一個操作系統(tǒng)。因此,我們希望借鑒這些大學(xué)的實(shí)驗(yàn)內(nèi)容,提高北航操作系統(tǒng)實(shí)驗(yàn)難度。
3 操作系統(tǒng)實(shí)驗(yàn)改進(jìn)思路
隨著學(xué)校對課程建設(shè)的重視,很多課程,例如“程序設(shè)計(jì)”、“編譯原理”等課程的實(shí)驗(yàn)有了很大改善,學(xué)生的動手能力也得到了進(jìn)一步提高。在此基礎(chǔ)上,我們已經(jīng)具備了嘗試難度更高的操作系統(tǒng)課程設(shè)計(jì)的條件。因此,在操作系統(tǒng)課程設(shè)計(jì)上,可以讓學(xué)生自主開發(fā)一個實(shí)際的小操作系統(tǒng)。
由于開發(fā)一個實(shí)際的操作系統(tǒng)難度和工作量很多,為了保證教學(xué)效果,我們準(zhǔn)備采取循序漸進(jìn)的、分層設(shè)計(jì)的方式,首先為學(xué)生提供一個基礎(chǔ)系統(tǒng),該系統(tǒng)實(shí)現(xiàn)操作系統(tǒng)中最重要、最基本的部分。在此基礎(chǔ)上,學(xué)生可以再進(jìn)一步擴(kuò)充,實(shí)現(xiàn)一個完整的操作系統(tǒng)。這種新的實(shí)驗(yàn)?zāi)J皆诒WC教學(xué)效果的基礎(chǔ)上,有利于充分發(fā)揮學(xué)生創(chuàng)新潛能。
4 實(shí)驗(yàn)設(shè)計(jì)
4.1 實(shí)驗(yàn)內(nèi)容
我們調(diào)研了MIT、CMU等幾所著名高校的課程設(shè)計(jì),決定以MIT的課程設(shè)計(jì)為基礎(chǔ),在操作系統(tǒng)課程設(shè)計(jì)上,讓學(xué)生自主開發(fā)一個實(shí)際的小操作系統(tǒng)。實(shí)驗(yàn)包含6個部分,各個部分的相互關(guān)系如圖1所示,具體實(shí)驗(yàn)內(nèi)容如下。
(1) 啟動和系統(tǒng)初始化:通過PC啟動的實(shí)驗(yàn),掌握硬件的啟動過程,理解鏈接地址、加載地址和重定位的概念,學(xué)習(xí)如何編寫位置無關(guān)代碼;通過實(shí)現(xiàn)setjmp和longjmp兩個函數(shù),掌握GCC的調(diào)用規(guī)范和硬件堆棧結(jié)構(gòu)。
(2) 內(nèi)存管理實(shí)驗(yàn):理解虛擬內(nèi)存和物理內(nèi)存的管理,實(shí)現(xiàn)操作系統(tǒng)對虛擬內(nèi)存空間的管理。
(3) 進(jìn)程管理:通過設(shè)置進(jìn)程控制塊和編寫進(jìn)程創(chuàng)建、進(jìn)程中止和進(jìn)程調(diào)度程序,實(shí)現(xiàn)進(jìn)程管理;編寫通用中斷分派程序和時鐘中斷例程,實(shí)現(xiàn)中斷管理。
(4) 系統(tǒng)調(diào)用:掌握系統(tǒng)調(diào)用的實(shí)現(xiàn)方法,理解系統(tǒng)調(diào)用的處理流程,實(shí)現(xiàn)本實(shí)驗(yàn)所需的系統(tǒng)調(diào)用。
(5) 文件系統(tǒng):通過實(shí)現(xiàn)一個簡單的基于磁盤的微內(nèi)核方式的文件系統(tǒng),掌握文件系統(tǒng)的實(shí)現(xiàn)方法和層次結(jié)構(gòu)。
(6) 命令解釋程序:實(shí)現(xiàn)具有管道,重定向功能的shell,能夠執(zhí)行一些簡單的命令。最后通過調(diào)試將六部分鏈接起來,使之成為一個能夠運(yùn)轉(zhuǎn)的操作系統(tǒng)。
4.2 實(shí)驗(yàn)環(huán)境
選擇一個完整硬件仿真環(huán)境。我們準(zhǔn)備根據(jù)當(dāng)前流行的主流硬件,選擇開放源代碼項(xiàng)目bochs和GXemul作為仿真環(huán)境。另外建立一個完善的實(shí)驗(yàn)環(huán)境,將操作系統(tǒng)實(shí)驗(yàn)用到的各種軟件安裝在一個服務(wù)器上,為每個學(xué)生建立一個獨(dú)立的帳戶,學(xué)生可以在任意機(jī)器上遠(yuǎn)程登錄到我們的服務(wù)器,完成實(shí)驗(yàn)任務(wù)。
另外,操作系統(tǒng)的實(shí)驗(yàn)需要與硬件課程實(shí)驗(yàn)和編譯實(shí)驗(yàn)進(jìn)一步集成,學(xué)生可以將教學(xué)操作系統(tǒng)移植到學(xué)生自己開發(fā)的硬件平臺,并且運(yùn)行學(xué)生自己開發(fā)的編譯器所編譯的程序。圖2描述了操作系統(tǒng)實(shí)驗(yàn)各個部分與硬件的關(guān)系(該硬件環(huán)境詳見參考文獻(xiàn))。圖3描述了操作系統(tǒng)實(shí)驗(yàn)與編譯實(shí)驗(yàn)和硬件實(shí)驗(yàn)的關(guān)系。
4.3 目前已完成工作
目前已完成的工作:
(1) 建立了一個以GXemul為基礎(chǔ)的仿真環(huán)境,可以運(yùn)行操作系統(tǒng),并實(shí)現(xiàn)操作系統(tǒng)的調(diào)試。
(2) 建立了一個以GCC為基礎(chǔ)的MIPS交叉編譯環(huán)境,可以用于編譯操作系統(tǒng)以及其他應(yīng)用程序。
(3) 六個實(shí)驗(yàn)已經(jīng)可以在仿真器上運(yùn)行(見圖4)。
5 經(jīng)驗(yàn)總結(jié)與下一步工作
2006年,我選了一個學(xué)生以這個操作系統(tǒng)實(shí)驗(yàn)作為畢業(yè)設(shè)計(jì)題目,硬件平臺為x86,他當(dāng)時完成了4個實(shí)驗(yàn)。2007年在計(jì)算機(jī)學(xué)院組織下我們選了6名學(xué)生將該實(shí)驗(yàn)在一學(xué)期內(nèi)移植到了MIPS仿真平臺。通過這些實(shí)踐,我們發(fā)現(xiàn)對于本科生這些實(shí)驗(yàn)難度還是太大,很難完成6個實(shí)驗(yàn)。因此,我們下一步需要采取循序漸進(jìn)、分層設(shè)計(jì)的方式,進(jìn)一步簡化實(shí)驗(yàn),多給學(xué)生提供一些示例代碼,編寫詳細(xì)的實(shí)驗(yàn)文檔和實(shí)驗(yàn)指導(dǎo)手冊。
參考文獻(xiàn):
[1] 陳向群. 操作系統(tǒng)實(shí)習(xí)教學(xué)經(jīng)驗(yàn)[R]. 全國第八屆操作系統(tǒng)課程教學(xué)研討會,2005.
[2] 史廣順,韓維桓,袁曉潔. 南開大學(xué)“操作系統(tǒng)”課程建設(shè)的思考[J]. 計(jì)算機(jī)教育,2006(7).
[3] 宋廣華,李善平,鄭扣根. 邊學(xué)邊干:操作系統(tǒng)課程教學(xué)改革的探索與實(shí)踐[J]. 計(jì)算機(jī)教育,2006(7).