王春爽,王德廣,張雪,賈慧敏
摘要:操作系統是計算機最基本的系統軟件,是所有應用程序開發的基礎,操作系統課程在計算機相關專業的本科教學中,具有非常重要的地位。在該門課程中,既要講授操作系統的基本概念和典型的實現技術,又必須通過具體的例子說明它們的原理,并充分利用實踐教學加深學生的理解。本文將對操作系統課程中的實驗教學方面進行研究,提出改革方法,以全面提高學生的實踐能力。
關鍵詞:操作系統;實驗教學;實踐能力
中圖分類號:G642.0 文獻標志碼:A文章編號:1674-9324(2012)12-0280-02
一、操作系統教學的內容和現狀
操作系統是計算機最基本的系統軟件,它控制系統的所有資源,是所有應用程序開發的基礎。其學科的特點,決定了在教學中不僅要強調基本概念和基本原理,更要強調它的設計與實現技術。在一般本科院校針對計算機及軟件工程專業制定的培養目標中,都會要求學生具有在相關領域繼續學習的能力,同時會將加強學生設計和實現操作系統的能力列入其中。由此可見,實踐能力被作為非常重要的指標,可目前的實際情況則遠非如此。
操作系統是全國計算機科學與技術專業碩士研究生入學考試課程,由于考試大綱的涵蓋范圍比較集中于理論方面,于是日常教學往往將進程管理、內存管理、文件系統管理和設備管理的設計原理和實現技術作為構成操作系統課程的主要知識體系,實例研究也主要以Linux系統為主,與實際的操作系統實踐相差較遠。Andrew S.Tanenbaum曾指出,對于操作系統這門課程,學生應該學習那些在實踐中真正有用的概念,而不僅僅是尋求理論上的完善,許多內容已經被證明在操作系統的設計和軟件開發實現中并不實用,如解決死鎖的銀行家算法等,理應壓縮相關教學內容的課時,分布給實用性更強的領域。
二、操作系統實驗教學的內容組織
操作系統課程具有原理多、概念抽象、內容設計范圍廣等特點,教學內容中包括操作系統內部工作原理、相關概念、實現技術與算法等,在有限的學時中覆蓋所有內容是不可能的,而其中用于實踐教學的學時將更加有限,有必要進行合理的設計,以達到充分提高學生動手實踐能力的目的。因此,在內容選擇上,應該堅持以下原則:
1.明確教學目標,突出學科重點,不求面面俱到。
2.強調實用的算法和具體的實現技術,盡可能做到理論聯系實際,原理和實現技術相呼應。
3.實例研究以Linux系統為主,都是要輔以Windows系統的實現方法。
同時,學生的興趣和能力也有很大的差異,針對不同的學生,應該制定不同層次的教學目標。經過教學實踐,本文認為可以分成基本目標和高級目標兩個層次:
1.基本目標:要求學生掌握操作系統的基本概念和典型的實現技術,在應用軟件設計中能夠借鑒操作系統設計中的思想和方法,比如在并發程序設計中能夠熟練運用信號量(Semaphore)等方法解決進程間通信(InterProcess Communication)問題,設計進程同步的算法。這個目標是作為計算機及軟件工程專業本科生必須達到的目標,是操作系統這門課程教學的基本要求。
2.高級目標:要求學生能夠綜合運用所學知識對具體的操作系統進行分析,并且有能力設計和實現一個小型的操作系統,比如嵌入式操作系統。想要達到這個目標,學生需要繼續深入學習,并且進行大量的實踐,在日常教學有限的實驗課時中很難實現。因此,應適當增加課外實踐,對于部分動手能力比較強的學生,通過相關的課程設計,可以自己動手實現一個小型的操作系統。
基于上述原則和不同的培養目標,對于實驗教學內容的安排可以包括如下三個方面:
1.進程同步算法:進程管理是操作系統課程的重點也是難點,現代計算機系統廣泛采用多任務環境,應用軟件也日趨復雜,其中涉及大量資源的共享與競爭、多個任務之間的通信與同步等問題,這些問題的基礎就是操作系統的并發問題。因此,應該圍繞互斥與信號量的實現技術設計實驗,要求學生能夠設計進程同步算法,并進行實例分析。
2.頁面置換算法:內存管理是操作系統課程的另一個重點,存儲空間的分配和管理尤其為軟件開發人員重視?,F代操作系統普遍采用分頁式(Paging)結合虛擬存儲(Virtual Memory)的方法解決內存分配的問題,學習和研究頁面置換算法、圍繞其設計實驗非常必要。要求學生能夠實現基本的頁面置換算法,能夠進行橫向的比較,并且自行設計置換方法。
3.設計并實現一個小型操作系統:要求學生對操作系統相關基礎原理進行深入研究,對目前應用的具體操作系統進行分析和剪裁,設計并實現一個至少包含進程管理、內存管理、文件系統管理和設備管理等主要內容的小型操作系統,此部分實驗應作為課外選做內容。
三、操作系統實驗教學的方法
不同的算法,在實驗教學中的方法是不盡相同的,應根據實際情況具體實施;學生層次不同,對于編程工具的掌握和編程能力差異很大,指導方法也應有所區別。以進程同步算法為例,應首先讓學生明確信號量的物理意義,了解引入信號量是為了操作系統的層面上解決進程并發帶來的結果的不確定問題,從而引導學生用忙等待(busy waiting)或阻塞(blocking)的方法實現信號量的程序代碼,從資源等待的角度出發分析設計進程同步算法。這樣的實驗教學,有助于加深學生對進程管理的了解,對于操作系統內資源分配的問題,也會有初步的認識。
操作系統是人設計的,盡善盡美的系統是不存在的,因此在指導學生自己開發小型操作系統時,要明確是在一種特定的環境和目標之下,設計和實現一個符合實際需要的系統。這樣,在實踐總結時,學生會從設計者的角度出發,總結出自己在設計該系統時主要著重解決的是哪一方面的問題、如何解決的問題以及為何采用此種方法來解決問題。通過這樣的實踐,會讓學生對操作系統的原理深入了解,同時增加了自己的分析內容。
四、結語
操作系統在計算機系統中占有重要地位,操作系統課程是相關專業的核心課程,合理的定位教學目標、適當增加實驗教學的比例和難度是非常必要的。本文從操作系統實驗教學的現狀入手,提出了在日常教學中對實踐環節進行改革的一些探索和方法,可以有效地提升學生對本門課程的認識和興趣,同時增強動手能力。
參考文獻:
[1]Andrew s.Tanenbaum.現代操作系統[M].第3版.陳向群,馬洪兵,等,譯.北京:機械工業出版社,2009.
[2]William Stallings.操作系統精髓與設計原理[M].第5版.陳渝,譯.北京:電子工業出版社,2006.