王軍號,謝以磊
(安徽理工大學 計算機科學與工程學院,安徽 淮南 232001)
計算機操作系統(tǒng)是計算機專業(yè)課程極為核心的課程之一,具有非常強的理論性、抽象性和綜合性,是一門教師難教、學生難學的課程,而實驗教學更是其難教難學的一個主要環(huán)節(jié)。操作系統(tǒng)實驗教學的難點主要體現(xiàn)在:內容繁雜,涉及面廣,與計算機軟、硬件及用戶都緊密關聯(lián);實踐性強,與當前各類操作系統(tǒng)有著密切的聯(lián)系;技術更新快。這些困難必然給操作系統(tǒng)實驗教學帶來許多問題[1]。
為了扭轉這種難教難學的態(tài)勢,提升實驗教學效果,本文把案例式教學(case-based Learning,CBL) 和問題式學習(problem-based learning,PBL)教學模式引入操作系統(tǒng)實驗教學中,形成基于CBL-PBL整合模式的計算機操作系統(tǒng)實驗教學方法。
1)課程的復雜性造成學生缺乏足夠的學習興趣。
操作系統(tǒng)課程的理論性和綜合性較強,知識涵蓋多個學科,對前導課程的依賴性很大,課程內容具有一定的抽象性,不像其他應用軟件,學習后會有立竿見影的效果,這在一定程度上直接影響了學生的學習興趣和學習熱情[2]。
2)實驗環(huán)境有著一定的局限性。
由于國內學生習慣使用圖形化的Windows操作系統(tǒng)界面,而應用于UNIX/Linux操作系統(tǒng)的編譯器、調試器等工具多為命令行模式,學習這些工具的命令和參數(shù)會占用學生有限的時間和精力,學生接受起來比較困難。
3)實驗內容設置不夠豐富。
操作系統(tǒng)實驗要求學生具備一定的基礎知識和專業(yè)技能,能夠分析系統(tǒng)的源碼,并在此基礎上嘗試對部分簡單代碼進行修改以完成特定的功能。商業(yè)性的UNIX/Linux/Windows代碼量極大,結構設計異常復雜,實驗內容設置多是模擬驗證型或實際驗證型實驗,并不適合教學,缺少合適的操作系統(tǒng)實例。
計算機操作系統(tǒng)作為計算機專業(yè)的核心課程,其主要內容比較穩(wěn)定,而實驗教學方法卻相差甚遠。通過調研分析國內高校操作系統(tǒng)實驗課程開設情況,發(fā)現(xiàn)一般有3種講授方法[3]。
(1)一般原理法:以若干操作系統(tǒng)作為示例,詳細講解操作系統(tǒng)的基本原理,或通過使用應用程序模擬操作系統(tǒng)的行為和算法。但是根據經驗,按教材和教師講解步驟經過一番“照方抓藥”實驗后,大多數(shù)學生都難以得到對具體操作系統(tǒng)的直接經驗。
(2)應用操作法:借助系統(tǒng)工具在實際操作系統(tǒng)上觀測系統(tǒng)運行狀況,理解相應的系統(tǒng)參數(shù)涵義。該類實驗可以幫助學生理解操作系統(tǒng)的應用,但多側重于對系統(tǒng)的操作。
(3)積木塊法:讓學生設計并實現(xiàn)一個小型的可真正在計算機上運行的操作系統(tǒng)。但是,受學生水平和時間的限制,通常只能偏重于操作系統(tǒng)設計的某些方面,如進程管理,而無法深入理解內核的工作機制。
探索一種讓學生在有限的時間內提高實驗效果以掌握理論知識的教學模式十分必要。CBL(Case-basedLearning)教學法,是以案例為基礎的討論式教學法,PBL(ProblembasedLearning)教學法,以問題為中心旨在培養(yǎng)調動學生的學習積極性和自主學習習慣,將二者有機結合,通過案例式教學模式培養(yǎng)學生的思維能力和創(chuàng)新能力,通過問題式學習模式合理引導學生的學習興趣,將理論知識與實驗實踐相結合,提高學生分析問題和解決問題的能力,并進一步深化在實驗教學中的應用[4]。
CBL-PBL教學模式的關鍵是啟發(fā)性問題的設計,要求既涵蓋實驗相關的知識重點和注意事項,又具有啟發(fā)性。CBL-PBL教學模式的引入使學生帶著疑問去預習實驗和查閱相關資料,引導學生解剖分析一個小型操作系統(tǒng)的實例,通過啟發(fā)性批判性思考提升自己解決問題的能力,開發(fā)學生的思維力和創(chuàng)造力。運用CBL-PBL教學法,能夠在充分理解系統(tǒng)原理的同時,從實驗操作中獲得直接經驗,有效提升學生的實踐能力,以滿足社會對專業(yè)人才的需求。
在操作系統(tǒng)實驗課程中,按照CBL-PBL模式的教學要求,我們制定了基礎驗證性實驗、設計性實驗和創(chuàng)新性實驗3個層次的遞進式實驗架構[5],見圖1。
圖1 CBL-PBL 遞進式實驗架構
基礎驗證性實驗能夠幫助學生深入理解教材中的抽象理論和重要知識點,驗證課程基本原理及關鍵問題,都是學生必須熟練掌握的實驗內容。
設計性實驗主要通過分析研究該課程的核心原理,掌握目錄結構、文件類型和存取控制權限等,并能設計簡單的多級文件系統(tǒng)。引導學生在發(fā)現(xiàn)問題和分析問題的過程中,理解課程的核心原理及其實現(xiàn)過程,是對基礎驗證性實驗的拓展。
創(chuàng)新性實驗主要訓練學生將理論知識運用于實踐過程的綜合能力,以達到“構思、設計、實現(xiàn)”的要求。設計操作系統(tǒng)內核,通過虛擬機上調試并能在真實PC上運行,這是學習操作系統(tǒng)課程需要達到的更高要求。
應根據實驗效果和教學評價,針對實驗項目提出恰當?shù)膯l(fā)性問題;根據實驗大綱和教學目標,結合教師的教學經驗,建立科學的實驗案例。這兩者都是構建CBL-PBL模式實驗項目的基礎,它們又相輔相成,互相促進。通過設計這種遞進式的實驗架構,學生各方面能力都得到逐步鍛煉。
學校選用了由北京英真時代科技有限公司開發(fā)的Engintime OS Lab軟件產品用于操作系統(tǒng)的實驗平臺。該平臺具有以下特點[6]。
OS Lab已經與CodeCode.net平臺完全整合。只要用戶能夠連接互聯(lián)網,就可以使用在CodeCode.net平臺注冊的賬號,隨時登錄使用OS Lab軟件,這樣就徹底解決了傳統(tǒng)硬件在時間和空間上的限制。其次,學生編寫的實驗源代碼,可以托管在CodeCode.net提供的Git遠程庫中。在實驗過程中,學生團隊可以通過分派不同的任務以在線協(xié)作的方式共同完成一個實驗目標。
2)給出了一個很好的操作系統(tǒng)實例。
OS Lab提供的EOS操作系統(tǒng)是一款專門用于教學的、可以直接運行于X86硬件平臺的小型開源操作系統(tǒng),融合了Windows和Linux的設計理念,提供了和Windows一致的API函數(shù)和應用程序功能,學生在深入分析和理解EOS源代碼后,可以按照自己的想法對系統(tǒng)進行修改或添加模塊,具備很大的創(chuàng)新空間。
3)提供了一個可視化的集成實驗環(huán)境。
OS Lab提供了一個界面和操作習慣都類似于Visual Studio的可視化IDE環(huán)境,簡單易學,操作方便。OS Lab使用圖形化的方式顯示線程運行軌跡、進程線程列表、線程控制塊、進程控制塊、虛擬內存、物理內存、二級頁表、就緒線程隊列、記錄型信號量、互斥型信號量、磁盤調度等重要的操作系統(tǒng)數(shù)據,用戶可以隨時觀察操作系統(tǒng)內部的運行情況,從而更加直觀、形象地理解操作系統(tǒng)原理。
操作系統(tǒng)不僅管理系統(tǒng)軟、硬件資源,同時為用戶提供了良好的接口。根據操作系統(tǒng)主要功能,按照3.1節(jié)論述的CBL-PBL模式設計了5個主要實驗模塊,見圖2。
圖2 實驗模塊間的關系
1)操作系統(tǒng)的啟動模塊。
須確定的實驗目的:理解操作系統(tǒng)的啟動步驟和啟動后的工作方式,跟蹤調試EOS在PC機上從加電復位到成功啟動的全過程,查看EOS啟動后的狀態(tài)和行為。通過采用Bochs單步調試BIOS程序、loader程序和軟盤引導扇區(qū)程序,熟悉從系統(tǒng)引導到內核加載與執(zhí)行再到初始化完成的啟動流程,加深對操作系統(tǒng)啟動過程的理解[7]。
護套的材質選擇與環(huán)境溫度、環(huán)境腐蝕和環(huán)保要求等因素有關,化工裝置中常用的護套材質有PVC和HFFR等。外護套上的電纜標識,主要用壓印(凸印或凹印)和油墨印刷等方式,壓印適用于外徑較大的電纜,且壓印工藝較繁瑣,易對儀表電纜外護套造成損傷。儀表電纜護套一般采用油墨印刷,可以做到標識清晰、字體耐磨,并符合相關的標準要求。電纜的護套顏色與電纜的類型有關,依據文獻[16]的規(guī)定,本安回路用儀表電纜的顏色必須為淺藍色。在文獻[1-4]中,對護套的最小厚度、外護套標識等均進行了詳細的規(guī)定。
教師提出的問題有:為什么EOS操作系統(tǒng)從軟盤啟動時要使用loader.bin和boot.bin兩個程序?使用一個可以嗎?它們各自的主要功能是什么?軟盤引導扇區(qū)加載完畢后內存中有兩個用戶可用的區(qū)域,為什么軟盤引導扇區(qū)程序選擇將loader.bin加載到第一個可用區(qū)域的0x1000處呢?這樣做有什么優(yōu)點?這樣做會限制loader.bin文件的大小嗎?
2)進程的創(chuàng)建與同步模塊。
須確定的實驗目的:理解進程和程序的差別,掌握進程創(chuàng)建的方法,學會使用EOS API函數(shù)CreateProcess創(chuàng)建一個進程。理解進程是資源分配的基本單位,跟蹤調試CreateProcess函數(shù)的執(zhí)行流程。跟蹤調試EOS的信號量工作過程,修改EOS的信號量算法以支持等待超時喚醒功能(有限等待),并使用EOS信號量編程解決經典的生產者—消費者問題,從而理解進程同步的原理。
教師提出的問題:在PsCreateProcess函數(shù)中調用了PspCreateProcessEnvironment函數(shù)后又先后調用了PspLoadProcessImage和PspCreateThread函數(shù),學習這些函數(shù)的主要功能,可以互換這些函數(shù)調用的順序嗎?思考為什么要在ps/semaphore.c文件內的PsWaitForSemaphore和PsReleaseSemaphore函數(shù)中使用原子操作?
3)線程的調度管理模塊。
須確定的實驗目的:通過為線程增加掛起狀態(tài),調試線程在各種狀態(tài)間的轉換過程,熟悉線程的狀態(tài)和轉換,進一步加深對線程狀態(tài)的理解。了解常用的調度算法,熟悉基于優(yōu)先級的搶先式調度,為EOS添加時間片輪轉調度,調試EOS的線程調度程序[8]。
教師提出的問題:當loop線程在控制臺1中執(zhí)行,并且在控制臺2中執(zhí)行suspend命令時,為什么控制臺1中的loop線程處于就緒狀態(tài)而不是運行狀態(tài)?時間片輪轉調度發(fā)現(xiàn)被中斷線程的時間片用完,而且在就緒隊列中沒有與被中斷線程優(yōu)先級相同的就緒線程時,為什么不需要將被中斷線程轉入“就緒”狀態(tài)?如果此時將被中斷線程轉入了“就緒”狀態(tài)又會怎么樣?
4)物理存儲器與邏輯管理模塊。
須確定的實驗目的:查看物理存儲器的使用情況,學習分配和回收物理內存的方法,掌握物理存儲器的管理方式。通過查看進程邏輯地址空間的使用情況,以及練習虛擬內存的分配和回收步驟,從而掌握進程邏輯地址空間的管理方法。
教師提出的問題:如果沒有回收分配的物理頁,會對EOS操作系統(tǒng)造成什么樣的影響?只把MEM_RESERVE標志使用在分配虛擬頁的MmAllocateVirtualMemory函數(shù)調用中,而沒有使用MEM_COMMIT標志,嘗試說明這兩個標志的區(qū)別。
5)文件系統(tǒng)管理模塊。
須確定的實驗目的:熟悉在EOS應用程序中讀文件和寫文件的基本方法,通過為FAT12文件系統(tǒng)添加寫文件功能,加深對FAT12文件系統(tǒng)和磁盤存儲器管理原理的理解。通過查看FAT12文件系統(tǒng)的掃描數(shù)據和調試掃描的過程,理解FAT12文件系統(tǒng)管理軟盤的工作方式,進一步修改FAT12文件系統(tǒng)的掃描功能,加深對FAT12文件系統(tǒng)的理解。
教師提出的問題:試著為EOS操作系統(tǒng)添加一個命令del FILENAME,使用此命令,可以把由參數(shù)FILENAME指定的文件或文件夾從根目錄中刪除。EOS應用程序在讀寫文件時,緩沖區(qū)大小設置為512的倍數(shù)比較合適,說明原因。
上述5個實驗模塊覆蓋了操作系統(tǒng)原理中的重要概念,遵循由易到難的原則,待學生在實驗過程中對操作系統(tǒng)原理有了一定認知后,再安排設計性的內容,進一步達到更高階段,做好創(chuàng)新性實驗??梢愿鶕煌慕虒W目標和教學方式,有側重地靈活選擇實驗內容并合理安排教學順序。
為了考察CBL-PBL模式的實驗教學效果,筆者在所在學校計算機專業(yè)本科生的計算機操作系統(tǒng)實驗教學中,對兩個班共80人分別采用CBL-PBL教學法和傳統(tǒng)教學法授課。課程結束后,采用不記名方式問卷調查,向學生發(fā)放關于CBL-PBL模式教學評價的調查問卷。每個問題設有3個選項,分別為“滿意”“一般”和“不滿意”,發(fā)放的問卷全部有效回收,問卷的調查結果見表1。經調查統(tǒng)計得出,學生對CBL-PBL教學模式和傳統(tǒng)教學模式的總體滿意度并繪制出餅狀圖,見圖3。
表1 CBL-PBL實驗教學效果調查表 %
由表1可以看出,在問卷調查中,有92.62%的學生認為CBL-PBL模式教學能增強專業(yè)知識和實踐能力,94.57%的學生認為CBL-PBL模式教學可以提升創(chuàng)新能力,拓展解決思路;90.89%的學生對CBL-PBL模式教學法感到滿意;其他幾項指標的滿意度也都較高,均達到預期目標。從圖3可以看出,學生們對于CBL-PBL教學模式的總體滿意度是89.78%,遠遠高于傳統(tǒng)教學模式。
圖3 兩種實驗教學模式的總體滿意度比較
通過以上研究發(fā)現(xiàn),在計算機操作系統(tǒng)實驗教學中引入了CBL-PBL模式教學法,實驗教學效果明顯勝過傳統(tǒng)教學模式,有利于學生對計算機操作系統(tǒng)知識點的把握和整體教學質量的提升,能增強學習的積極主動性,促進學生對專業(yè)知識的理解和掌握,讓學生在探索過程中享受樂趣,充分體現(xiàn)了“以學生為中心”的教育理念,因此在計算機操作系統(tǒng)實驗課程的教學改革中,應大力推廣CBL-PBL模式教學法。
但是,在實施CBL-PBL模式教學的過程中,依然存在一些具體的困難,對授課教師和學生都提出了更高、更多的要求。授課教師要做到由課程主導者向引導者的角色轉變,要引入與知識點相適應的案例,結合大綱問題的提出以及實施過程中對全局的掌控等。學生也需要做到由原來的被動接受知識向主動學習轉變。部分實驗內容對學生來說還有一定難度,既要有濃厚的學習興趣,還要有扎實的專業(yè)基礎??傊?,只有教師與學生密切配合,雙向發(fā)力,才能達到預期的教學效果。