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