葉保留 費翔林 葛季棟 駱 斌
摘要:本文以實用操作系統的開源化契機,結合“操作系統”教學要求和目標,提出以“一套源碼、兩個角度、三個層次”為切入點的實驗課程建設思路,并從教材建設、課程規劃、教學實施等角度介紹了實驗課程建設的關鍵環節。論文還以實驗課程教學實施情況為案例,對實驗課程教學實踐成效進行了分析。
關鍵詞:實驗課程建設;教材建設;課程規劃;教學實施
中圖分類號:G642 文獻標識碼:B
1引言
1.1實驗課程教學的難點分析
操作系統在計算機領域有著舉足輕重的作用,它是最基礎的系統軟件,也是計算機系統的核心與靈魂。作為計算機學科中一門承前啟后的專業基礎課程,“操作系統”在計算機專業課程體系中扮演著重要角色。多年來,國內外高校均將“操作系統”列為計算機專業的核心課程之一,并不斷從教學方式、課堂內容、實驗環節等方面對“操作系統”教學進行探索和創新,通過多種途徑提高“操作系統”課程教學質量,力求使學生真正掌握操作系統設計原理與實現技術的精髓。
作為一門理論與實踐并重的專業核心課程,操作系統具有以下特點:一方面理論性強、概念抽象,難以理解;另一方面設計技巧高超、實現機制精妙、系統代碼量大,難以掌握。此外,隨著計算機網絡及分布并行等技術的不斷發展,操作系統設計與實現技術不斷更新,并與多個方向交叉。因此,“操作系統”教學一方面必須不斷充實內容、涵蓋最新技術發展、反映技術演變趨勢;另一方面還應突出內涵、深入剖析基本理論與核心技術。從而使學生真正做到融會貫通,消化吸收操作系統設計與實現精髓。
早期,因受限于計算機教學資源(如實驗設備缺乏、系統代碼封閉等),“操作系統”課程教學主要以課堂講授為主,教學內容理論性過強,實驗環節薄弱。實驗教學的欠缺容易造成學生停留在對概念與設計原理的抽象理解,只能“知其然,而不知其所以然”,無法真正認識問題本質、掌握原理及設計內涵,不利于對學生創新能力的培養。多年來,學生也普遍認為“操作系統”課程概念晦澀、原理復雜、內容枯燥、無法激發學習興趣。為彌補實驗教學缺失,國內一些院校開始在教學中引入操作系統原型設計,試圖以特定微型操作系統(如Minix)原型為基礎,要求學生設計并改進該原型系統,以期強化對操作系統基本原理的理解,并培養實際應用能力。然而,這類原型系統通常功能單一、結構簡單,雖有助于理解和掌握操作系統基本原理,但因設計簡化且缺乏必要的應用背景,無法反映操作系統技術內涵及演變趨勢,不利于培養學生的應用實踐能力。
1.2實驗課程建設的機遇
近年來,以Linux為代表的開源操作系統的飛速發展及其在各領域的廣泛運用,在產業界產生巨大影響。一些知名IT廠商均將公布其操作系統源碼作為提高軟件產品核心競爭力的重要舉措,并紛紛組織資深工程師撰寫內核設計技術資料。如SUN公司開放OpenSolaris源代碼,微軟亞洲研究院也對亞太地區高校開放了部分用于教學的Windows內核源碼。開源系統的發展及產業界的積極響應有效改變了操作系統教學資源缺乏的困境,為“操作系統”課程教學改革帶來新契機,并引起教育界高度重視。2008年教育部啟動“高等學校計算機科學與技術專業核心課程(操作系統)教學實施方案研究”項目,并交由教育部高等學校計算機科學與技術教學指導委員會和高等教育出版社組織國內知名專家,成立“操作系統”課程教學實施方案研究組,集思廣益,對“操作系統”課程教學實施方案開展研究。圖1給出了實施方案中關于“操作系統”實驗和實驗體系結構的框架,該結構以Linux、Windows等主流操作系統為實例,從實驗難度上將實驗課程教學分成用戶層、內核初級及內核高級等三個層次;從實驗類型上將實驗課程教學分成使用與管理級、觀察與體驗級、編程與修改級、設計與實現級等四個等級,為“操作系統”實驗課程設計提供參考。

我們認為,個人計算機的不斷普及開源代碼的快速發展極大改善了“操作系統”課程教學的資源環境,為實驗課程改革提供了機遇?!安僮飨到y”實驗課程建設必須審時度勢,充分利用現有平臺環境和資源條件,及時調整課程體系、優化教學大綱、改變教學模式、充實教學內容,適應信息技術快速發展之需要。
2 “操作系統”實驗課程建設概況
2.1實驗課程建設基本思路
“操作系統”課程教學目標主要集中在“原理、技術、應用”三個層面,其中原理是了解操作系統設計內涵的基礎,技術是理解操作系統實現的核心,應用是掌握操作系統技能的途徑。三者相互關聯、相輔相成。實驗教學環節是促成三者系統融合、驗證和鞏固所學知識,綜合運用知識的重要教學手段,也是技能訓練和能力培養,包括動手能力、協作能力、分析問題解決問題能力和探索精神、創新意識的必要途徑。多年來,南京大學“操作系統”課程教學小組一直將改善和提高“操作系統”實驗環節的可操作性作為“操作系統”教學改革的重點,并以使學生“理性理解原理設計思想、牢固掌握技術實現機理、切實提高應用實驗技能”為課程實驗教學的要求和目標加以研究。
“操作系統”實驗課程建設的一個基本問題是,如何引入合適的操作系統和選擇恰當的實驗平臺。簡化的原型操作系統雖“五臟俱全”,可為實驗教學提供支撐,但由于缺乏實用性,不利于培養學生的探索能力及應用技能;實用操作系統雖功能強大,但模塊眾多、盤根錯節,技術細節瑣碎,直接引入將使實驗教學難度增大,缺乏可操作性。近年來,我們結合開源代碼發展趨勢及在“操作系統”課程教學方面的體會,以“科學性、系統性、先進性、實用性”為課程建設指導思想,確立了以“一套源碼、兩個角度、三個層次”為切入點的操作系統實驗課程建設思路(如圖2示)。具體而言,選擇一種典型實用操作系統(Linux)內核源碼為基礎,從用戶層及內核層兩個角度,圍繞“原理、技術、應用”三個層次剖析操作系統內在機理,從以下兩個角度解決“操作系統”課程教學中的現有問題,改善教學效果。

(1) 將抽象原理設計映射到具體系統實現,使學生走出對原理理解停留于“知其然,而不知其所以然”的困境,實現對基本原理從“抽象理解”過渡到“感性理解”,并最終走向“理性理解”。
(2) 建立基于“用戶空間——內核空間”的實用操作系統內在機理剖析機制,使學生能夠以抽象原理為指導,透過現象看本質,了解內核實現機理,真正理解和掌握實現技術,培養應用實驗技能,強化實驗編程能力。
基于上述設想,建立了以“原理設計思想—系統實現問題—技術實現機理—用戶應用需求—應用實驗技能”為主線,基于實用操作系統內核源碼的實驗課程教學體系,并從教材建設、課程規劃、教學模式等角度對“操作系統”實驗課程建設進行探索與實踐。
2.2實驗教材建設
作為國內最先開展操作系統研究與教學的單位之一,南京大學操作系統教材建設最早可追溯到上世紀80年代初由人民郵電出版社出版的《操作系統原理》。近30年來,不斷跟蹤操作系統技術發展進展,及時修訂、更新教材內容,幾易其版,共出版操作系統教材6本。為推動“操作系統”實驗課程建設,基于上述實驗課程建設思路,結合《操作系統教程》(第4版)的修訂,于2009年5月出版了《Linux操作系統實驗教程》。該實驗教材以操作系統基本原理為基礎,結合Linux 2.6內核源碼,系統介紹Linux操作系統的系統結構、設計和實現的基本思路和技術,深入剖析基本原理在Linux操作系統中的實現機制。在此基礎上,通過實驗把操作系統基本原理與Linux實現機制聯系起來,以此激發實驗興趣,培養將所學知識融會貫通和綜合運用的能力,提高學生分析問題和解決問題的能力。
在實驗教材建設過程中,基于以下原則精心設計教材內容。
(1) 注重總體規劃的科學性與合理性、實驗環節的實用性與可操作性。
(2) 實驗設計緊扣基本原理與核心技術,實驗內容涵蓋用戶空間編程與內核代碼分析。
(3) 實驗安排循序漸進、層層滲透,實驗形式豐富多樣、富有啟發性。
在實驗教材建設過程中,還基于以下思路定位教材角色和規劃教材結構。
(1) 實驗教材與原理教程的定位與銜接。兩教材在角色上相輔相成,彼此呼應。實驗教材涵蓋了操作系統基本原理與理論,但強調從實現技術入手,注重基本原理在特定系統實現中的滲透性,試圖做到原理講授與實驗環節緊密結合,使學生真正掌握操作系統原理設計與實現技術的精髓。
(2) 實驗教材內部知識體系之間的銜接。實驗教材內容組織基于“由外及內、層層梯進”思想,分為用戶空間及內核空間兩大部分。用戶空間部分從對Linux API的使用入手,旨在掌握系統的組成模塊和接口的使用方法,并從系統外部洞察操作系統的數據結構、內部狀態和工作過程。內核部分從修改Linux內核入手,試圖通過改變系統數據結構、替換原有算法、添加內核模塊等,從系統內部探索其內核結構、實現機制和典型算法,達到初步具有分析、修改、設計和開發操作系統的能力。兩部分內容遙相呼應,可滿足不同院校在不同級別上觀測、分析系統原理之需求。
2.3實驗課程規劃
我們雖強調理論性與實驗性并重,但理論是實驗的基礎。因此,在具體操作過程中,將理論課程教學與實驗課程教學分段實施,分設獨立課程,使兩者各有所重。在“操作系統”課程教學規劃中,我們將兩門課程分別安排在大二下學期及大三上學期開設。其中理論課程選用《操作系統教程》(第4版),以課堂教學為主,主要側重對基本概念的講解及原理設計基本思想及特點的分析;實驗設計以觀察與體驗級別為主,使學生對基本概念與原理有較強的感性認識。實驗課程的課堂教學以引導問題為主,側重分析基本原理在系統實現及實際應用中的難點,激發學生對實現及應用問題的思考與關注。實驗課程以《Linux操作系統實驗教程》為藍本,實驗設計以對抽象原理的感性認識為基礎,從對操作系統的用戶空間編程入手,層層深入,逐步探索,剖析從基本原理到內核實現映射機理,從而使學生能理性理解設計原理,掌握實現技術,提高實驗能力。
3 “操作系統”實驗課程教學實施
3.1確定不同目標,實施分層教學
2008年下半年,我們以南京大學計算機科學與技術系及南京大學金陵學院計算機科學與技術系大三學生為授課對象,對基于Linux的“操作系統”實驗課程教學進行了實踐探索。針對兩院系學生的生源特點及人才培養目標總體定位的不同,分別設計了相應的實驗教學目標(見表1)。

3.2基于“專題聚合”的實驗教學內容組織
《Linux操作系統實驗教程》從用戶空間及內核空間角度將教材內容分成兩大部分。其中第一部分(共11章)結合操作系統基本原理,從應用角度系統介紹 Linux 操作系統核心功能設計及其應用編程接口API,具體內容包括Linux安裝和編譯、進程與線程、傳統進程通信、System V IPC進程通信、Shell程序設計、頁面替換算法、文件系統設計和實現、時鐘與定時器、網絡通信編程、事件驅動編程等;第二部分(共8章)從內核實現角度系統介紹Linux操作系統的實現技術,具體內容包括內核模塊、中斷與系統調用、同步機制、進程調度、存儲管理、虛擬文件系統、proc文件系統、設備驅動程序等。
在實驗教學內容組織過程中,考慮到知識體系的關聯性與完整性,采用縱向整合,基于專題組織教材內容。整個教材內容共分為Linux操作系統概述、進程與線程、進程通信、時鐘與定時器、Shell、存儲管理、文件系統、內核模塊等8個專題(如圖3),專題覆蓋了實驗教材各章節內容。對于每個專題,均以“原理設計思想—系統實現問題—技術實現機理—用戶應用需求—應用實驗技能”為主線,以“抽象理解—感性認識—理性理解”為進階途徑,設計專題內容。首先簡要介紹基本原理背景,并引出其在特定系統實現中的技術問題,實現從抽象原理到物理問題的映射;然后通過相應應用編程接口及系統調用從用戶和內核角度觀測和理解系統實現特點,加深對相關技術的感性認識;隨后,結合性能觀測結果、深入分析相關內核代碼設計與實現機制,從而實現對原理設計的理性理解。例如,在“進程與線程”專題中,首先從進程與線程的一般概念入手,給出Linux進程與線程設計的特點;隨后詳細介紹創建Linux進程/線程的系統調用,并通過實例展示使用不同參數調用時的性能差異;最后根據觀測結果從進程結構描述、內核管理機制等角度介紹Linux線程/進程的實現技術。
3.3 “縱觀本質,橫看演變”的實驗課程教學思路
實驗課程教學以專題為基礎,并結合生源特點及人才培養目標定位的不同,因材施教,分別建立實驗課程教學實施策略。在學時安排上,南京大學計算機科學與技術系采用3學時/周,其中每個單周講授一個專題,雙周安排實

金陵學院采用(3+3)學時/周,即每周安排3學時專題講座及3小時專題實驗。雖然對不同培養目標學生的實驗類型定位不同,但我們兼顧學生自身發展的個性化需求,做好不同層次內容之間的銜接問題,激發感興趣同學將實驗難度及質量向深度推進。
在教學過程中,采用“縱觀本質,橫看演變”策略。在縱觀本質上,采由表及里,逐步向縱向推進,向深度擴展。具體而言,以抽象原理為指導,分析系統實現問題,通過應用編程接口及系統調用觀測系統性能效果、進而剖析實現機制,理解原理設計精髓。在橫看演變方面,還對不同版本Linux內核的實現機制進行橫向對比,捕獲技術演變過程,加深學生對技術機理的理解,保證知識結構的先進性。如在“進程調度”專題中,將結合Linux 2.4與Linux 2.6調度策略的不同介紹內核結構的設計的差異與要點。
3.4實驗課程教學成效分析
通過選取兩院系學生部分作業及期末試卷題目作為考察項,對基于Linux的操作系統實驗課程教學成效進行分析,表2給出了作業完成/答題情況分析結果。對考察項說明如下:在“進程與線程”專題中,實驗題目是“打印Linux系統中的進程樹結構”。該實驗可通過使用系統調用訪問進程task_struct結構或直接訪問內核鏈表來實現,其中前者實驗難度屬于內核初級,后者屬于內核高級;在期末考試中,程序分析題(屬于內核高級)要求學生結合 Linux軟中斷內核代碼分析其軟中斷處理機制,程序設計題(屬于內核初級)要求學生基于TCP/IP socket網絡編程技術,實現一個支持多用戶并發執行的客戶/服務器程序。
從分析結果來看,南京大學計算機科學與技術系學生在“內核高級”難度的觀察項上的結果明顯高于金陵學院學生,在“內核初級”難度的觀察項上的結果差異相對較小。觀察結果表明,基于Linux的“操作系統”實驗課程建設已初顯成效,并達到了對不同層次人才培養的實踐能力要求。
4結束語
以Linux為代表的實用操作系統的開源化為操作系統實驗課程建設提供了新的機遇。本文結合操作系統教學要求和目標,提出了以“一套源碼、兩個角度、三個層次”為切入點的實驗課程建設思路,并從教材建設、課程規劃、教學實施等角度具體介紹了實驗課程建設的關鍵環節。論文還結合南京大學計算機系及金陵學院計算機系實驗課程的教學情況,對基于Linux的實驗課程教學實踐成效進行了觀察、分析。結果表明,實驗課程建設已初顯成效,滿足了對不同層次人才操作系統實踐能力培養的要求。在后續工作中,我們將結合專題內容,進一步優化實驗習題的設計、完善基于Linux的操作系統實驗課程教學體系。
參考文獻:
[1] 操作系統課程教學實施方案研制組.高等學校計算機科學與技術專業核心課程教學實施方案(草案)[Z].2009.
[2] 史廣順,韓維桓, 袁曉潔. 南開大學“操作系統”課程建設的思考[J]. 計算機教育,2009(4):21-24.
[3] 羅宇, 張穎蓓, 葉常春. 本科操作系統課程設置及教學體會[J]. 計算機教育,2006(1):39-40.
[4] 孫鐘秀,費翔林,駱斌. 操作系統教程[M]. 4版. 北京:高等教育出版社,2008.
[5] 費翔林,李敏,葉保留. Linux操作系統實驗教程[M]. 北京:高等教育出版社,2009.