摘要:本文通過分析30本操作系統(tǒng)教材,從核心內(nèi)容深度廣度、具體講授方法、教材章節(jié)安排、教材細節(jié)等方面指出存在的問題,其根本原因是對操作系統(tǒng)教學的相關研究工作太少,特別是缺乏課程標準方面的研究。
關鍵詞:操作系統(tǒng);教學方法;教材問題
文章編號:1672-5913(2010)08-0091-04
中圖分類號:G642
文獻標識碼:A
操作系統(tǒng)是高等學校計算機專業(yè)的核心骨干課程,是幫助學生建立對計算機系統(tǒng)運行機理的系統(tǒng)化認識的關鍵課程之一,此課程的學習過程是提高學生計算機水平的重要階段。但其教材和教學從歷史到現(xiàn)在一直存在很多問題需要探討解決。
20世紀80年代初期本人學習操作系統(tǒng)課程用的教材是文獻,參考書是文獻,當時就感覺到操作系統(tǒng)空洞抽象,難以理解。20世紀80年代中期本人承擔操作系統(tǒng)課程教學前,翻遍了可選的教材(文獻),最終選用的教材是文獻,主要考慮該教材比較結合實際,另外UNIX系統(tǒng)代表操作系統(tǒng)的先進技術開始流行。但當時學生的實踐環(huán)節(jié)條件跟不上,教師經(jīng)驗有限,再加上教材內(nèi)容繁雜,教學效果不夠理想。因此開始考慮選用講述操作系統(tǒng)一般原理的教材。
進入90年代情況有所改觀,一些比較有特色的教材(文獻)進入了可選范圍:文獻篇幅很多、內(nèi)容詳盡,但考慮課時及學生的接受能力有限,最終沒有選作教材;文獻內(nèi)容略少一點:文獻和文獻內(nèi)容比較適中;經(jīng)過權衡最后選擇文獻作為教材,教學效果得以改善。
20世紀90年代本人參加過幾次全國操作系統(tǒng)教學研討會,交流中大家普遍感覺操作系統(tǒng)課程內(nèi)容繁雜,概念多且抽象,不易理解,教師和學生都感覺到困難。很多高校的教師一直在尋求更適合的教材和教學方法。
進入21世紀又出現(xiàn)了一大批操作系統(tǒng)教材,文獻是其中的一部分,文獻講述操作系統(tǒng)的一般原理,文獻是講述UNIX/LINUX具體操作系統(tǒng)的。這些教材的作者在章節(jié)安排、講述內(nèi)容重點、講述方法等方面都在尋求創(chuàng)新或改變。但近期閱讀了從CNKI按照“操作系統(tǒng)教學”主題詞檢索出的30余篇關于操作系統(tǒng)教學和教材的文章(文獻為其代表),發(fā)現(xiàn)大家目前依然普遍認為操作系統(tǒng)還是一門比較難教難學的課程,大家還在尋求解決辦法。
筆者查閱、比較和分析了近30本操作系統(tǒng)教材的基礎上,歸納出了以下問題。
1 核心內(nèi)容深度廣度及具體講授方法的問題
CC2001、CCC2002乃至CC2004列出了操作系統(tǒng)課程的核心章節(jié),但這些章節(jié)到底應該包含哪些內(nèi)容、應該如何講授、哪些需要重點講授、講授到什么程度等并不明確。以并發(fā)與共享這樣的核心內(nèi)容為例,該如何講授、要求理解和掌握到什么程度,很多教材之間差異很大。
圖1為完成基本文件拷貝功能的并發(fā)拷貝程序,是比較簡單的:圖2為展示該程序運行過程的一種手段,對圖2的理解和掌握是檢驗學生是否掌握操作系統(tǒng)核心內(nèi)容的很好方法。

圖2中,假設D1讀比D2寫略快一點。其中D1、D2分別代表兩個不同的磁盤。s表示進程調度切換;ID表示磁盤中斷處理;第i次讀源文件的系統(tǒng)調用read(fdr,…)分為Ri和Ri兩段完成:第i次讀管道文件的系統(tǒng)調用read(fdp[0],…)分為RPi和RPi兩段完成,管道非空時RPi為空;第i次寫管道文件的系統(tǒng)調用write(fdp[1],…)分為WPi和WPi兩段完成,管道非滿時WPi為空;Wi對應第i次寫目的文件的系統(tǒng)調用write(fdw,…)。
操作系統(tǒng)核心內(nèi)容深度廣度及具體講授方法的問題還需要研究探討。這些在現(xiàn)有的各種操作系統(tǒng)教材中沒有見到。
2 教材章節(jié)安排的問題
盡管有了CC2001、CCC2002乃至CC2004,但操作系統(tǒng)教材的編者在決定教材的內(nèi)容、講述方法和深度廣度要求等方面具有較大的靈活性和自主性。文獻作為從國外引進的操作系統(tǒng)的經(jīng)典之作,與CC2004(就操作系統(tǒng)課程來說CC2004與CC2001幾乎一樣)有較大差異,在章節(jié)安排上與國內(nèi)的操作系統(tǒng)教材也有較大差異。國內(nèi)的教材大多按照操作系統(tǒng)內(nèi)核的四大模塊組織教材章節(jié)的,把存儲管理、設備管理、文件(系統(tǒng))管理三個模塊各安排為一章,比較一致,但每章內(nèi)節(jié)的組織有較大差異,每節(jié)講述的內(nèi)容及講述的深度差異更大。在章這個層次,進程管理部分的章節(jié)組織差異較大:如放在一章講授的教材有文獻(進程和處理機管理)、文獻(處理機管理)、文獻(進程管理)、文獻(進程機制與并發(fā)程序設計)、文獻(處理機管理)和文獻(進程管理);放在兩章講授的有文獻(進程管理、處理機調度)、文獻(進程及其管理、調度與死鎖)、文獻(處理機管理、進程通信)和文獻(進程與線程、處理機調度);放在三章講授的有文獻(進程描述與控制、并發(fā)控制——互斥與同步、死鎖處理)和文獻(進程描述與控制、進程同步與通訊、調度與死鎖);放在四章講授的有文獻(進程、線程與作業(yè)、中斷與處理機調度、互斥、同步與通訊、死鎖與饑餓)和文獻(進程管理、中斷與處理機調度、并發(fā)性:互斥、同步和通信、并發(fā)性:死鎖)。這也反映了這部分內(nèi)容的講述方法差異較大。
在作業(yè)管理及用戶接口章節(jié)的分類與歸并方面教材之間差異較大。有作業(yè)管理的教材有文獻,14,19,21,23-24,261;無作業(yè)管理的教材有文獻[11,13,15,18,22,25-28](文獻[22]有“操作系統(tǒng)接口”;文獻[25]在“1_3,3 Windows XP/2003命令行的使用”中介紹了Windows系統(tǒng)的命令和命令行解釋器:文獻在“9.6 shell程序設計”中介紹了操作系統(tǒng)外殼和接口;文獻在“第2部分應用和開發(fā)篇”介紹了UNIX系統(tǒng)的命令界面和使用;文獻有“第2章操作系統(tǒng)的界面”;文獻前五章講授UNIX系統(tǒng)的命令界面和使用方法)。作業(yè)管理的內(nèi)容是否沒有必要講?

如果作業(yè)管理省略不講,那么用戶接口是否可以省略不講?用戶接口講述操作系統(tǒng)的使用手段和方法,幫助學生了解如何在不同的層次使用操作系統(tǒng),建立對操作系統(tǒng)的感性認識。如果學生不會使用用操作系統(tǒng),就很難理解原理。有了感性認識才能加深理性認識,筆者認為,講解系統(tǒng)調用處理過程可以使學生理解系統(tǒng)的真實運轉過程。
3 教材的細節(jié)問題
在一些細節(jié)問題的講授方面,教材之間的差異就更大一些。
3,1文件系統(tǒng)
文件系統(tǒng)講述內(nèi)容及深淺差異很大。如沒有講述文件系統(tǒng)調用(打開、關閉、讀、寫)實現(xiàn)內(nèi)容的教材有文獻;有少量文件系統(tǒng)調用實現(xiàn)內(nèi)容的教材有文獻:講述文件系統(tǒng)調用實現(xiàn)內(nèi)容較多的教材有文獻;沒有講述記錄式文件結構及查找方式的教材有文獻:講述記錄式文件結構及存取方式的教材有文獻。
到底哪些內(nèi)容該講哪些內(nèi)容不該講?該講的內(nèi)容如何講?講到什么程度?筆者認為記錄式文件的內(nèi)容應該在數(shù)據(jù)庫或數(shù)據(jù)結構課程中講述,UNIX等流行的操作系統(tǒng)沒有實現(xiàn)記錄式文件;而流式文件系統(tǒng)調用(打開、關閉、讀、寫)的實現(xiàn)的講授是基本的,是很有必要的。掌握這些內(nèi)容有利于更好地理解數(shù)據(jù)結構,但要把握好講解的粗細程度。 一些概念術語的定義不統(tǒng)一,例如文件控制塊、文件目錄、文件目錄表、文件目錄項等。文件卷作為文件系統(tǒng)的基本概念,很多教材沒有介紹,只在文獻中出現(xiàn)過。另外RAID技術這樣的實用新內(nèi)容也只在文獻的設備管理一章出現(xiàn)。
3,2進程管理
互斥、同步和通信作為進程管理模塊的基本概念和基本內(nèi)容很容易和現(xiàn)實生活中的事例進行類比,應該是比較容易講解也比較容易理解的,但有些教材把它們的描述復雜化了。例如文獻中第42-44頁介紹互斥概念所引用的例子讓人感覺一頭霧水。很多教材(文獻等)在介紹引出臨界區(qū)和互斥概念時都引用了不同進程交替執(zhí)行修改共享變量的一條語句對應的三條指令的例子,通過這樣一個最簡單例子的分析讓學生理解產(chǎn)生臨界區(qū)和互斥問題的根本原因,同時可以幫助學生加深理解進程調度現(xiàn)場概念和進程調度工作過程,但這些教材基本上都用到了R1和R2兩個寄存器,問題被人為復雜化了,也難以解釋。本來是一條語句編譯成的三條指令對應的同一個程序段被不同進程交替執(zhí)行所產(chǎn)生的問題,引用一個寄存器就可以講清楚,無需要引用兩個寄存器。在最先給出此例子的文獻中進程調度章節(jié)內(nèi)容放在后面講述,在引出臨界區(qū)和互斥概念時因為學生沒有進程調度現(xiàn)場概念也不了解進程調度工作過程,不得不引用了R1和R2兩個寄存器,但有些后來出版的教材在進程調度章節(jié)內(nèi)容放在前面講述的情況下仍引用了R1和R2兩個寄存器就說不通了,難免產(chǎn)生抄襲的嫌疑。實際的系統(tǒng)中不同進程執(zhí)行例如countp=countp+1(甚至countp=countp-1)這樣一條語句對應的三條指令必然只用同一個寄存器,要準確清楚地講解臨界區(qū)和互斥問題必須要用到進程調度現(xiàn)場概念和進程調度工作過程知識,所以進程調度的內(nèi)容應該先講授。
關于并發(fā)程序的特性,文獻概括為“不可再現(xiàn)性、間斷性、通信性、獨立性”四點;文獻概括為“交叉性、非封閉性、不可再現(xiàn)性”三點;文獻概括為“間斷性、失去封閉性、不可再現(xiàn)性”三點;文獻概括為“動態(tài)性、制約性、并發(fā)性”三點;文獻概括為“失去程序的封閉性、程序和計算不在一一對應、不可再現(xiàn)性”三點等。這樣的不一致不應該出現(xiàn)。
大多數(shù)教材對生產(chǎn)者消費者問題及其解答的講述給學生的印象是信號量mutex用于生產(chǎn)者消費者之間需要互斥,特別是文獻第35頁明確寫出“生產(chǎn)者消費者之間還有互斥關系”。而實際上生產(chǎn)者消費者之間的互斥已經(jīng)通過兩個同步信號量解決,而mutex實際上用于解決多個生產(chǎn)者之間互斥和多個消費者之間互斥,這一點只在文獻中被明確指出。
3,3存儲管理
現(xiàn)有的教材存在頁號、頁面號等名詞的所指不一致及虛地址空間、虛擬存儲器等概念的定義不一樣等問題,很多教材沒有明確指出頁表放在哪里,是存放在PCB中嗎?實際操作系統(tǒng)中各個進程的頁表所占用的內(nèi)存是在堆上動態(tài)分配,如果不明確指出這一點,會讓學生甚至教師感覺迷茫。
4 結論
CC2001、CCC2002乃至CC2004主要的成果是詳細設計了整個學科的核心課程,計算機科學專業(yè)方向知識體系劃分為知識領域、知識單元和知識點三個層次,共有14個知識領域,132個知識單元,560個核心學時。CC2004把CS-OS操作系統(tǒng)課程作為一個知識領域劃分為8個核心知識單元和4個選修知識單元,進一步地還給出了每個知識單元的知識點和學習目標。但這仍然是粗線條的。每個知識點到底要講解到什么程度?要求學生掌握到什么深度?衡量標準是什么?評價指標是什么?到底需要多少學時?細節(jié)問題:例如文件系統(tǒng)核心知識單元知識點中包含“文件中的數(shù)據(jù)和元數(shù)據(jù)”,“文件中的元數(shù)據(jù)”到底指什么?現(xiàn)有的操作系統(tǒng)教材中幾乎見不到這個概念,“元數(shù)據(jù)”是否是操作系統(tǒng)課程應該講授的內(nèi)容?用戶接口或作業(yè)管理的內(nèi)容是否應該講解?包含在哪一個知識單元里?
存在上述問題的根本原因是缺乏對操作系統(tǒng)的知識體系結構和標準化方面的研究,解決問題的根本途徑是加強操作系統(tǒng)的教學研究工作,而這種研究還需要由國家級的專業(yè)教學委員會來組