代仕芳 李燕
摘 要: 操作系統是一門綜合性課程,具有概念多且抽象、理論性強、知識點多等特點。針對理論教學和實驗教學中出現的一些常見問題,如局部思維方式、知識儲備不足以致代碼實現能力差等,提出三點改進:理論與實踐相結合、整體與局部相結合和層次式教學,以提高操作系統教學的效果,提高學生綜合能力。
關鍵詞: 操作系統; 教學方法; 層次式教學; 理論與實踐
中圖分類號:G642 文獻標志碼:A 文章編號:1006-8228(2016)03-64-03
Research on teaching method of operating system course
Dai Shifang, Li Yan
(College of Information and Engineering, Nanjing University of Finance and Economics, Nanjing, Jiangsu 210003, China)
Abstract: Operating system is a comprehensive course with the characteristics of more concepts and abstract, strong theoretical, more knowledge points and so on. This paper aiming at the common problems in theory teaching and experiment teaching, such as the local way of thinking, the shortage of knowledge reserve that result in the poor code realization ability, puts forward three improvements: combination of theory and practice, combination of global and local, and the hierarchical teaching, in order to improve the teaching effect of the operating system course, and improve students' comprehensive ability.
Key words: operating system; teaching method; hierarchical teaching; theory and practice
0 引言
操作系統是對計算機的各類軟、硬件資源進行管理以充分利用計算機系統中的各類資源,并向用戶提供良好的工作環境和運行界面的系統軟件。操作系統作為在計算機硬件上鋪設的第一層軟件,提供了用戶使用計算機的接口。因此,操作系統開發人員既具有軟件開發方面的知識,也要了解硬件的相關知識。操作系統是一門綜合性課程,它由許多概念、設計思想及算法等構成,因此,具有概念抽象、理論性強、知識點多等特點。操作系統是計算機專業一門重要的專業主干課,其教學目標是幫助學生了解計算機硬件和軟件的關系、掌握操作系統各種功能的實現算法,注重通過對操作系統抽象的理論知識及系統結構的學習,培養學生開發和設計大型軟件的思維和方法,提高學生軟件開發能力。因此,操作系統這門課程配有相應的實驗課程。
然而在實際教學中發現,該課程并未能有效的提高學生獨立開發軟件的能力,僅僅實現了讓學生了解操作系統的構成及功能實現這一基本教學目標。這個問題的出現與我們課程特點密不可分。首先,課程設置偏向理論,課程內容偏向軟件設計和算法實現,雖配套有實驗課程,但比例較低,不利于提高學生的實踐能力。其次,操作系統涉及到各類軟硬件資源,因此,需要專門的實驗平臺,否則,直接采用傳統的編碼和調試方法及有可能導致系統崩潰。最后,對于操作系統這種大型軟件的開發,需要學生具有較強的編程開發能力,實際上,很多學生并不能快速有效地將算法轉化為可執行程序,少數學生雖能快速實現局部功能但對軟件的整體思維和開發能力欠缺,目前大部分的實驗工作主要集中與操作系統部分子系統功能的實現。本文對操作系統理論教學及實驗教學中學生遇到的各種問題進行歸納總結,進而探討培養學生的軟件整體開發思維和方法,提高學生的獨立軟件開發能力。
1 問題歸納
1.1 局部思維方式
所謂局部思維方式是指學生在學習操作系統知識時,只關注當前學習或實踐的內容與知識點,很少能將當前知識與前面的知識聯系起來,這導致學習完一個知識點后,學生很可能不知道該知識點是為了解決什么樣的問題。這樣的局部思維方式是學生長期的學習過程中養成的不良習慣,不僅在學習操作系統這門課程中出現,在其他課程的學習中也同樣存在。
操作系統是一個整體性軟件,各章節的知識都是相互關聯的,因此,在這門課程的學習過程中,這種局部思維方式帶來的問題就更加明顯。下面總結了幾種由局部性思維帶來的普遍性問題。
關注知識細節,忽視知識的宏觀應用。實際教學中發現,很多學生在學習的過程中常常發生一葉障目的現象,通常的表現是學習了當前的知識點后,不知道學習該內容的目的,或者不知道該知識是用于實現操作系統的哪部分的功能的,因此,常常在學期結束后詢問學生什么是操作系統,它有哪些構成和基本功能,很多學生還是一頭霧水。這些主要是由于學生缺少以宏觀的視角來看待和解決問題的能力,不能正確認識每個細小知識點在整個宏觀問題中所處的位置。這就好比學生們仔細認真的觀察了一磚一瓦(各個細小知識點)卻不知道磚瓦是用來蓋房子(開發大型的系統軟件操作系統)的,或者即使知道使用磚瓦來蓋房子,也不知道在什么地方什么時候使用什么材料來蓋房子,概其主要原因就是學生過于關注一磚一瓦的實現細節而忘記關注磚瓦的使用過程,即只關注微觀的知識細節,而忘記學習宏觀的知識應用方式,這也是現在學生學習中的普遍性問題。
關注知識點個體,忽視整體聯系。操作系統課程中,每個章節內容對應部分子功能的實現,每個子功能相互協作才能構成一個完整的操作系統軟件。學生在學習過程中較多關注每個子功能的實現,而忽視了它們之間的聯系,因此,無法有效的將各個子功能拼接成一個完整的系統軟件。例如,學生不清楚I/O系統與用戶之間的接口在哪,如何讓處理機管理系統、存儲管理系統、I/O系統等協同工作,等等。
1.2 知識儲備不足
實際教學中,除了上述局部性思維方式外,學生知識儲備不足也是影響課程學習的另一主要原因。我們知道操作系統是一門綜合性課程,想要學好操作系統,既要了解軟件開發的相關知識,也要有硬件的基礎,因此,知識儲備不足會直接影響操作系統的學習。其表現歸納如下。
⑴ 常見的概念模糊。例如,邏輯地址空間與物理地址空間、程序的鏈接、數據結構、虛擬化等等常見概念的理解模糊。還有很多同學不了解內存單元的地址,更不知道內存地址的作用是什么,因此,在介紹地址映射、數據裝入內存的過程需要花費大量的時間去補充基礎知識。
⑵ 硬件基礎薄弱。計算機系統硬件組成知識薄弱,不了解計算機系統的工作流程,不了解計算機常見硬件的基本功能和基本特性。
⑶ 代碼實現能力差。操作系統實驗課程的教學中看到學生的編程能力普遍較差,且沒有軟件開發基礎和思維方式,很多學生只注重功能的實現,不關注各個部分的接口,導致各子系統可以正常運行,但是,無法拼接成完整系統。主要表現為編碼隨意,亂用GOTO語句,數據結構定義不規范,指針使用隨意。例如,通過printf(“%d\n”,i),學生編寫輸入語句scanf(“%d\n”,&i),而實際規范的語句應為scanf("%d",&i)。
2 操作系統課程教學的幾點思考
基于上述問題,本文針對操作系統教學提出幾點改進意見。
2.1 理論與實踐相結合
注重理論教學的同時,也要加強學生的實際應用能力的提高。現在的學生更加看重知識的實用性,將自己所學知識轉化為實際應用和實踐是學生自主學習的主要內在推動力。單純的進行理論教學,會讓學生感覺操作系統是一門生澀枯燥毫無用處的一門課程。
在教學中,我們將理論和實踐相互結合,詳細闡述理論知識,讓學生充分理解相關工作原理及實現算法,再通過配套實驗課程指導學生將理論知識轉化為實際應用,通過這一轉化過程,提高學生對操作系統實用性的認識,激發學生自我學習的內在動力。理論轉化為實踐的過程中,學生會逐漸發現只有扎實的理論基礎積累才能快速的轉化成實踐,提高了學生對理論知識學習的重視程度,從而形成理論指導實踐,再由實踐去反思理論的良性循環。
在理論轉化成實踐的過程中,學生能夠將空泛的概念落到具體實處加深印象和理解,例如,內存的物理地址空間,可以通過編碼的調試過程查看每個內存單元的存儲內容,充分理解內存的數據存儲及變化。除此之外,通過理論轉化代碼實現的過程能夠快速有效的提高學生的編程能力,發現自己在編碼方面的不足和問題,以及提高自身的軟件設計能力。
2.2 整體與局部相結合
建立學生對于操作系統的整體概念,關于處理機管理、存儲器管理、I/O設備管理、文件管理及用戶接口等模塊都是操作系統的子系統,這些子系統相互關聯、相互協作才能實現操作系統對各種軟硬件資源進行管理并為用戶提供良好工作環境的功能。
教學中充分強調操作系統的整體結構和設計方法,在對整體結構和功能充分了解以后,再介紹操作系統的模塊劃分。透徹講解每模塊的設計思想和功能實現,讓學生在潛移默化中學習軟件開發的思維方式和解決方案,逐漸提高學生運用已學的設計思想解決問題的能力。只有對每個子模塊具體功能原理和實現方法充分掌握后才能快捷迅速的將它們從理論知識轉化成代碼,也只有在每個子功能的代碼都能充分實現的情況下,才有可能將它們連接成一個完整的大型的操作系統軟件。
整體是由局部組成,只有每一子模塊都實現了才有可能連接成整體,而整體不是對每個子模塊的簡單拼湊,各個模塊之間如何相互協調共同完成用戶任務是需要在一開始的軟件整體設計中考慮的問題,此外,軟件設計之初我們還需考慮各子模塊之間的接口。因此,在整個教學過程中,我們遵循“整體-局部-整體”的一個教學過程。通過這個過程,讓學生充分了解整體與部分之間的相互關系,加深理解。
2.3 層次式教學
操作系統課程是按年級統一開課的,但是同一個年級,不同學生的差別也很大,比如,他們各自的知識儲備、自身的理解力和領悟力、興趣愛好,比如有的善于思考而有的喜歡動手編程等等。因此,對不同學生采用統一標準顯然是不合適的,對于能力強、精力充沛的學生,這個統一的標準不能激發他們的潛能,而對于知識儲備相對較弱、能力稍差的學生,這樣的統一標準又會打擊自信心。因此,對于操作系統無論是理論教學還是實驗教學,都建議采用層次式教學,對于不同水平的學生提出不同要求。
在理論教學中,我們將掌握操作系統的基本概念、設計思想和算法作為基本教學目標,對于能力較強的學生在教學中提示一些課本中沒有的知識點去拓展知識空間和思維方法,比如:在學習了用戶空間和內核空間的基本概念后,讓有能力的學生了解用戶空間的數據如何與內核空間的數據進行交互,實現兩者之間數據交互的方法有哪些。而對于那些動手能力較強的學生可以引導他們用1~2種方式去實現將用戶空間的數據傳遞到內核空間內。
在實驗教學中,基本的教學目標是獨立實現操作系統中的基本算法,如進程同步、進程調度算法、銀行家算法及內存的分配回收算法等等。對于能力較強的學生可以引導他們去讀一些開源linux操作系統的源代碼,有選擇的對部分功能模塊進行優化改進,然后再編譯鏈接,最終將該改進植入操作系統中,以此激發學生的學習興趣。
3 結束語
操作系統課程的教學不僅需要教師不斷更新教學內容和教學工具,還要求教師能夠根據學生的特點因材施教。本文總結了歸納操作系統在理論教學和實驗教學中出現的一些常見問題,如局部思維方式問題和知識儲備不足代碼實現能力差的問題,并針對這些問題提出三點改進建議:強調整體與局部之間的相互關系,形成整體-局部-整體的教學模式;要求理論聯系實際,將理論知識應用到具體實踐中去,從理論到代碼實踐,再通過代碼實踐過程反思理論方法的有效的教學方法;針對不同學生采用層次式教學手段,設定基本教學目標,對于完成基本教學目標的同學引導其完成更高層教學目標,提高學生學習興趣和能力。
參考文獻(References):
[1] 湯小丹,梁紅兵等.計算機操作系統(第4版)[M].西安電子科
技大學出版社,2014.
[2] 張堯學.計算機操作系統(第4版)習題解答與實驗指導[M].清
華大學出版社,2013.
[3] 屠立德,操作系統基礎[M].清華大學出版社,2014.
[4] 付沙,楊波,計算機操作系統課程教學改革的研究與探討[J].
計算機時代,2010.3:52-56
[5] 朱敬華,金英等,操作系統課程教學改革與創新人才培養淺
析[J].中小型企業管理與科技,2015.8:192-192