馬 馳 張玉軍
摘要:“操作系統(tǒng)”是軟件工程專業(yè)本科教學(xué)中的必修課程,其龐雜的內(nèi)容給教師的教學(xué)和學(xué)生的學(xué)習(xí)都帶了很大的困難。本文針對(duì)軟件工程專業(yè)學(xué)生的培養(yǎng),結(jié)合自身的教學(xué)經(jīng)驗(yàn),對(duì)課程的教學(xué)內(nèi)容,教學(xué)方法,實(shí)踐教學(xué)幾個(gè)方面進(jìn)行了探討,為課程的教與學(xué)提供了一些觀點(diǎn)和思路。
關(guān)鍵詞:軟件工程;操作系統(tǒng);教學(xué)方法
中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:B
1引言
目前我國(guó)計(jì)算機(jī)本科教育中培養(yǎng)的軟件人才主要來自于計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)及軟件工程專業(yè),從本質(zhì)上講,這兩個(gè)學(xué)科在人才培養(yǎng)方式,培養(yǎng)目標(biāo)以及所關(guān)注的知識(shí)領(lǐng)域等方面都有所不同。一般來講,計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)是學(xué)習(xí)軟件及硬件理論的專業(yè),側(cè)重于研究;軟件工程專業(yè)是以學(xué)習(xí)軟件理論為主的專業(yè),側(cè)重于技術(shù)。從目前我國(guó)的軟件行業(yè)的市場(chǎng)需求來看,更需要軟件工程專業(yè)的人才,因此高校對(duì)于軟件工程專業(yè)學(xué)生的培養(yǎng),應(yīng)更強(qiáng)調(diào)其動(dòng)手能力,實(shí)踐能力的培養(yǎng),使其盡早了解計(jì)算機(jī)的工程屬性,適應(yīng)軟件技術(shù)快速發(fā)展的市場(chǎng)環(huán)境。
“操作系統(tǒng)”課程是軟件工程專業(yè)的必修課程,是涉及到較多硬件知識(shí)的計(jì)算機(jī)系統(tǒng)的軟件課程,該課程通過講述操作系統(tǒng)的基本理論,經(jīng)典的算法以及現(xiàn)代操作系統(tǒng)成熟的設(shè)計(jì)思想來培養(yǎng)學(xué)生的抽象思維,邏輯推理和實(shí)踐動(dòng)手能力。同時(shí)通過對(duì)于操作系統(tǒng)的學(xué)習(xí),也有助于培養(yǎng)學(xué)生對(duì)于大型軟件系統(tǒng)的使用能力,分析能力和設(shè)計(jì)能力。但是由于“操作系統(tǒng)”課程具有內(nèi)容龐雜,涉及面廣,概念抽象,實(shí)踐性強(qiáng)等特點(diǎn),尤其涉及大量硬件知識(shí),對(duì)于軟件工程專業(yè)的學(xué)生的教學(xué)有相當(dāng)?shù)碾y度,因此有必要在課程內(nèi)容,實(shí)驗(yàn)內(nèi)容,教學(xué)方法及教學(xué)手段上做出改進(jìn)和創(chuàng)新。本文結(jié)合作者自身的教學(xué)經(jīng)驗(yàn),總結(jié)了以下的一些經(jīng)驗(yàn)及觀點(diǎn)。
2根據(jù)培養(yǎng)目標(biāo),合理組織教學(xué)內(nèi)容
軟件工程專業(yè)人才培養(yǎng)的特點(diǎn)是以技術(shù)應(yīng)用能力培養(yǎng)為核心,以技術(shù)需要為依據(jù)。目前還要面向就業(yè),產(chǎn)學(xué)結(jié)合,這些都注重實(shí)踐技能的培養(yǎng)。面向計(jì)算機(jī)科學(xué)本科教育的“操作系統(tǒng)”教學(xué)內(nèi)容主要是以講述操作系統(tǒng)概念、原理、經(jīng)典算法和硬件基礎(chǔ)等理論知識(shí)為主,很少講述現(xiàn)代典型操作系統(tǒng),如Linux、Solaris和Windows等便于學(xué)生實(shí)際操作使用的內(nèi)容,也很少將理論知識(shí)運(yùn)用到實(shí)際的典型操作系統(tǒng)中去,這不適合于軟件工程人才的培養(yǎng)目標(biāo),所以應(yīng)該根據(jù)軟件工程專業(yè)及市場(chǎng)的需求,擺脫傳統(tǒng)“操作系統(tǒng)”教學(xué)中所采用的理論分析長(zhǎng)而深的模式,在“操作系統(tǒng)”課程教學(xué)中增加并充實(shí)大量的應(yīng)用實(shí)例內(nèi)容,以便于教師理論聯(lián)系實(shí)際地講解操作系統(tǒng)的理論知識(shí),將理論知識(shí)及時(shí)的轉(zhuǎn)化成應(yīng)用實(shí)例,并運(yùn)用到實(shí)際的經(jīng)典操作系統(tǒng)中去。同時(shí)應(yīng)加強(qiáng)學(xué)生對(duì)典型操作系統(tǒng)的使用能力和在其上的開發(fā)能力,提高軟件工程專業(yè)學(xué)生實(shí)際的研發(fā)能力。在具體的教學(xué)內(nèi)容組織實(shí)施上,可將教學(xué)內(nèi)容劃分為以下三個(gè)部分。
首先講授操作系統(tǒng)實(shí)現(xiàn)的基本原理和概念。如進(jìn)程管理部分闡述進(jìn)程和線程的概念,進(jìn)程的管理,同步與互斥,死鎖等問題,存儲(chǔ)部分說明連續(xù)分配方式,分頁分段存儲(chǔ)管理,虛擬存儲(chǔ)系統(tǒng)的概念和請(qǐng)求分頁系統(tǒng)的實(shí)現(xiàn)原理等,設(shè)備管理部分介紹在I/O系統(tǒng)及控制方式,設(shè)備分配,設(shè)備驅(qū)動(dòng)程序的基本概念,磁盤管理等。文件部分講述文件系統(tǒng)的基本概念,文件的組織結(jié)構(gòu),文件目錄管理以及文件存儲(chǔ),共享與保護(hù)等內(nèi)容。在講授這些內(nèi)容的同時(shí),應(yīng)注意考慮軟件專業(yè)學(xué)生硬件基礎(chǔ)較差的特點(diǎn),適當(dāng)取舍硬件相關(guān)知識(shí),比如涉及硬件知識(shí)較多的中斷技術(shù)就可以適當(dāng)刪節(jié),說明原理即可。
其次應(yīng)該為學(xué)生介紹典型操作系統(tǒng)的使用。這里操作系統(tǒng)的使用主要指對(duì)于典型操作系統(tǒng)的基本操作,常用管理,基本配置工具使用以及典型開發(fā)環(huán)境的了解。在說明抽象的原理和概念之后介紹這些實(shí)用內(nèi)容,既有助于對(duì)抽象原理和概念的理解,鞏固了理論知識(shí),又為下一步進(jìn)行系統(tǒng)相關(guān)的程序設(shè)計(jì)奠定了較為扎實(shí)的基礎(chǔ)。在具體實(shí)施中,可以選擇Windows操作系統(tǒng)和Linux操作系統(tǒng)。Windows操作系統(tǒng)的基本使用方法對(duì)于大多數(shù)計(jì)算機(jī)相關(guān)專業(yè)的學(xué)生來說問題不大,但其高級(jí)管理功能有必要向?qū)W生介紹,如它用于維護(hù)進(jìn)程管理,存儲(chǔ)管理,文件系統(tǒng)管理,設(shè)備管理等的相關(guān)工具的使用。對(duì)于Linux操作系統(tǒng)或者其他開源的Unix系統(tǒng)而言,在對(duì)它們研究和學(xué)習(xí)之前,必須給出一點(diǎn)時(shí)間介紹它的基本使用方法,目前很多高校的操作系統(tǒng)實(shí)驗(yàn)課及實(shí)踐課都在Solaris或Linux下進(jìn)行,但實(shí)驗(yàn)中很顯著的問題就是學(xué)生對(duì)操作系統(tǒng)的使用都比較陌生,大量的時(shí)間花在摸索操作系統(tǒng)的使用,而延誤了基本的實(shí)驗(yàn)內(nèi)容。因此Unix或Linux的基本shell命令,vi的使用,基本的shell的程序設(shè)計(jì)知識(shí),C/C++編譯器的使用等基本知識(shí)要給予講授。
最后,根據(jù)軟件專業(yè)學(xué)生應(yīng)注重軟件的開發(fā)的特點(diǎn),介紹典型操作系統(tǒng)下的程序設(shè)計(jì)知識(shí)。這里不是指介紹一些開發(fā)工具的使用以及具體的程序設(shè)計(jì)語言,主要是指對(duì)典型操作系統(tǒng)編程接口(API)的介紹。如借助C++語言和Windows的API函數(shù)適當(dāng)適量的介紹相關(guān)Windows編程知識(shí)。利用C語言和Unix或Linux的系統(tǒng)調(diào)用介紹其系統(tǒng)級(jí)的程序設(shè)計(jì)。該部分內(nèi)容的講解,既回憶和鞏固了操作系統(tǒng)原理的知識(shí),又拓展了學(xué)生程序設(shè)計(jì)的知識(shí)面,為學(xué)生進(jìn)
一步的接觸特定操作系統(tǒng)的系統(tǒng)級(jí)編程打下良好的基礎(chǔ)。
3改進(jìn)教學(xué)方法,提高學(xué)生學(xué)習(xí)主動(dòng)性
在原有的“操作系統(tǒng)”課程教學(xué)中,教學(xué)方法比較單一,主要采用教師使用PPT課件講授為主,無法激發(fā)學(xué)生的學(xué)習(xí)興趣。這里根據(jù)上述提出的教學(xué)內(nèi)容,改進(jìn)原有的填鴨式教學(xué)方法,以提高學(xué)生學(xué)習(xí)的主動(dòng)性。首先,對(duì)于操作系統(tǒng)原理這部分內(nèi)容的教學(xué),由于教學(xué)內(nèi)容具有一定的難度和廣度,因此教學(xué)中面臨的主要問題是學(xué)生對(duì)理論課程所產(chǎn)生的興趣和信心問題。針對(duì)軟件工程專業(yè)的學(xué)生的教學(xué),一方面盡量考慮在軟件層面上體現(xiàn)教學(xué)內(nèi)容,不宜講解過深。另一方面考慮采用多種教學(xué)方法相結(jié)合,活躍課堂氣氛,提高學(xué)生學(xué)習(xí)的興趣。教師可以采用啟發(fā)式的教學(xué)方法,如在介紹進(jìn)程同步問題時(shí),首先教師可以講授一個(gè)生產(chǎn)者和一個(gè)消費(fèi)者共用一個(gè)緩沖區(qū)的情況,而后,可以啟發(fā)同學(xué)嘗試修改同步算法,以適應(yīng)生產(chǎn)者和消費(fèi)者使用多個(gè)共享空間和無限共享空間的情況。在教學(xué)中經(jīng)常設(shè)置問題,能夠啟發(fā)調(diào)動(dòng)學(xué)生的思維,提高同學(xué)的學(xué)習(xí)主動(dòng)性。另一個(gè)角度,教學(xué)中經(jīng)常引用日常生活中的應(yīng)用實(shí)例是引發(fā)學(xué)生學(xué)習(xí)興趣的又一種好的方法,如在講授進(jìn)程互斥時(shí),可以使用航空售票,交通流量統(tǒng)計(jì)等應(yīng)用實(shí)例,在講授中斷機(jī)制時(shí),引入一些基于中斷機(jī)制的病毒工作原理,都會(huì)很大程度的引起學(xué)生的興趣。好的實(shí)例既能夠簡(jiǎn)化學(xué)生對(duì)抽象復(fù)雜問題的理解,又能調(diào)動(dòng)學(xué)生思維,使其聯(lián)系其他課程知識(shí),并理論聯(lián)系實(shí)際,達(dá)到學(xué)以致用的效果。
對(duì)于典型操作系統(tǒng)應(yīng)用這一部分的內(nèi)容,建議首先應(yīng)該由教師演示講解,使學(xué)生了解基本使用方法和理論。之后可以為學(xué)生布置一些特定功能的任務(wù),來使學(xué)生鞏固課堂講解內(nèi)容,以任務(wù)促進(jìn)教學(xué)。比如學(xué)習(xí)Linux命令過程中,可以布置利用命令和管道及輸入輸出重定向操作相結(jié)合的任務(wù)完成指定功能。在學(xué)生了解基本shell命令和基本shell語法后,可以布置些短小的shell程序以鍛煉學(xué)生的動(dòng)手能力。
最后,對(duì)于系統(tǒng)編程這部分的內(nèi)容,建議教師首先要為同學(xué)編寫幾個(gè)典型程序,在學(xué)生了解基本程序設(shè)計(jì)流程后。教師可以為學(xué)生布置幾個(gè)針對(duì)特定功能是小項(xiàng)目,以項(xiàng)目促進(jìn)教學(xué),來提高學(xué)生的編程能力,以達(dá)到軟件工程專業(yè)學(xué)生的學(xué)習(xí)目標(biāo)。
任務(wù)和項(xiàng)目驅(qū)動(dòng)教學(xué)方法有助于提高學(xué)生的自學(xué)能力,在動(dòng)手的過程中,一般會(huì)遇到一些通過課堂知識(shí)無法解決的問題,要求學(xué)生查閱相關(guān)資料解決問題。這一過程可以很好的培養(yǎng)學(xué)生獨(dú)自解決問題的能力。
4加強(qiáng)實(shí)踐教學(xué),提高學(xué)生實(shí)踐能力
操作系統(tǒng)的實(shí)踐課是其教學(xué)過程必不可少的環(huán)節(jié),其實(shí)施質(zhì)量對(duì)專業(yè)教學(xué)質(zhì)量具有舉足輕重的影響。在重視基本概念,理論和算法的課堂講授教學(xué)的基礎(chǔ)上,有針對(duì)性地加強(qiáng)實(shí)踐教學(xué),有助于提高學(xué)生的綜合素質(zhì),培養(yǎng)學(xué)生的創(chuàng)新精神與實(shí)踐能力。由于教學(xué)課時(shí)所限,必須重視實(shí)踐課程內(nèi)容的合理性,是其緊跟課堂教學(xué),達(dá)到學(xué)生邊學(xué)邊練,及時(shí)消化課堂教學(xué)內(nèi)容的效果。
從實(shí)踐課程的組織上,一般可以分為課程實(shí)驗(yàn),課程設(shè)計(jì),以及課外實(shí)驗(yàn)幾個(gè)部分。課程實(shí)驗(yàn)通常要求緊跟教學(xué)內(nèi)容,在操作系統(tǒng)理論部分主要應(yīng)設(shè)置利用程序設(shè)計(jì)語言完成操作系統(tǒng)經(jīng)典算法的驗(yàn)證和模擬。如對(duì)進(jìn)程調(diào)度算法,存儲(chǔ)算法的模擬等實(shí)驗(yàn)。這部分實(shí)驗(yàn)具有一定難度,通常需要教師提供指導(dǎo)和部分代碼,而后引導(dǎo)學(xué)生實(shí)現(xiàn)實(shí)驗(yàn)內(nèi)容。教師可以鼓勵(lì)并啟發(fā)有余力的學(xué)生完成理論課中出現(xiàn)的其他經(jīng)典算法。系統(tǒng)應(yīng)用和編程部分的實(shí)驗(yàn)可以借助虛擬機(jī)軟件完成系統(tǒng)命令和系統(tǒng)管理的實(shí)驗(yàn)。教師布置任務(wù)可以是一些成型的案例,由教師先演示操作一遍,然后讓學(xué)生自己重復(fù)、調(diào)試操作,以便加深學(xué)生的印象。案例的組織可以按章節(jié)知識(shí)點(diǎn)的內(nèi)容,盡量做到前后聯(lián)系,以求融會(huì)貫通。比如shel1腳本編程練習(xí)的時(shí)候,可以設(shè)計(jì)一個(gè)實(shí)現(xiàn)稍微復(fù)雜點(diǎn)功能的shel1腳本,其內(nèi)容可以覆蓋操作系統(tǒng)多個(gè)章節(jié)的內(nèi)容。
除了隨課的課程實(shí)驗(yàn)之外,設(shè)置必要的課程設(shè)計(jì),對(duì)綜合運(yùn)用和鞏固操作系統(tǒng)知識(shí)也非常有必要性。課程設(shè)計(jì)的內(nèi)容應(yīng)貼近操作系統(tǒng)并結(jié)合軟件專業(yè)的教學(xué)特點(diǎn),著重編程實(shí)現(xiàn),如實(shí)現(xiàn)一個(gè)特定功能的守護(hù)進(jìn)程,實(shí)現(xiàn)一個(gè)簡(jiǎn)單的系統(tǒng)調(diào)用等等。給有余力的同學(xué)布置編寫內(nèi)核雛形等設(shè)計(jì)任務(wù),提高學(xué)生的系統(tǒng)級(jí)編程能力。
課外的實(shí)驗(yàn)部分,應(yīng)該給學(xué)生較大的自由空間,增加學(xué)生涉獵知識(shí)的廣度,可以為學(xué)生布置些開源系統(tǒng)源代碼的閱讀和修改。組織設(shè)計(jì)小組修改精簡(jiǎn)開源內(nèi)核,以及編寫簡(jiǎn)單的小型操作系統(tǒng),從軟件工程的角度,培養(yǎng)學(xué)生的工程意識(shí),進(jìn)一步提高學(xué)生的實(shí)踐能力。
5結(jié)束語
操作系統(tǒng)相關(guān)知識(shí)是軟件人才應(yīng)必備的基礎(chǔ)知識(shí),同時(shí)“操作系統(tǒng)”課程也是軟件工程專業(yè)的一門核心主干課程。合理的組織“操作系統(tǒng)”的教學(xué)內(nèi)容,采取適當(dāng)?shù)慕虒W(xué)方法,加強(qiáng)實(shí)踐教學(xué)環(huán)節(jié)是軟件人才培養(yǎng)必要的手段和途徑。本文探討的觀點(diǎn)和經(jīng)驗(yàn)希望能夠起到“拋磚引玉”的作用,使更多教師和同學(xué)提出對(duì)于“操作系統(tǒng)”教與學(xué)的新方法。
參考文獻(xiàn):
[1] 王知非. 操作系統(tǒng)課程教學(xué)與學(xué)生能力培養(yǎng)[J]. 計(jì)算機(jī)教育,2008(14):73-74..
[2] 魯和杰. 基于Linux系統(tǒng)下的Java語言實(shí)驗(yàn)教學(xué)探討[J]. 電腦知識(shí)與技術(shù),2007(7):572-573.
[3] 王國(guó)華. 操作系統(tǒng)實(shí)驗(yàn)課程的設(shè)置與實(shí)踐[J]. 山西財(cái)經(jīng)大學(xué)學(xué)報(bào),2006,9(1):108-109.
[4] 蔣靜,徐志偉. 操作體統(tǒng)原理?技術(shù)與編程[M]. 北京:機(jī)械工業(yè)出版社,2004.
[5] Andrew S.Tanenbaum. Modern Operating Systems[M]. 北京:機(jī)械工業(yè)出版社,2002.