摘要:本文針對高等院校計算機操作系統課程的教學研究和課程建設,分析了教學對象和職業領域對課程內容和人才能力的要求,分別就學生、教師對操作系統的看法和關系進行了討論,同時根據作者的實踐過程,就建立操作系統課程體系和課程建設的問題給出了建議。
關鍵詞:操作系統;課程體系;課程建設;教學改革
中圖分類號:G64 文獻標識碼:A
文章編號:1672-5913 (2007) 19-0035-05
Pedagogical Research on Operating System
Naiqi Liu,School of CSE,
University of Elec. Science Tech. of China, Chengdu, Sichuan, 610054
Abstract:Aim at Operating System course teaching and curricular development in universities, author analysis the demand of teaching object and requirement in the professional domain. The issues between students, teachers and Operating System course are discussed. Based on author’s practice and experience, the suggestions on curricular architecture and development is made.
Keywords:Operating system;curricular architecture;course development
眾所周知,“計算機操作系統”是計算機學科最重要的專業基礎課程,所有高等院校中的計算機科學與技術專業都毫無例外地開設了計算機操作系統課程,并作為專業核心課程給予重點建設。而且,隨著計算技術進入各個行業,與信息技術相關的專業,如:通信工程、軟件工程、信息安全、自動控制,等,也將計算機操作系統列入到專業課程計劃中。此外,幾乎所有的高職高專、中職學校中的計算機應用和軟件工程相關專業,操作系統也是專業技術課程中的一項重要內容。操作系統已經從神壇上走下,將其神秘和抽象轉變為平常和實際。人人都希望掌握操作系統這個最核心、基礎的計算機系統軟件,希望在操作系統支持的平臺上進行自己的工作和設計開發。然而,應用對操作系統的期望和需求不盡一樣,不同高校的培養目標和對象具有較大差異性,計算機操作系統課程的教學內容也必須根據不同的教學對象進行設計、組織和配置,讓學生真正能夠進入操作系統、熟悉操作系統、掌握操作系統和應用操作系統。
1關注市場對操作系統技術的需求
市場需求和技術發展是操作系統自身發展的推動力,對操作系統的關注者歷來分為三大群體:其一是操作系統的設計者;其二是基于操作系統的開發者;其三是操作系統的使用者。三類群體對操作系統的期望和目的是不完全一樣的,所獲取和掌握的技術范圍和知識架構也是不一樣的。作為教育者,尤其是計算機操作系統課程的教師要掌握的知識結構則與這三類群體密切相關。
操作系統的設計者面對著飛速發展的計算機和智能設備的硬件資源和日新月異的應用需求,他們考慮的是如何最大限度地利用這些資源,構建一個安全可信的公共系統平臺,提供更可靠、方便、完善的服務。承擔的是一種“承上啟下”的工作,即向上為開發者和用戶提供服務,向下為硬件制造商提供支持和擴展。設計者的知識結構是廣泛的,硬件體系結構和軟件體系結構的知識是基本的要求,對操作系統理論、架構、算法和設計也具有較高的造詣,大型軟件工程的經驗也是不可缺少的。這類人才的培養的過程是較長期的,從學校出來的人,經過基礎階段、研究階段、實踐階段才能夠積累設計和開發的經驗,基礎知識的奠基無疑是很重要的。能不能從事操作系統設計,修改和更新操作系統,構建和設計嵌入系統控制軟件等都是一種期望。
基于操作系統的開發者是將操作系統推而廣之的重要群體,他們以各類操作系統為平臺開發其自己的系統、軟件和產品,這些產品和軟件依賴于相關的操作系統,也是操作系統應用的支撐和拓展。作為開發人員,面對的是確定開發平臺、選擇開發工具、利用開發資源。相信這個系統平臺是安全可靠的(可信賴的),也期望操作系統的功能更加強大,能夠為應用開發提供更多的系統資源和調用方式。他們關心的是與操作系統(軟件與硬件)的接口和資源調用,應用程序與系統的交互,以及系統運行機制和效率。這一類知識結構對開發者是非常重要的,不僅對于計算機專業的學生,對于其他專業的學生學習計算機操作系統也是非常重要的。
廣大的普通計算機和智能終端(設備)的用戶,他們面對的、所認識的操作系統首先是使用,如何把面前的這個系統用熟,熟能生巧、巧能生華。哪些系統功能和系統支持的軟件對自己是非常重要的、必需的?如何方便地使用?如何快速地得到回應?如何對工作有輔助支持?出現故障如何快速恢復?如何防御惡意程序的侵擾?這類應用知識在面向職業的需求中得到極大重視,也是實用型人才培養中很重要的一環。
對于進入高校相關專業學習的學生,他們無疑是未來潛在的系統設計者、系統開發者和系統使用者,從學校學習的知識奠定了一個基礎。但是學校的教學對象(從另一個角度來說是進入學校的學生生源)是有差異的,并非每一個學生都會成為操作系統的設計者,更多的是基于操作系統的開發者和使用者,認識到這種金字塔式的人才結構,就需要針對不同的教學對象研究其知識結構的構建,課程知識點的關聯和教學內容的側重。另外還要分析現代操作系統究竟包含哪些內容?不同的對象需要掌握哪些不同的知識結構,掌握的深度如何?進行何種能力鍛煉?課程內容和講授方法應當有哪些不同?這樣,知識體系和課程體系就明晰了。所以,教學研究是教學改革和提高教學效果必須開展的工作。
2研究操作系統課程對象的需求層次
每年從高等院校畢業的計算機和相關專業的學生,都要求熟悉和掌握操作系統的知識,而學習是需要有動力的,“要我學”和“我要學”有根本的區別。那么,促使學生學習操作系統的動力在哪里?從狹義的觀點來看,考研和就業是本科生目前兩個最實際的目標,操作系統課程涉及的內容對學生來說都十分重要,但對不同目標的實際要求又有不小的區別。
考研是一條指揮棒,操作系統課程內容成為計算機專業考研內容中的重要部分,為達到既定目標,不少人已經分析和研究了歷次考研的考題和內容分布,分別包含了傳統操作系統理論、模型、結構和算法,以及涉及四個基本模塊(進程、存儲、文件、設備)的知識。對于要考研的學生來說,課堂知識是不夠的,必須另有一套學習計劃。而IT行業對開發人員的要求,則重在基于操作系統的開發,要求學生學完這門課程后,除掌握基本知識外,能夠利用操作系統提供的支持進行系統和應用開發設計。操作系統課程內容因此就擴展到軟件架構、系統調用、應用接口(API調用等)、程序設計與操作系統的關系,等,這也是對學生操作系統應用能力要求。可見,理論與實踐在這里又一次交匯。由于課程教學時間有限,課程內容的組織和實施就是一個值得研究的問題。
在教學內容上,IEEE/ACM長期強調理論、抽象和設計之間的關系,要求教師理解課程體系中的點、線、面的關系。這里,理論到抽象或者抽象到理論是理論研究的過程,而抽象到設計或者理論到設計是工程實現的過程。然而,我們的教學內容過于抽象,缺乏抽象到設計、抽象到應用的過程。這樣,學生面對的操作系統仍然是一個模糊的框架,甚至框架都不甚清楚,仍然是“知其然而不知其所以然”。例如:操作系統到底是如何被引入計算機系統的?操作系統軟件模塊與系統硬件模塊的交接點是怎樣的?程序是如何從順序執行過渡到并發或者并行執行的?進程的切換到底是怎樣進行和完成的?一個操作系統中是否包含了所有調度算法?內存的分頁與實際的內存容量和地址有什么關系?操作系統對接口的驅動是怎樣進行的?學生往往知道了概念,但實際動手(設計、編程、實驗)時又往往不知所措。
有人會說,操作系統就是講原理的,應用不在其例。實際上,學習的目的就是為了用,只有知識而不用,知識便會老化,也不會轉變為能力,因為知識并不等于能力。自然,大學四年中學生不可能學到所有的東西,需要掌握的:一是基本知識,二是基本技術(如編程),三是開發工具(人利用工具而生存),四是應用技能。本科生需要培養獨立和協同工作能力。而研究生需要培養獨立和協同研究能力。這樣,操作系統在本科階段的課程內容是原理與應用的交叉,根據不同培養對象在理論與應用之間分配權重。例如:鼓勵考研者加強結構、模型、算法、過程的學習;對應用開發者要求掌握操作系統的系統資源,熟悉系統編程、開發包與開發工具、系統控件,等;針對使用者強調“我能用操作系統做什么”,熟悉系統管理,系統維護和故障處理。“把操作系統玩兒轉”(學生語言)不愁找不到好的工作,這就是事實,也是IT企業對開發和應用人員的基本期望。
在我們的教學中有一個例子,即計算機專業的學生學習計算機是“從里往外學”,其他專業的學生則是“從外往里學”。也就是說,計算機專業的學生除了會使用計算機外,還應當能夠“改進”、“增強”和“設計”計算機。對于操作系統也是這樣。不過由于培養對象的差異性以及主流操作系統產品的壟斷性,人們更多地傾向于應用。但需要提醒學生的是,應用不僅僅是會使用,而是“創新性”的使用。
3操作系統課程教師的責任
對于承擔知識傳授的教育工作者,面對著迅速發展的信息技術和計算資源,面臨自身的知識更新。信息社會提供了信息獲取和知識學習的多種途徑,在對新信息、新知識的獲取方面教師與學生處在同一條起跑線上,唯一區別僅在于對獲取信息的處理和使用。教師也每天在用Windows或者UNIX/Linux系統,面對不斷更新的操作系統技術。
作為講授操作系統課程的教師,為了上好這門課,我們認為需要注意以下幾個方面:
其一,根據自己的教學和科研方向,建立自己的知識結構。要非常熟悉所講授的操作系統課程的內容,清楚教學知識點和系統框架,明晰技術點和案例。
其二,了解系統硬件。把操作系統和計算機體系結構(或組成結構)結合起來,沒有對體系結構和硬件組成的理解,不能很好地解釋操作系統的架構和實現。所以,以下系統硬件概念是與操作系統密切相關的,例如:寄存器、時鐘、中斷、堆與堆棧、緩沖區、存儲結構,等。當然,這些概念可以在前導課程中講授,在操作系統課程中復習。
其三,了解系統軟件。把操作系統作為一個大型軟件架構,來看它的各個模塊,以及各個模塊之間的關系。以下概念與軟件相關,例如:數據結構(鏈表、結構、指針、嵌套,等)、程序設計(順序、并發、并行結構)、參數傳遞(堆棧、消息、數據塊)、調用方式,等。有的概念可以在前導課程中解決,而有的內容則需要在操作系統課程中給予詮釋。操作系統軟件模塊之間的調用和參數傳遞非常頻繁,與內存占用關系非常緊密,這是關鍵所在。但從另一個角度,需要對學生講清楚:操作系統實際上也是一個數據結構和表格處理程序,它每時每刻都在創建、填寫、檢測、判斷、清除、恢復相關表格中的內容,以維持系統的正常運行。
其四,熟悉操作系統平臺。教師一定要熟悉當前的主流操作系統,至少是Windows,最好加上Linux。這兩個系統是可以同時安裝在一臺個人計算機上的(實際可以安裝四個不同的操作系統)。了解和熟悉系統對內(與計算機系統硬件)、對外(外部資源和應用支持)的關系、結構和定位。這樣,當學生問到一些實際問題,就可能迎刃而解。同時,自己嘗試去做一些有關操作系統的實驗,設計經驗對教師來說是極大的財富,因為經驗只能意會,而不可言傳。
其五,作為教師還需要關注國際著名軟件廠商,如微軟、IBM、Sun、Bea等公司在操作系統開發上正在進行的相關工作,這些工作也許是十年以后會成為主流的技術和平臺。也要經常去看看IEEE的Operating System Review期刊,發現一些新的思路(如未來的操作系統“新”在哪里?什么可以代替操作系統?EFI與固化操作系統,等)。不過,新技術并非成熟技術,可以在課程內容的展望部分引導學生(特別是研究生)去思考分析,拓展學生的視野,也增強教師自己的知識結構。
在現代教育環境下,教師要引導學生學習,而不是灌輸知識。根據培養目標和教授對象的不同,教師有必要提醒和引導學生,分析專業發展趨勢和職業期望,幫助學生建立一個適合自己個人發展的計劃,形成一個適合自己的知識架構和能力架構,并按照這樣的計劃逐步實施。這種適合個人的計劃可以將其他課程都包括進來,哪些知識點是構成本專業的基本知識結構?哪些課程是專業核心課程必須要拿到學分的?哪些課程對培養能力有特殊的要求?例如:考研的計劃或者就業的準備,不同的計劃就會有相應的知識儲備和積累,知識積累就會產生互補和互促的現象,反過來又加強了知識的記憶。儲備和積累,厚積而薄發,就可以應變不同的機遇,也增加了學生自信的基礎。
4操作系統課程建設
上好一門課程只是一個良好的開端,保持這門課程持續發展,形成一門具有特色的課程,一門受學生歡迎的課程,則需要進行課程建設。如果從教學評估的角度來看,不需要各個學校千篇一律、千人一面。只要有它自己的專業優勢、學科優勢和特色,就是成功的,課程建設也是這樣。操作系統課程可以很好地體現一種“建設”過程,這個過程就是理清思路、建立體系、明晰方向、落實責任。根據我們的理解和實踐,如下一些工作是重要的。
(1) 建立一種課程體系
什么是課程體系?體系(Architecture)這個詞在建筑學中體現了一種構建,一種層次化、模塊化的美學關聯。在教育學中,廣義的指圍繞專業培養目標配置相應的課程,保證專業知識的傳授和實踐能力的鍛煉,同時建立一整套相關的教學計劃、質量保障、教學方法、教材建設、評價體系,等。而狹義可專指一門課程本身實施的架構和相關支撐,確定教學目標,構建課程平臺、知識層次與模塊,平臺為共性,層次和模塊為個性。課程體系應當以學生的發展為本,建立科學的、可操作的架構。
目前,無論重點院校和普通院校的計算機專業本科都開設了計算機操作系統課程,相關碩士專業學科也大多數設置了操作系統課程,高職高專以及其他相關專業根據不同情況也開設了操作系統課程。顯然,各自的培養目標不同,培養對象不同,角色需求不同,課程的教學層次和內容也需要不同,因此課程體系的設置和教材選用的原則應當是保證專業基礎,緊跟發展潮流,必須適應分類培養的需要。
研究生和本科生的操作系統課程內容和要求是不一樣的,如果在本科階段學過操作系統的學生進入研究生階段再學操作系統,如果課程的內容沒有變化,那是教學和教師的失誤。因此,需要研究和分析操作系統課程的教學層次。
“操作系統原理”是大多數學校本科階段的主要課程,為了解決應用、實踐和方向等問題,不少學校還分別開設了“操作系統實驗”、“操作系統應用”、“嵌入式操作系統”,等,以及針對主流操作系統的“Windows操作系統”,“UNIX/Linux系統”、“Symbian系統”等,這些課程都是操作系統課程體系中的一個平臺或模塊,不同的學校根據不同的教學計劃和時數,可以選擇體系中的一個點或線實施和推行。
(2) 規劃好課程教學內容
為保證課程體系中內容的關聯性,不妨將操作系統涉及的知識結構分解,把共性的和個性的內容提取出來,在不同的平臺和模塊之間達成關聯,這樣,對學生會起到舉一反三的效果。例如:進程和線程的概念。無論在系統硬件、軟件,還是在某個專門的操作系統課程中都是重要的概念,不同的是,對進程講到什么程度和如何講解。比如:進程與程序的對應與區別,進程的生命周期,進程切換的過程,進程狀態的構建與派生,進程與線程的對應,如何觀察和顯示系統的進程?如何在應用程序中引發進程切換?這些問題在原理課程、應用課程、專用系統課程(如Windows/Linux)中的講授深度是不一樣的。有的是“入木三分”,有的是“點到為止”,有的則是“敬請參閱”。這樣就滿足了不同的授課對象的理解要求,能收到良好的效果。
在規劃教學內容的同時,要認真地準備相關內容(章節)的思考題和問題,這對課堂教學是重要輔助。要鼓勵學生多提問題,哪怕有的問題教師暫時不能回答,或者有的問題沒有標準答案或者沒有答案,這對于促使學生自行思考、引起學生聯想和激發學生興趣有很大幫助。同時,也可以找出教學中的問題,只有去發現它,才能去解決它。例如:為什么操作系統軟件的尺寸越來越大,安裝環境要求越來越高?操作系統工作一段時間后為什么會越來越慢?操作系統的系統命令有什么用,怎樣在程序中使用它們?為什么進程切換程序要采用匯編語言編寫?線程對操作系統和處理器來說是一樣的嗎?多線程編程和多線程調用的關系是什么?等等。所以問題和思考題也是課程內容準備的一個方面。
操作系統課程不可能覆蓋所有的計算機機型、體系架構和特殊應用,重要的是應當明白操作系統結構中的共性問題和特性問題,操作系統理論與技術的關系,了解什么是操作系統中相對穩定的,什么是可變的,什么是特殊的,從而抓住操作系統的核心,在有限的時間內給學生講述清楚。
(3) 配置好課程實驗
操作系統的實踐環節是歷來討論的重點,通常通過模擬演示、實驗、課程設計來理解操作系統的教學內容。目前,學生面對的操作系統仍然以個人計算機操作系統為主,如Windows和UNIX/Linux,很少能夠接觸到大型操作系統和其他系統,如Solaris、MacOS、Symbian等。而課程內容中(如原理課中),有一些是大型操作系統或專用系統中的技術,很難通過具體環境展示和體驗。這些內容(如算法、結構、過程、效果等)可以通過教學型系統(如Minix、Xinu或Nachos等)、建立模擬教學環境或者模擬演示實驗學習理解,另一些內容可以在現有系統平臺上通過設計實驗加深理解(例如,多進程調度程序)。當然,在實踐環節上,要求學生盡可能熟悉當前的主流操作系統。
對于應用型為主的學校,可以要求學生通過程序設計來與操作系統發生關系。由于操作系統功能的更新和增強,用戶能夠基于操作系統做的工作越來越多、越來越強。而基于操作系統的編程,是最直接地熟悉、使用和理解操作系統內容的過程。例如:在應用程序中直接調用操作系統提供的系統調用、API和系統命令,對系統內部部件(如內存)或者接口(如USB)進行編程,編程實現對系統資源(如進程表)的獲取和顯示。甚至更進一步,能夠進行操作系統設備驅動程序的編寫,鼓勵學生使用系統開發工具(如SDK、控件等)。這些課程設計,可以反復作為設計案例,也可以逐步擴大,作為本科生畢業設計的課題。
另一類應用實驗,是讓學生盡可能地熟悉操作系統功能,了解操作系統正常運行的基本條件和環境,解決系統可能出現的故障(可以用人為故障來做實驗),防止惡意程序對操作系統的干擾,以及解決操作系統和網絡相關的一些問題。這對提高學生的職業技巧有很好的啟迪。
(4) 教與學的互動
很多教學改革課題中都談到了教師與學生的互動,其實互動是一個過程,是一個彼此參與的過程,這個過程既可以在課堂上,也可以在課堂外,在課程建設中實施。互動還要求參與的雙方都負起自己應付的責任,才能真正促進教學效果的改善,一味指責教師或者學生的方式都是不適合的。
互動的過程在課程建設中能夠很好地體現出來。例如,協助教師進行實驗的準備和設計開發、演示課件的制作、案例的復現,等,學生參與到這個過程中,對提高他們對操作系統的興趣,深入掌握操作系統知識,鍛煉實際動手能力有很大的好處。這些實驗課題、案例等反過來又進入課程教學的案例庫,成為該課程的新的教學資源,積少成多,課程資源的積累就會產生不容忽視的效果。當然學生的參與可以是個人和團隊,課題也可以以項目的方式下達。
此外,至于教材(教學參考書)的選擇和編寫、教學網站的建設與維護、教學梯隊的建設,等,是課程建設中的其他一些問題,在條件和時機成熟時可以逐步解決。而對于只有一兩位教師上操作系統課程的情況,首先還是把課上好。
5結束語
進入21世紀以來,為了適應各行各業信息化的需求,適應各種各樣智能信息終端的需求,操作系統的發展異常迅速,傳統操作系統的概念、結構和實現技術今非昔比,它已經從計算機領域拓展到所有的智能信息終端。目前操作系統仍然以一個龐大的、強有力的家族存在于信息社會。多核計算結構的推出更新了一個硬件平臺,未來的操作系統必然會適應這類多核結構(同構多核和異構多核),而由于處理單元(部件)的多元化,操作系統設計的并行性就真正體現出來了(有別于傳統的單CPU情況下的并發方式),由此,并行性、虛擬性交互性和安全性將在未來操作系統中得到更多體現。傳統穩定成熟的技術和未來創新的技術,都將體現在操作系統這個軟件中,關鍵是這些知識如何讓學生學習和掌握。
教學研究是提高教學質量和教學效果的重要一環,在現今以科研導向的現狀下,作為未來科研人才的學生仍然需要走過教學(知識學習)這樣一個過程,如何將知識學習和能力培養真正結合,需要不斷地研究和實踐。作為操作系統課程的教學研究、改革和實踐,很多老師做了非常重要的工作和貢獻,如陳向群(北大)、向勇(清華)、朱貴良(華北水院)、周蘇(浙大)等教授。教學研究必須給予重視,必須規劃、實施和持續。
大學是一個智慧與啟迪的匯集點,不斷有人進來,不斷有人出去,帶進新的思想、創意和方向,帶走精神、經驗和創新,隨著信息社會的日新月異,高等教育和教學研究也當與時俱進。
參考文獻
[1] Remzi H. Arpaci-Dusseau. CS 736 project highlights from U. Wisconsin[J]. Operating Systems Review, (41):54-55, ACM-SIGOPS, 2007.
[2] 劉乃琦. 操作系統發展與課程建設[J]. 第九屆全國操作系統課程研討會. 煙臺大學學報,(20):1, 2007.
收稿日期:2007-09-01
個人簡介:劉乃琦(1950-),男,四川成都人,教授,學士,研究方向:操作系統,系統與網絡安全技術,計算機應用技術。