李瑛達(dá) 謝雙杰
摘要:“操作系統(tǒng)”作為一門傳統(tǒng)的計算機課程,隨著IT領(lǐng)域的不斷進(jìn)步和發(fā)展,它的教學(xué)將面臨更多的新問題。本文從我?!安僮飨到y(tǒng)(Linux)”的教學(xué)情況入手,結(jié)合本校學(xué)生的學(xué)習(xí)特點和教育心理學(xué)理論,對“操作系統(tǒng)”課程的教學(xué)環(huán)節(jié)進(jìn)行了探討。
關(guān)鍵詞:操作系統(tǒng);Linux;實例化教學(xué)
中圖分類號:G642 文獻(xiàn)標(biāo)識碼:B
1“操作系統(tǒng)”教學(xué)中存在的問題
“操作系統(tǒng)”是計算機專業(yè)學(xué)生的一門必修課程,大部分高校將此課程設(shè)置在大二下半學(xué)期。學(xué)生在此之前雖然已經(jīng)完成“C語言程序設(shè)計”和“計算機組成原理”的課程,但首次接觸“操作系統(tǒng)”,基本上屬于丈二摸不著頭腦。這主要是因為“操作系統(tǒng)”本身是一門博大精深的課程,而我們教學(xué)主要是傳授學(xué)生關(guān)于操作系統(tǒng)原理方面的知識,可謂是對操作系統(tǒng)核心內(nèi)容的高度概括。即便是遇到了一些經(jīng)典的算法也基本上是屬于紙上談兵。對于這樣抽象的內(nèi)容,學(xué)生無法像學(xué)語言課程一樣,通過編寫代碼后能夠立竿見影的看到程序運行的結(jié)果,因此對于操作系統(tǒng)的學(xué)習(xí)逐漸產(chǎn)生了厭學(xué)情緒。傳統(tǒng)的“操作系統(tǒng)”教學(xué)中能夠引起他們興趣的主要就是其中生動有趣的算法,如果我們在此能夠多做一些實踐教學(xué),讓學(xué)生勤動腦、多動手,甚至將自己的算法逐漸整合成一個最簡單的操作系統(tǒng),這種實例化的教學(xué)將會讓學(xué)生體會到操作系統(tǒng)學(xué)習(xí)的成就感,同時有利于培養(yǎng)學(xué)生的創(chuàng)新能力。
2“操作系統(tǒng)”教學(xué)改革方案
2.1操作系統(tǒng)原理實例化
這里提出將操作系統(tǒng)原理實例化,其實就是拿出一個可以提供給學(xué)生的操作系統(tǒng),可以讓學(xué)生真正體會所有經(jīng)典算法的真正的操作系統(tǒng)。選擇一個開源的操作系統(tǒng)這是一個必然的趨勢,而在眾多的開源操作系統(tǒng)中,Linux是很多高校教學(xué)和實驗的首選。Linux不僅可以讓學(xué)生查看像PCB(進(jìn)程控制塊)這樣的數(shù)據(jù)結(jié)構(gòu)的源碼程序,更可以讓學(xué)生在Linux上編寫出進(jìn)程創(chuàng)建、線程并發(fā)等等只可意會不可言傳的程序代碼。
例如《操作系統(tǒng)》中第二章的內(nèi)容進(jìn)程管理,通常在最初階段將學(xué)生頭腦里的“程序”轉(zhuǎn)化成“進(jìn)程”是比較困難的,另外對于進(jìn)程并發(fā)的概念總是不能真正的理解。在這里如果能夠及時的引入Linux中的系統(tǒng)調(diào)用fork()來創(chuàng)建進(jìn)程,并且設(shè)計出一個易于學(xué)生理解,并且有一定趣
味的例子給學(xué)生實現(xiàn),那么對于剛進(jìn)入操作系統(tǒng)學(xué)習(xí)的學(xué)生來說無疑是一個巨大的幫助。這里給出一個使用fork()調(diào)用創(chuàng)建進(jìn)程的簡單的例子。
#include
main()
{
pid_t id=0;
printf(“program is excuting… ”);
printf(“in function main… ”);
id=fork();
if(id==0)
{printf(“I am child!!! ”);}
else
{printf(“I am parent!!!”);}
}
這個例子僅僅幾行代碼卻詮釋了進(jìn)程創(chuàng)建、進(jìn)程并發(fā)、進(jìn)程父子關(guān)系等多個概念。當(dāng)然在這里一定要交代好fork()調(diào)用的幾個重點:
(1) 子進(jìn)程復(fù)制父進(jìn)程的代碼和數(shù)據(jù);
(2) 子進(jìn)程從fork()調(diào)用之后開始執(zhí)行;
(3)fork()調(diào)用成功給子進(jìn)程返回值為0,給父進(jìn)程返回子進(jìn)程的pid號。
通過系統(tǒng)調(diào)用fork()拋磚引玉,讓學(xué)生自己寫出一段有意義的程序。學(xué)生通過自己的思考也會提出一些有意思的問題,例如如果在子進(jìn)程里再調(diào)用fork()創(chuàng)建進(jìn)程,這些進(jìn)程之間的關(guān)系又是什么。學(xué)生開始思考也就意味著他開始對這個理論感興趣了,學(xué)生提出了新的問題說明了學(xué)生對這些概念有了深刻的理解。而我們的教學(xué)的目的和意義也就達(dá)到了。
2.2經(jīng)典算法程序化
算法本事身就是相對比較深奧的程序,而這部分也恰恰是軟件編程的核心。如果能夠掌握這個龐大的軟件——操作系統(tǒng)里的關(guān)鍵性算法,自然對學(xué)生編寫程序和研究算法有著不可估量的好處。從第二章的信號量開始就已經(jīng)開始涉及到了操作系統(tǒng)中某些關(guān)鍵和經(jīng)典的問題。很多學(xué)生由于是第一次接觸算法,很難把這些經(jīng)典問題和操作系統(tǒng)中的某一部分代碼有效的聯(lián)系起來,所以抽象的算法就成了他們最難以理解和消化的“食物”了。在這里設(shè)計了一些實驗內(nèi)容,如表1所示:
3結(jié)束語
“操作系統(tǒng)”作為計算機專業(yè)的必修課程,是一門有著重要地位的核心課程。如何讓實驗教學(xué)配合好理論教學(xué),讓枯燥無味的原理變成趣味十足且耐人尋味的一門課程成為了改革的主要目標(biāo)。將操作系統(tǒng)中的每一個難以理解的定義和算法實例化,搞好這個教學(xué)環(huán)節(jié),對于提高計算機的教學(xué)質(zhì)量、全面提高學(xué)生的素質(zhì)有著重要的意義?!安僮飨到y(tǒng)”課程教學(xué)方法的改進(jìn)要遵循適應(yīng)課程教學(xué)改革和專業(yè)發(fā)展的實際需要,切實貫徹該課程的教學(xué)大綱和基本要求,不斷完善教學(xué)活動的各個環(huán)節(jié)。充分發(fā)揮學(xué)生的能動作用,培養(yǎng)學(xué)生發(fā)現(xiàn)問題、分析問題、解決問題的綜合能力,真正培養(yǎng)學(xué)生在系統(tǒng)軟件開發(fā)方面的綜合能力。
參考文獻(xiàn):
[1] 付曉翠.《計算機操作系統(tǒng)》教學(xué)方法改革探悉[J]. 山東農(nóng)業(yè)教育,2008(4):32-34.
[2] 孫斌,周海波. 操作系統(tǒng)(Linux)實驗指導(dǎo)[M]. 大連:東軟電子出版社,2008.