摘要:本文對目前操作系統實踐教學情況進行概述,提出了實踐課程內容設置并探討了談課程的教學方法。
關鍵詞:操作系統 實踐教學 課程實驗
中圖分類號:G434 文獻標識碼:A 文章編號:1002-2422(2010)02-0040-02
1 國內外操作系統及實踐教學現狀
國內多數高校將操作系統的實驗部分作為操作系統實踐教學環節,根據學校的層次不同偏重方向也不一樣。雖然很多人提出設計一個小的操作系統是理想的目標,但是現在操作系統的復雜性使這一目標幾乎不可能完成。目前實踐環節的實驗類型可分為模擬驗證型、實際驗證型、剖析驗證型、替換設計型、擴展設計型實驗Ⅲ。如何設計適合教學和有效提高學生綜合能力的實驗是目前的操作系統教學中的難題。
國外操作系統教學非常重視實踐環節,許多高校對實驗要求非常嚴格并且要求都很高,如Princeton University要求學生必須實現一個完整的微型操作系統。實驗涉及面也很廣,如Comell University實驗中就包括擴展網絡包為可靠傳送,在線程包上實現虛擬文件系統等實驗。課程分化更為詳細,CC2005將操作系統課程分為操作系統原理與設計,操作系統使用和配置。實驗評分標準也很嚴格,對實驗成績很重視有的學校甚至只有實驗成績。實驗教材多采用公認的教材,其中多數已經被翻譯成中文。目前國內操作系統教學也在逐漸向國外學習,逐步加大實踐教學環節。
2 操作系統實踐教學內容安排和組織
操作系統實踐是培養學生動手能力,深入理解操作系統運行機制和原理的重要環節。如上所述目前國內某些一流大學教學采用一些實際簡單操作系統進行修改,這對學生要求比較高,實現難度較大。普通高等院校計算機專業計算機課程設計對操作系統內核的算法進行模擬,如我校操作系統課程設計包括進程調度模擬,內存管理分配等,和具體操作系統無關。學生經過實驗后并不能對操作系統建立深入的認識,不少學生在實驗后甚至不能建立線程的概念。為了更好地將操作系統應用于實際程序設計中,提高學生實際動手設計開發能力。在軟件開發專業的操作系統理論課程結束的下一學期開設了操作系統實踐,作為操作系統的后繼課程。
如何設計操作系統實踐類實驗是當前討論比較多的問題。目前依然沒有比較理想的方案。學生在該課程學習之前對操作系統理論已經有了一定的認識和掌握,并且做過一些簡單的課程設計,能夠對操作系統有整體性的了解。結合實際情況和其他院校課程實驗設置安排,依據操作系統的五大功能和實驗平臺,操作系統實踐課程內容安排了進程同步、虛擬存儲器管理、設備驅動程序和文件管理系統四個基本實驗。實驗環境依照當前操作系統的發展趨勢和實際應用范圍,采用了Windows+Linux雙實驗平臺同步進行。實踐課程教學包括課堂教學和上機實踐。在對具體操作系統涉及的相關技術理論教學后進行實踐課程設計。具體實驗內容安排如表1。
不同于普通的操作系統課程上機實驗,實踐課程教學對學生的動手能力要求較高。由于學生的學習能力和前驅課程知識掌握程度存在很大的差異。選擇不同難度的實驗內容是首要面對的問題,根據先易后難的指導思想分別細化為多線程設計,同步實驗,虛擬內存訪問,無路由網絡協議驅動程序packet的分析與改進,以及文件管理。在進行實驗前教師對部分內容進行講解并給出實驗中需要API和系統調用,實驗要求分基本要求和高級要求,基本要求每個學生都要求達到,較高要求由學生組隊進行合作。避免少學同學在實驗中依靠其他同學不動手的情況。
在具體實驗中,如實驗一,首先在課堂復習操作系統線程和同步的概念給出幾種同步的例子,包括生產者消費者問題,哲學家進餐問題。然后給出具體操作系統對應API或系統調用,如Windows下線程創建函數CreateThread(),創建信號量CreateSemaphore(),以及實現PV操作的Wait-ForSingleObject()和ReleaseSemaphore()等函數進行說明和簡單例子的演示。由學生在此基礎上實現生產者消費者問題,讀者寫者問題。通過該實驗不僅能理解實際多線程的執行情況,也可以將原本抽象的同步直觀的顯示出來。在Windows驅動程序實驗部分由于實驗涉及Windows系統結構,NDIS網絡驅動接口規范以及DDK驅動程序開發工具包等,實驗難度大,很多學生都是首次接觸到這些知識。所以在課程安排中首先對這該部分進行理論教學,在教學中重點對NDIS協議驅動程序的結構和主要數據結構進行分析,讓學生能夠理解Winodws下驅動程序的組成部分和工作流程。然后指導學生使用DDK和幫助,要求學生閱讀理解windows DDK2000的一個具體協議驅動packet給出該驅動程序的流程分析圖,在此基礎上進一步改進該驅動程序無緩沖能力的不足。通過該實驗學生不僅可以學習到具體驅動的結構,加深對Windows系統的理解,也認識到實際工程設計的嚴謹性。同樣在Linux環境下的實驗也進行類似的安排和指導,如在小型文件系統實驗前由教師分析Linux的VFS機制,Linux文件系統的數據結構和接口,讓學生能在具體操作系統上深入認識,加快實驗步伐。
最后,由于目前流行通用操作系統主要為Windows和Linux操作系統,課程實驗采用了雙平臺,Windows環境下的實驗,基本以VC為開發工具。Linux環境學生相對生疏可以使用gce進行,學生任選實驗平臺。
3 實踐課程教學方法及效果
3,1樹立以學生為主體、教師為主導的意識,建立現代課堂教學模式
現代教育觀點認為,學生是學校的主體,學校的一切教育教學工作都要圍繞學生來開展,建立以學生為主的“構建主義”教學模式。在實踐教學上,積極創造實踐條件,引導學生學習興趣,同時重視學生在教學活動中的主體地位,調動學生學習的積極性、主動性和創造性,加強對學生自學能力、分析問題和解決問題能力的培養。在教學方法和教學手段上,積極推廣現代化教學方法,改變傳統教學模式,重視現代教育技術在教學中的應用。
在上機實踐環節中,要求所有同學都動手進行實驗,防止在實驗中存在的部分同學掛名不做的情況。所以實驗源自當前新技術使學生能體會到前沿和工程應用價值。調動學生的積極性。除了對部分難度較大的理論進行教學之外,大部分資料要求學生利用網絡,數據庫。期刊等自己搜索。培養學生自己動手解決問題的能力。
3,2改善教學方法,優化教學內容
激發學生學習的興趣,不僅要加強實踐性環節,還要選擇合適的教學內容。在前文中闡述了內容設置安排。在教學過程中發現,雖然學生學習過一個學期的操作系統,但是對其中的許多基本概念,如進程并發、同步等不能準確理解,甚至有些學生概念很模糊。而這是目前程序開發常用的技術之一。因此對這些薄弱的環節進行強調顯得非常重要。對關鍵技術理論利用多媒體演示教學。在課堂教學或實驗時,對某些的技術問題,讓部分學生演示并向其他學生解說,使學生產生解決技術問題的興趣,提高自信心。對設計性實驗采用任務驅動法,對難度大的實驗給出不同層次的要求,要求學生在指定時間內完成規定進度。在實踐過程中根據學生進度修正或提高要求,培養學生的動手能力和創新能力。在實驗結束后選取部分實驗優秀的學生實驗報告,增加學生之間的交流和探討,許多同學反映通過實驗真正理解了操作系統許多概念。
3,3加強團隊合作,培養協作精神
目前國內操作系統實踐教學也開始向國外先進模式發展,協作開發成為學生必修內容。在復雜實驗中,對學生進行分組,組隊進行實踐。由學生自我組合,每組總數不超過4人,每次課都通報實驗進度。部分同學動手能力較強,這樣的隊伍能夠很快完成。由于實踐課中實驗占有很重要的部分,可以說實驗的完成進度很大程度上影響了課程的進皮。對少數水平高的組合給擴展的實驗或者自選要求較高的實驗,如2003級同學就在虛擬機上實現了保護模式下的微型操作系統,激發了其他同學學習熱情。
4 結束語
隨著國內計算機教學向國外先進模式學習,進一步加大實踐教學力度已經成為計算機教育必然趨勢。在實踐課程教學效果,對學生實際能力的準確評價,采取適合學生的難度的實踐內容值得探討。在實踐環節中對學生的準確引導是培養學生創新能力的關鍵。