張麗曉,楊 平
(上海杉達學院 信息科學與技術學院,上海 201209)
面向應用型本科的操作系統教學實踐與探索
張麗曉,楊 平
(上海杉達學院 信息科學與技術學院,上海 201209)
針對操作系統難學、難教的情況,面向應用型本科教學,提出在教學過程中融入多種教學方法,并一一闡述這些方法在教學中的實施辦法和運用過程,最后說明加強實踐環節的重要性并說明具體措施。
操作系統;應用型人才;關聯;設計哲學
操作系統是計算機最核心的系統軟件,管理著計算機的軟硬件資源,是一款功能強大和設計復雜的程序。隨著計算機硬件的發展以及用戶需求的變化,操作系統呈現出越來越強大、越來越復雜的趨勢。
對于計算機專業的學生來說,操作系統課程是專業核心課,操作系統的設計原理及實現技術是他們必須掌握的基礎知識[1],然而,學生普遍認為操作系統課理論性強、概念抽象、知識點多而雜[25]。通過多年的探索,我們在教學過程中運用多種教學方法,試圖通過學習操作系統課,讓學生不僅可以了解隱藏在技術層面之后的原理,還可以通過認識和理解經典算法和成熟設計思想,增強自身的抽象思維、邏輯推理和實踐動手能力[5],而嚴謹有序的思維能力是計算機專業學生需要加強的。
面對如此強大和復雜的軟件,操作系統課教什么或學生學什么?操作系統教學的意義不一定是教會學生編寫一個自己的操作系統。操作系統太復雜,對于普通應用型本科的學生來說,他們沒有能力實現一個全新的操作系統,設置這樣的教學目標不適合。社會對應用型人才的要求是具有扎實的基礎知識和實踐能力以及一定的創新能力。計算機技術發展迅速,具體的技術可能會過時,因此操作系統課程的教學目標應該放在教授學生通用的知識,培養其將知識應用于實踐的綜合能力以及適應技術發展的能力,進而提高學生的創新能力[6]。
操作系統課程要講授的內容是操作系統發展過程中保留下來的精華,體現了操作系統理論和技術中最核心、最令人鼓舞的創新內容。教師需要在授課中將發展中的精彩片段以及睿智的思想呈現在學生面前,讓學生體會到成果的偉大,進而理解經典并從中汲取創新的智慧。
操作系統的設計其實蘊含著一種哲學——折中和平衡。算法在性能指標中尋求平衡,作業調度中的每種調度算法都有自己的優缺點,主要是根據實際需要選擇合適的算法,有時還要在性能和復雜度之間尋求平衡;時間換空間與空間換時間的折中,虛擬存儲器的實現是時間換空間,即將進程的一部分放在外存,從而在邏輯上增加可用的內存空間,但是執行過程中,將需要的程序或數據從外存調人內存將花費更多的時間。設計任何的工程系統,包括軟件系統,都是一個權衡的過程,理解這種設計思想或哲學,可以用于解決實際工作問題。
操作系統的發展史就是操作系統的理論和技術不斷創新的歷史過程,計算機硬件的發展和用戶不斷變化的需求是操作系統發展的兩大推動力,因此,教師在教學過程中要注重培養學生用發展的眼光看待事物,對新技術、新方向具有敏銳的觀察力和判斷力。例如,多核、多處理機的出現會導致操作系統向充分發揮多核、多處理機性能的方向發展;隨著云計算產品的普及,相適應的云操作系統也會出現等。此規律推廣到手機和其他智能設備也同樣適用。如果學生能將這種發展的意識內化為自身素質的一部分,創新性的設計也將容易實現。此外,操作系統中的資源管理方式如獨占資源虛擬化、采用調度的方式,并發、并行、鎖等概念也能夠在許多其他場合得到重用。
操作系統自身的復雜性導致操作系統課程的概念和算法較多,教師在教學過程中不僅需要運用多種教學方法和教學手段,還要幫助學生對教學內容進行梳理。
2.1 一條紅線
首先,告訴學生學習操作系統要掌握“一條紅線”,即操作系統的任務是管理計算機資源、提高資源利用率和滿足用戶需求,這是貫穿整個系統的一條主線。整個操作系統的設計都是為了實現這一目標,如內存管理,首先要為運行的程序分配內存并保證其能正確運行,程序運行結束后回收內存;隨著內存容量變大,在發現總是有剩余內存空間后,為了提高內存資源利用率,提出同時加載多個程序到內存,內存管理從單一存儲分配方式發展為分區存儲管理方式,之后發展為分頁存儲管理方式。這樣,在保障用戶能同時運行多個程序和提高資源利用率的同時,也提高了用戶滿意度。整個操作系統的發展史也體現了這一主線,隨著硬件的發展,如內存越來越大、處理器速度越來越快,為了提高資源利用率,操作系統從單道發展到多道,交互需求使操作系統在批處理之后出現了分時系統等。
2.2 關聯教學,理清關系
操作系統的設計原理和實現技術涉及數據結構、數據庫、計算機組成原理等多門課程的知識,教師在講授過程中將這些課程間的知識點關聯起來,將使學生對知識融會貫通大有好處,也有利于學生從整體上理解操作系統的設計思想。實驗設計可以結合已經學習的C語言和Java語言,如可利用Java語言中的線程創建、線程互斥和文件緩沖進行編程實驗,不僅可以幫助驗證和理解操作系統的概念,還能鍛煉學生的編程能力,實現課程間的橫向關聯。此外,教師也應該向學生說明操作系統教材各個章節之間的關聯,讓學生在開始就有一個整體認識。操作系統的功能可以概括為四大管理(處理機管理、存儲管理、設備管理和文件管理)和一個用戶接口,大部分的教材基本上也是按照這5部分安排內容。四大管理功能與計算機系統的組成是對應的,計算機硬件主要包括處理機、內存和輸人輸出設備,而計算機軟件的體現形式是文件,從計算機的組成部分著手,學生較容易記住操作系統的功能。
操作系統課程內容是一個有機整體,除了章節之間有關聯外,知識點之間還有關聯。在教學過程中,教師要注意將這些知識點串聯起來,講解后面的知識點時應該將前面學習的內容進行回顧。例如,關于進程的狀態轉換,進程的狀態部分會介紹進程狀態及狀態間的轉換條件;通過信號量進行同步和互斥時,P、V操作也提到進程在運行、阻塞及就緒狀態之間的轉換;進程調度算法部分,也會講到進程運行的時間片到了之后進程狀態會發生轉換;在分頁存儲管理方式中,如果發生缺頁,進程也會進行狀態轉換。
2.3 what ,why和 how
雖然操作系統非常復雜,但是在學習操作系統每一部分的過程中,學生如果能試著從解決“what,why和how”3個問題著手,就可以較容易地理清內容之間的關系,了解設計的來龍去脈并一步步深人理解操作系統的設計思想,如處理機調度部分,要依次弄清楚什么是處理機調度、為什么要進行處理機調度和怎么進行調度;再如存儲器管理部分,為什么會出現分頁存儲管理方式、什么是分頁存儲管理方式以及這種存儲管理方式是如何工作的。如果站在設計者的角度去學習和思考,對一些概念或算法的記憶不再只是單純的死記硬背,那么學習也會更加容易。
2.4 寓教于樂,增強學生學習興趣
學生在學習過程中,普遍認為操作系統理論性強、概念抽象,知識點和原理的講授比較枯燥,因此激發學生的學習興趣非常重要。教師可采用多種教學手段,如多媒體教學和板書相結合的方式,講解時適當采用動態演示以加深學生學習的印象,對輪轉調度算法、死鎖問題、動態分區存儲管理等內容可以采用動畫形式;課堂上也可以用操作系統工具觀察簡單的操作系統現象,如運行和關閉一個程序查看任務管理器中進程的變化,觀察線程列,進行虛擬內存的設置。
教師可在教學過程中利用類比,形象地講解抽象的操作系統概念和算法。將操作系統的許多經典算法和原理與生活中的現實問題關聯起來,能夠加深學生對原理的理解[7];也可以提出類似的體驗式教學方法,如調度算法可類比醫院排隊或銀行排隊。另外,進程的生命周期及狀態可與人的生命周期及狀態類比,人也有生老病死、順利、挫折等不同狀態;講到最近最久未使用頁面置換算法時,可舉例說如果教室座位已滿,有人要進來聽課則需要請一個出去才行,選擇哪個人出去好呢?可以選擇長時間沒有抬頭聽課的學生(相當于很長時間沒有被訪問的頁面)出去,而這樣往往也可以達到調動課堂氣氛的效果;銀行家算法中操作系統相當于銀行家,申請資源的進程相當于向銀行申請貸款的客戶,同審批貸款類似,在分配資源前,操作系統同樣要審核,以確定是否會影響系統安全。
2.5 循序漸進,遵循認知規律
教師可先從較簡單的問題人手,待學生理解和掌握后再一步步增加問題的復雜度,這樣學生往往容易接受,如生產者消費者問題,先講解一個生產者、一個消費者、一個緩沖區時信號量應該怎么設置→一個生產者、一個消費者、多個緩沖區時信號量的設置→多個生產者、多個消費者、多個緩沖區時信號量的設置。
實踐的目的是提高學生動手能力及加深其對概念的理解,因此實驗內容的設計要與教學內容相關聯并與學生的能力相適應[8]。將操作系統實驗分成5個層次,即了解操作系統、使用操作系統、操作系統編程、操作系統改進和操作系統設計,大部分的普通大學進行前3層的實驗即可。
從輔助操作系統教學的角度,我們利用Windows和Linux兩大主流操作系統作為實驗平臺,設計相關的實驗項目,供學生理解操作系統的相關知識點;使用學生已經學過的C語言和Java語言實現實驗內容,在Linux下使用C語言編程,在Windows下采用Java語言編程實現。實驗內容豐富,難易結合,利用已學過的編程語言,既能鞏固已有知識和加強學生的實踐操作能力,又能提高學生的學習興趣。
實踐環節的具體實施采用翻轉課堂方式[9],即指定自學材料(如課件、視頻等)布置任務,由學生自主學習,學生充分理解實驗目的并做好充分準備后再實施上機,這樣得到的教學效果比實驗課時由教師指定實驗內容和實驗步驟要好。
操作系統是非常重要的一門課,希望不同層次的學生在學習操作系統后,都能在多方面得到啟發。在當今技術發展日新月異的時代,教師要根據普通應用型本科學生的特點及應用型人才的現實需求,選擇講授經典的設計和理念,并力圖使學生在經典中汲取知識和創新。操作系統的概念多和理論抽象也是師生所共識的,采用多種教學方法激發學習興趣也至關重要。
[1] 王敏, 申利民, 尤殿龍. 計算機密切型專業柔性培養模式的研究與實踐[J]. 教學研究, 2013, 36(4): 4-7.
[2] 潘雷. 操作系統課程在應用型本科高校的教學改革與實踐[J]. 軟件工程師, 2015, 18(1): 43-44.
[3] 袁紅麗, 李艷, 謝志英. 以計算思維為導向的計算機操作系統教學設計[J]. 計算機工程與科學, 2014, 36(增刊1): 205-207.
[4] 王海紅. 操作系統原理課程關聯教學方法研究[J]. 計算機教育, 2013(15): 8-12.
[5] 李翠霞, 譚營軍. 應用型軟件專業操作系統課程的教學探索[J]. 計算機教育, 2010(20): 69-71.
[6] 楊興強, 劉祥鵬, 劉毅. 操作系統教學中的經典與創新[J]. 計算機教育, 2013(15): 22-25.
[7] 吳婭婷. 基于“操作系統”課程教學改革的研究[J]. 電腦知識與技術, 2010(3): 666-667.
[8] 鄒恒明. 操作系統課程實驗中的五重奏哲學[J]. 計算機教育, 2009(20): 109-112.
[9] 張其亮, 陳永生. 翻轉課堂在操作系統實驗教學中的應用研究[J]. 實驗技術與管理, 2014, 31(12): 173-176.
(編輯:宋文婷)
1672-5913(2017)01-0099-03
G642
上海市民辦高校重點項目(2016-SHNGE-01ZD)。
張麗曉,女,講師,研究方向為程序設計、軟件工程和操作系統,lxzhang@sandau.edu.cn。