摘要:文章針對目前高校對Linux人才培養的某些不足,結合操作系統實驗教學中存在的問題,提出了一種整合操作系統實驗課程和Linux應用開發課程一種思路,并給出了具體的整合方案,以及課程整合后的優點與不足。
關鍵詞:Linux系統;程序開發;操作系統原理;實驗教學
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)32-1164-02
The Discussion about Unifies of Linux Program Development Practice and the Operating System Experiment
XIONG Qi
(Hunan University of Arts and Science, Changde 415000, China)
Abstract: The article in view of the deficiencies of Linux training in some University andthe problems of the operating system in teaching. It is given an idea that integrated the practice of Linux program development and the experiment of operating system. Then it gives aspecific integration plans. In the end of the paper, it point out the advantages and inadequate of the plan.
Key words: linux system; program development; principle of the operating system; experiment teaching
1 引言
Linux操作系統核心最早是由芬蘭學生Linus在1991年發布的,后來經過眾多世界頂尖的軟件工程師的不斷修改和完善,Linux得以在全球普及開來。與其他操作系統相比,Linux有如下一些優勢:①從發展背景看,Linux是從一個比較成熟的操作系統(Unix)發展而來的,它繼承了UNIX操作系統的穩定性和可靠性的優點;②從操作系統內部來看,由于其開放源碼,便于系統的升級維護與裁剪,保證了其安全性是可控的;③從價格上看,由于其是自由軟件,和Windows操作系統相比,其成本低廉的多。選擇推廣Linux系統,可以大大降低我國的信息化成本。正是有著這些優勢,使得Linux的用戶,尤其是嵌入式Linux的用戶,每年都以100%的速度遞增,顯示了其強大的發展后勁。基于此,國內很多高校都開設了Linux的課程,但大部分以講授其應用為主。很少涉及到開發,涉及嵌入式Linux開發的則更少。這對培養Linux開發人才極為不利。
計算機操作系統原理是計算機科學與技術專業的主干課程,同時也是非計算機專業軟件技術基礎課程的重要內容之一。由于Linux操作系統具有開放源碼、價格低廉等優勢,很多大學都把其做為操作系統的實驗平臺.我院也在操作系統的課程教學中明確提出了講授以原理為主,實踐以Linux為主,Windows以自學為主的的教學改革思路。
從多年的程序開發實踐中,我們發現,Linux平臺下的程序開發所涉及的理論知識很多與操作系統原理相關,比如進程通信、線程互斥、文件管理等。所以,在計算機操作系統實驗環節中,我們考慮去掉一些純理論性的實驗,比如內存調度算法的模擬等(可以把這些內容放在課程設計中完成),重點講授Linux開發的一些必備知識,把Linux程序開發實踐課程與操作系統原理實驗課程整合起來,既學習了Linux程序開發知識,又能從實踐中進一步理解操作系統原理,達到一舉兩得的目的。
2目前操作系統實驗現狀分析
分析目前高校操作系統實驗教材來看,其主要包括如下幾種類型:
2.1 模擬驗證型實驗
即選取操作系統中的一些典型技術,編程實現并上機運行進行驗證,但算法所涉及的資源和數據結構都是虛擬的,程序中并不對實際資源進行真正的訪問和控制。比如,筆者曾經講授過內存調度算法實驗,就是以2個結構體數組來分別模擬實存和虛存,用一個一維數組來存放指令序列。這種類型實驗的優點是可以擺脫真實的操作系統環境的限制獨立地驗證幾乎操作系統所涉及的全部技術,因而有利于加深對操作系統理論和技術的理解,故目前被很多高校所采用。其缺點是編程工作量大,一般一個實驗最少也要4個學時。理論性太強,學生不能獲得操作系統內部實現的具體感性認識,也不能達到培養學生設計實際操作系統能力的目的。。
2.2 實際驗證型實驗
即通過Windows或Linux兩個操作系統各自提供的系統調用,提供一些編程實例,供學生分析實踐。這種類型實驗的優點是可以加深學生對操作系統工作原理的領會和對操作系統實現方法的理解,并且使學生在程序設計方面得到基本的訓練。目前,多數操作系統實驗教材采用的是這種類型的實驗。但實驗中受系統調用的限制也只能驗證操作系統中的部分技術,因此離具備完整的操作系統設計能力距離尚遠。另外,由于進行這種類型實驗需要深入了解宿主操作系統系統調用的一些用法,這也在很大程度上增加了實驗的工作量。
2.3 剖析驗證型實驗
即結合一個具體操作系統講授原理并通過分析其源代碼對所講授的內容進行說明和驗證。這種方法的目的是將操作系統的基本原理與操作系統的具體實例結合起來,以擺脫只是闡述工作原理,使得本來具體生動的內容變得十分抽象、枯燥并難以理解的局面,被公認是一個較好的方法,當然無可厚非。但是由于要求教師對所講授的操作系統的結構和實現非常熟悉,大多數操作系統實驗的任課教師難以勝任,況且要求學生在有限的實驗學時內理解許多的源代碼肯定也是有很大難度的。
2.4 替換設計型實驗
即由任課教師選擇一個開放源碼的操作系統,要求學生用自己設計的模塊替換其中相應模塊或為其擴展功能。這種實驗方法由于學生可以進行操作系統部分代碼的具體設計因而很值得提倡,但學生需要了解原系統相關的復雜數據結構及與其他模塊的關系,工作量仍很大。為保證實驗能夠完成,一般都給出供參考的部分或全部實驗源代碼,這不但大大地降低了實驗的難度,也使實驗的獨立設計性減色,甚至演變成閱讀理解源代碼的過程。
3 具體整合方案
根據以上實驗課的類型,我們認為,實際驗證型實驗比較符合我校實際情況。但針對這種實驗的不足,我們采用以下方法進行改進。
3.1 獨立設課
獨立設課,就是操作系統實驗教學不再依附于理論教學,它獨立開課,單獨考核。實驗教學是理論教學的深化和補充,獨立設課,不僅促使學生認識實驗課程的重要性,改變過去重理論、輕實驗的思想;而且對于加強學生理論與實踐相結合,起著不可低估的作用。理論知識可以指導實踐,實驗中遇到的問題可以反過來促進學生在理論上尋求解決,更能體現實驗課與理論課相輔相成的作用。獨立設課,能充分調動了學生學習理論知識和參與實驗的主動性與積極性,使理論教學與實驗教學相得益彰,有利于促進實驗教學的改革。
3.2 形成完整的操作系統實驗教學體系
獨立設課,有利于形成完整、科學的實驗教學課程體系。操作系統實驗作為單列實驗課, 就必須有一套完整的實驗教學計劃、實驗教學大綱、實驗教材,單獨設定學分,規定計劃實驗學時。按照大綱, 根據現有的實驗條件,制定出切實可行的實驗教學內容。
我們深入研究操作系統實驗的內容和應用范圍,分析了我國目前對Linux使用人才需求的方向,制訂了新的實驗教學大綱,編寫了適合我院學生使用的實驗教材。所有的實驗在Red Hat 9.0 下進行,具體教學內容設置如下:
1)Linux編程基礎:主要講授Linux編程環境,編輯工具,編譯命令gcc的用法;
2)Linux進程管理:主要講授Linux進程的創建,進程間信號通信和管道通信;
3)Linux進程間通信:主要講授Linux消息隊列通信和共享內存通信;
4)Linux線程機制:主要講授線程的創建和線程的同步與互斥;
5)Linux文件系統調用:主要講授Linux文件系統結構以及一些底層系統調用;
6)簡單的內核編程:主要講授Linux內核模塊編程的原理和一個簡單的字符設備驅動程序;
7)Linux下的socket編程(選講):主要講授與socket編程有關的系統調用,編寫一個簡單的通訊程序。
4 課程整合后的效果與不足
由于在操作系統的實驗過程中涵蓋了基本的Linux程序開發知識,對于培養學生的實踐技能,提高他們的學習興趣有著很好的作用。實踐表明,從實施課程整合的這一學期的情況來看,多數學生能在較少的課時里基本掌握了Linux程序開發的基礎知識,為日后從事Linux的應用開發打下了基礎。但這種教學模式也存在著某些不足,由于每次實驗的工作量較大,少數基礎薄弱的學生無法跟上進度;還有少數學生急功近利的思想比較嚴重,沒有意識到Linux開發的重要性,學習積極性不高,這些都影響了學習效果。下一步計劃考慮針對學生水平和接受能力的差異性,采取有效措施來激發學生學習的積極性。
參考文獻:
[1] 姜代紅,程紅林.《計算機操作系統實驗》教學內容及體系改革[J].福建電腦,2006(1):195-196.
[2] 金海.談Linux 系統在操作系統課程實驗教學中的應用[J].教育與職業,2006(27):163-164.
[3] 羅宇,張穎蓓,葉常春.本科操作系統課程設置及教學體會[J].計算機教育,2006(1):39-40.