劉衛(wèi)東等
摘 要:系統(tǒng)能力培養(yǎng)是提高計算機專業(yè)本科教學(xué)質(zhì)量和水平的一個重要方向。本文提出了系統(tǒng)能力培養(yǎng)的基本概念和內(nèi)涵,介紹了清華大學(xué)計算機科學(xué)與技術(shù)系在計算機系統(tǒng)能力培養(yǎng)方面所做的工作和實踐效果,討論了課程體系建設(shè)和改革的關(guān)鍵內(nèi)容,給出了一種加強計算機系統(tǒng)能力培養(yǎng)的教學(xué)方案。
關(guān)鍵詞:系統(tǒng)能力;課程體系;計算機專業(yè)
2006年,國務(wù)院發(fā)布《國家中長期科學(xué)和技術(shù)發(fā)展規(guī)劃綱要(2006-2020年)》,將“核高基”列入國家重大科技專項?!昂烁呋笔呛诵碾娮悠骷⒏叨送ㄓ眯酒盎A(chǔ)軟件產(chǎn)品的簡稱,其被列入國家重大科技專項,一方面體現(xiàn)了它們在國民經(jīng)濟發(fā)展中的重大作用,另一方面也折射出我國在這一領(lǐng)域內(nèi)與世界先進水平存在較大差距。人才培養(yǎng)是科技進步的基礎(chǔ),反思我們在該領(lǐng)域基礎(chǔ)知識教學(xué)中的不足,改進我們的培養(yǎng)手段和方法,培養(yǎng)出具備創(chuàng)新能力的高素質(zhì)人才,是值得教育界探討的話題。
“核高基”是計算機系統(tǒng)的核心和基礎(chǔ)。盡管我國在計算機教學(xué)領(lǐng)域取得了長足的進步,但主要體現(xiàn)在大規(guī)模的應(yīng)用型人才的養(yǎng)成,沒有規(guī)?;囵B(yǎng)出能夠深入理解并掌握計算機系統(tǒng)核心、具備引導(dǎo)行業(yè)發(fā)展能力的人才。因此,建設(shè)新的計算機專業(yè)課程體系,著重培養(yǎng)具備計算機系統(tǒng)能力的高素質(zhì)人才是我們的任務(wù)。
計算機系統(tǒng)能力是指能自覺運用系統(tǒng)觀,理解計算機系統(tǒng)的整體性、關(guān)聯(lián)性、層次性、動態(tài)性和開放性,并用系統(tǒng)化方法,掌握計算機硬軟件協(xié)同工作及相互作用機制的能力。系統(tǒng)能力包括系統(tǒng)分析能力、系統(tǒng)設(shè)計能力和系統(tǒng)驗證能力三個方面。系統(tǒng)分析能力就是給定系統(tǒng)結(jié)構(gòu)和輸入,分析系統(tǒng)輸出的能力;系統(tǒng)設(shè)計能力就是給定系統(tǒng)輸入和輸出,綜合出系統(tǒng)結(jié)構(gòu)的能力;系統(tǒng)驗證能力就是給定系統(tǒng)結(jié)構(gòu),驗證系統(tǒng)結(jié)構(gòu)與功能符合的能力。三個方面相輔相成,共同構(gòu)成計算機專業(yè)本科畢業(yè)生的基本能力和專業(yè)素養(yǎng)。
一、課程體系現(xiàn)狀分析
計算機專業(yè)課程體系中,設(shè)置了大量與計算機系統(tǒng)相關(guān)的課程,如數(shù)字邏輯電路、匯編語言程序設(shè)計、計算機組成原理、計算機系統(tǒng)結(jié)構(gòu)、編譯原理、操作系統(tǒng)、微計算機接口、嵌入式系統(tǒng)等。這些課程的總體目標(biāo),是建立起完整的計算機軟硬件系統(tǒng)的知識結(jié)構(gòu),在課程體系中占有重要的地位。
然而,大量的系統(tǒng)類課程的學(xué)習(xí),并沒有給學(xué)生帶來計算機系統(tǒng)能力的全面提升。同學(xué)們普遍反映,對于計算機系統(tǒng)還處于“只見樹木,不見森林”的狀態(tài),對于計算機各個子系統(tǒng)有比較深入的了解,但對各子系統(tǒng)之間的相互作用的關(guān)系則了解不深,也不清楚各子系統(tǒng)間的銜接機制。
深入剖析這一現(xiàn)象,我們認(rèn)為,現(xiàn)有的計算機專業(yè)課程教學(xué)中,普遍存在以下幾個方面的問題。
(1)教學(xué)內(nèi)容上,各門課程獨立規(guī)劃、獨立教學(xué),造成了知識體系中知識點冗余和銜接關(guān)系脫節(jié)。一方面,每門課程強調(diào)自身知識體系的完整性和系統(tǒng)性,造成一些知識重復(fù)講述;另一方面,各課程之間知識點缺乏前后銜接和有效整合,難以形成完整的計算機系統(tǒng)知識體系。
(2)教學(xué)方法上,各課程采取分析式教學(xué)方法較多,突出系統(tǒng)原理的講解,而限于條件的不足,缺乏對基本完整計算機系統(tǒng)較為全面的說明。造成的結(jié)果是學(xué)生掌握了基本概念,但難以轉(zhuǎn)化為設(shè)計完整計算機系統(tǒng)的基本能力。
(3)實驗手段上,基本側(cè)重于對原理的簡單驗證,而缺乏對復(fù)雜系統(tǒng)的綜合設(shè)計實踐。雖然小規(guī)模實驗可以達到讓學(xué)生基本理解掌握系統(tǒng)運行原理和初步具備系統(tǒng)開發(fā)能力的目的,但由于缺乏足夠的工程工作量,使得復(fù)雜系統(tǒng)中存在的較為深刻的問題難以暴露。因而,學(xué)生雖然經(jīng)過了訓(xùn)練,但卻因訓(xùn)練強度不足,不能對系統(tǒng)有較為深刻的認(rèn)識和完成具有工程規(guī)模的系統(tǒng)級開發(fā),甚至是對計算機系統(tǒng)有“盲人摸象”的感覺。
計算機系統(tǒng)本身具有整體性、關(guān)聯(lián)性、層次性、動態(tài)性和開放性等特點,但由于其復(fù)雜性,如果課程體系中各課程之間缺乏有效溝通和相互協(xié)作機制,就會造成學(xué)生系統(tǒng)能力培養(yǎng)和訓(xùn)練上的不足。因此,對課程體系改革勢在必行。
二、面向系統(tǒng)能力培養(yǎng)的課程體系建設(shè)
為了彌補計算機系統(tǒng)專業(yè)課程教學(xué)中存在的這一不足,加強專業(yè)課程中的系統(tǒng)能力培養(yǎng),結(jié)合計算機類專業(yè)教學(xué)指導(dǎo)委員會計算機系統(tǒng)能力培養(yǎng)的相關(guān)要求,有必要對計算機專業(yè)課程體系進行改革。其目標(biāo)確定為:將計算機系統(tǒng)類課程在教學(xué)理念上統(tǒng)一貫徹“注重系統(tǒng)、強調(diào)實驗、培養(yǎng)能力”三個方面;將教學(xué)內(nèi)容進行統(tǒng)一規(guī)劃,為同學(xué)們構(gòu)建完整系統(tǒng)的知識體系和知識結(jié)構(gòu);并從工程教育的角度,探索一體化設(shè)計課程體系,以及原理性與工程性結(jié)合、分析式與綜合式互動的教學(xué)方法;實驗手段上注重教學(xué)載體和實驗平臺的統(tǒng)一,最終實現(xiàn)學(xué)生能夠基于一個指令集系統(tǒng),自主設(shè)計一臺功能計算機、一個操作系統(tǒng)核心、一個編譯系統(tǒng)的教學(xué)目標(biāo),切實使學(xué)生全面掌握計算機系統(tǒng)的知識點,并能融會貫通,培養(yǎng)計算機系統(tǒng)的設(shè)計能力。
為達成改革目標(biāo),我們在教學(xué)內(nèi)容規(guī)劃、實驗體系設(shè)計、實驗平臺開發(fā)等方面開展了一系列的工作。
1.統(tǒng)一規(guī)劃教學(xué)內(nèi)容和教學(xué)方法
根據(jù)課程體系改革目標(biāo),我們首先選擇計算機系統(tǒng)類課程中的數(shù)字邏輯電路、匯編語言程序設(shè)計、計算機組成原理、操作系統(tǒng)、編譯原理5門核心課程,組建計算機系統(tǒng)類課程群。以ACM發(fā)布的計算機專業(yè)課程知識體系為藍本,對照我系課程體系中的相關(guān)教學(xué)內(nèi)容,查找各課程知識點和教學(xué)內(nèi)容的不足,各課程進行補充和完善,注意各課程教學(xué)內(nèi)容間的銜接。具體調(diào)整內(nèi)容如下表所示。
課組內(nèi)容調(diào)整與優(yōu)化表
課程名稱 主要調(diào)整/優(yōu)化內(nèi)容
數(shù)字邏輯電路 使用可編程芯片的入門級以上到部件級以下的設(shè)計實驗(包括多路選擇器、基本組合電路/時序電路以及綜合實驗),以及相應(yīng)的EDA工具訓(xùn)練,為處理器實驗奠定部件設(shè)計與工具應(yīng)用基礎(chǔ)
匯編語言程序設(shè)計 (1)強化了匯編語言作為處理器軟硬件接口、作為計算機系統(tǒng)結(jié)構(gòu)規(guī)格的內(nèi)容講解
(2)增加了MIPS32指令集部分,以及相應(yīng)的中斷/異常處理、虛存管理等內(nèi)容(包括其在匯編層面的表示)
(3)增加了典型C代碼在匯編層面的表示以及反匯編等內(nèi)容
計算機組成原理 (1)MIPS32指令系統(tǒng)設(shè)計及分析
(2)簡單計算機系統(tǒng)設(shè)計和實現(xiàn),該計算機系統(tǒng)的CPU至少能夠支持MIPS指令集的一個子集,具體實現(xiàn)可以是多周期或者是指令流水方式,CPU必須能夠支持中斷,包括軟中斷和硬中斷,完成中斷請求、中斷響應(yīng)和中斷服務(wù)及返回的全過程
(3)虛擬存儲管理中TLB的作用及組成
操作系統(tǒng) (1)以X86和MIPS32指令集/處理器作為操作系統(tǒng)的目標(biāo)平臺
(2)強調(diào)操作系統(tǒng)原理與實驗的結(jié)合,要求在實驗中完成一個簡化但必須是在真實硬件上能工作的小操作系統(tǒng),并實現(xiàn)操作系統(tǒng)的核心算法,從而加深對原理的理解
(3)強調(diào)各個實驗的核心算法形成一個有機整體,后面的實驗會用到前面實驗的代碼,并最終形成一個完整的小操作系統(tǒng)
編譯原理 (1)以MIPS32指令集/處理器作為編譯器的目標(biāo)平臺
(2)強調(diào)編譯技術(shù)與計算機系統(tǒng)整機的關(guān)聯(lián),從編譯程序能發(fā)揮的作用及它在整個計算機系統(tǒng)中的位置等角度,將計算機系統(tǒng)整機概念貫穿起來,充分理解編譯程序/系統(tǒng)與其他系統(tǒng)類程序或工具之間的聯(lián)系
(3)強調(diào)編譯技術(shù)與計算機系統(tǒng)使用的關(guān)聯(lián),充分理解通過編譯優(yōu)化可以使計算機系統(tǒng)發(fā)揮更有效的作用(與操作系統(tǒng)的角度不同),也要理解編譯技術(shù)在這方面的局限性
在理順教學(xué)內(nèi)容的基礎(chǔ)上,各課程以完成基本計算機系統(tǒng)設(shè)計和實現(xiàn)為教學(xué)目標(biāo),改進教學(xué)方法。在加強原理性知識講解的同時,強化工程化實現(xiàn)方法的訓(xùn)練,力求學(xué)生在系統(tǒng)原理和工程實現(xiàn)方法兩方面均有收獲。
2.統(tǒng)一規(guī)劃課程實驗體系
計算機系統(tǒng)能力培養(yǎng)中,實踐占有很大的比重,是學(xué)生運用所學(xué)的原理知識,解決實際計算機系統(tǒng)設(shè)計問題的過程,更是檢驗教學(xué)效果的重要手段。然而,計算機系統(tǒng)是一個復(fù)雜的巨系統(tǒng),要讓學(xué)生在有限的時間下完成教學(xué)和實踐內(nèi)容,需要我們精心設(shè)計教學(xué)實驗體系,圍繞教學(xué)改革目標(biāo)設(shè)置各課程的階段子目標(biāo)和相應(yīng)的實驗內(nèi)容,完成模塊設(shè)計和實現(xiàn)后,再通過綜合實驗來最終集成,形成一個完整的計算機系統(tǒng)設(shè)計和實現(xiàn)。
根據(jù)這一思路,我們在各相關(guān)課程中調(diào)整原有的實驗體系和實驗內(nèi)容。將課程實驗作為最終綜合實驗的模塊或基礎(chǔ),既能鞏固課程中學(xué)習(xí)的原理性知識,又能作為整體綜合實驗的模塊使用,實現(xiàn)實驗體系的遞進化。
我們以操作系統(tǒng)的實驗體系為例介紹其設(shè)計思想。在清華大學(xué)計算機科學(xué)與技術(shù)系操作系統(tǒng)課程中,安排了8個教學(xué)實驗,通過精心安排和組織,8個實驗由基礎(chǔ)到全面,最終構(gòu)成了一個基本完整的教學(xué)操作系統(tǒng)。
(1)實驗0(操作系統(tǒng)實驗環(huán)境和工具)的目的在于了解和熟悉操作系統(tǒng)實驗的編譯方法和流程、基于硬件模擬器的操作系統(tǒng)內(nèi)核調(diào)試方法以及OS啟動前方的基本功能,并復(fù)習(xí)了C語言和匯編語言,為基于ucore的后續(xù)實驗打下實驗方法上的基礎(chǔ)。
(2)實驗1(系統(tǒng)軟件啟動過程)的目的是實現(xiàn)bootloader加載和運行操作系統(tǒng)軟件的工作過程,從而理解啟動bootloader的過程、bootloader的文件組成、ucore OS的啟動過程、中斷處理機制、通過串口/并口/CGA輸出字符的方法。讓同學(xué)能夠運用多種工具來開始操作系統(tǒng)功能。
(3)實驗2(物理內(nèi)存管理)與實驗3(虛擬內(nèi)存管理)的目的是了解系統(tǒng)如何管理內(nèi)存,深入理解軟硬件的分頁模式,頁表的建立和使用方法,缺頁中斷的處理等基本處理方法與管理方法。需要實現(xiàn)缺頁異常處理和頁替換算法,支持虛擬存儲管理,為應(yīng)用提供大于物理內(nèi)存的虛擬地址空間。二者在實驗內(nèi)容上形成循序漸進的關(guān)系。
(4)實驗4(內(nèi)核線程管理)、實驗5(用戶進程管理)、實驗6(調(diào)度器)、實驗7(同步互斥)幫助學(xué)生了解操作系統(tǒng)中內(nèi)核線程創(chuàng)建和執(zhí)行的過程、了解上下文切換是如何具體實現(xiàn)的,并進一步了解操作系統(tǒng)中用戶進程的實現(xiàn)以及操作系統(tǒng)的調(diào)度管理機制,實現(xiàn)基于管程的條件變量機制。四者在實驗內(nèi)容上形成循序漸進的關(guān)系。
(5)實驗8(文件系統(tǒng))要求學(xué)生了解基本的文件系統(tǒng)調(diào)用的實現(xiàn)方法,掌握基于索引節(jié)點的文件系統(tǒng)和虛擬文件系統(tǒng)的具體實現(xiàn),能夠完成讀文件操作和基于文件系統(tǒng)的執(zhí)行程序機制,擴展基本文件系統(tǒng),以支持目錄、軟鏈接等,擴展緩存機制,提高緩存的效率和性能。
3.建設(shè)統(tǒng)一的教學(xué)實驗支撐平臺
為配合統(tǒng)一規(guī)劃后的教學(xué)內(nèi)容和相關(guān)教學(xué)實驗教學(xué),并為綜合實驗打好基礎(chǔ),統(tǒng)一各課程教學(xué)實驗支撐平臺十分重要。教學(xué)實驗支撐平臺應(yīng)能完成各課程規(guī)劃和調(diào)整后的教學(xué)實驗,至少應(yīng)包括硬件系統(tǒng)平臺及開發(fā)調(diào)試工具、指令級模擬器、匯編器、編譯器、教學(xué)操作系統(tǒng)模擬器及調(diào)試工具等,還應(yīng)包括上位機和實驗開發(fā)板的通信程序等。所有平臺應(yīng)支持一個簡單、規(guī)范、基本完整的統(tǒng)一的指令系統(tǒng)。為此,我們開發(fā)完成了支持50條左右MIPS32指令的硬件計算機系統(tǒng)THINPAD,作為硬件開發(fā)平臺。同時,為它配套開發(fā)了指令系統(tǒng)模擬器、匯編器、編譯器、數(shù)據(jù)通信程序、終端程序等一系列軟件系統(tǒng)和調(diào)試工具,并且完成了教學(xué)操作系統(tǒng)Ucore的移植,使其能在該硬件平臺上運行。另外,開發(fā)了編譯系統(tǒng),使編譯生成的代碼能在操作系統(tǒng)調(diào)用下運行,基本完成了教學(xué)實驗支撐平臺的建設(shè),并在實際教學(xué)中得到了檢驗。
(1)硬件系統(tǒng)平臺組成。計算機系統(tǒng)設(shè)計需要給學(xué)生提供基本的硬件平臺??紤]到硬件設(shè)計的主流技術(shù)和教學(xué)基本要求,系統(tǒng)設(shè)計主要采用可編程硬件實現(xiàn)技術(shù)。因此,整個硬件平臺以大規(guī)??删幊踢壿嬈骷橹行?,通過總線連接SRAM存儲器和Flash存儲器,再配合以外圍各種接口。下圖是硬件平臺的基本組成。
計算機系統(tǒng)綜合設(shè)計硬件平臺組成圖
(2)MIPS指令系統(tǒng)模擬器。指令系統(tǒng)模擬器可幫助學(xué)生完成簡單的機器語言程序的軟件模擬和調(diào)試,避免直接在不可靠的硬件平臺上調(diào)試帶來的困難。指令系統(tǒng)模擬器可采用通用的MIPS指令系統(tǒng)模擬器,也可以有針對性地開發(fā)。
(3)MIPS指令系統(tǒng)匯編器。匯編器可完成匯編語言到機器語言的轉(zhuǎn)換,并幫助學(xué)生理解程序。給學(xué)生提供一個方便的、有針對性的匯編器,對完成實驗是有幫助的。
(4)仿真終端程序。完整的計算機系統(tǒng)需要配置一定的外部設(shè)備。最常用、最簡單的外部設(shè)備就是計算機終端。因此,配置一個具備一定功能的仿真終端程序,可以幫助學(xué)生提高調(diào)試效率,降低硬件實現(xiàn)的難度。
(5)數(shù)據(jù)通信程序。硬件調(diào)試所需要的程序和數(shù)據(jù)應(yīng)裝入到硬件平臺的非電易失性存儲器中,需要為實驗提供一個通信程序完成這一功能。
(6)監(jiān)控程序。在完成能運行操作系統(tǒng)的計算機硬件系統(tǒng)實現(xiàn)之前,可以采取運行一個相對簡單但具備一定功能的監(jiān)控程序作為檢驗初步硬件系統(tǒng)實現(xiàn)的手段,也可以作為計算機組成課程的階段性成果。
(7)GCC編譯器。由于建議的操作系統(tǒng)由C語言編寫,故需要有一個能將操作系統(tǒng)編譯到指定的指令系統(tǒng)的編譯器。由學(xué)生自行設(shè)計和實現(xiàn)能編譯操作系統(tǒng)的編譯器規(guī)模太大,難度也很高,故建議使用GCC編譯器并對其進行一些調(diào)整后完成此項任務(wù)。
(8)匯編與鏈接工具。要求學(xué)生實現(xiàn)的編譯器能完成對應(yīng)用程序的編譯,實現(xiàn)從高級語言(C0、Decaf……)到匯編代碼的轉(zhuǎn)換,最終完成機器語言的生成,也可采用GNU的匯編器GAS和鏈接器LD,減輕實驗的工作量。
4.建設(shè)計算機系統(tǒng)綜合實驗開放式課程
作為課程體系改革的核心,我們建設(shè)了計算機系統(tǒng)綜合實驗開放式課程。該課程在學(xué)生完成相關(guān)課程學(xué)習(xí)后,綜合利用數(shù)字邏輯電路、匯編語言程序設(shè)計、計算機組成原理、操作系統(tǒng)和編譯原理中所學(xué)習(xí)的知識,獨立設(shè)計和完成一個完整、簡單的計算機系統(tǒng)設(shè)計和實現(xiàn),以檢驗學(xué)習(xí)的成果,培養(yǎng)學(xué)生綜合運用課程知識解決問題的能力。
三、改革成效與總結(jié)
課程體系各項改革措施已在清華大學(xué)計算機科學(xué)與技術(shù)系本科教學(xué)中逐步實施。教學(xué)實驗平臺已基本開發(fā)完成,并已在課程實驗中使用;各課程的教學(xué)內(nèi)容、實驗體系基本調(diào)整到位;計算機系統(tǒng)綜合實驗課程雖尚未全面開設(shè),但已以興趣小組的方式在小范圍進行了三輪實驗,已經(jīng)具備全面開設(shè)課程的基礎(chǔ),即將在本學(xué)年夏季學(xué)期面向全系學(xué)生開設(shè)。
同學(xué)們普遍反映,改革后各門課程之間教學(xué)內(nèi)容銜接良好,教學(xué)實驗體系完整,對理解教學(xué)內(nèi)容有很好的幫助。各課程統(tǒng)一了教學(xué)實驗支撐平臺,也使同學(xué)實驗更為方便,減少了對熟悉實驗平臺的負擔(dān)。參加過計算機系統(tǒng)綜合實驗的同學(xué)則覺得收獲更大,更加深刻領(lǐng)會了計算機系統(tǒng)運行的原理和內(nèi)部實現(xiàn)的機制,真正設(shè)計實現(xiàn)了人生的第一臺計算機,給了他們一個充分展示自己能力的舞臺。
系統(tǒng)能力培養(yǎng)是提高計算機專業(yè)本科教學(xué)水平的重要抓手,其中,重要的是教師能轉(zhuǎn)變觀念,提高認(rèn)識,并設(shè)計出適合本校學(xué)生的課程體系和實驗內(nèi)容。教育部高等學(xué)校計算機類專業(yè)教學(xué)指導(dǎo)委員會高度重視系統(tǒng)能力培養(yǎng),成立了兩個專門小組進行研究和推廣,希望我們的實踐能起到拋磚引玉的作用。
參考文獻:
[1] 馬殿富,高小鵬. 基于系統(tǒng)能力培養(yǎng)的計算機專業(yè)課程建設(shè)報告[R]. 北京航空航天大學(xué),2013.
[2] 張銘, ACM/IEEE Computing Curriculum學(xué)科規(guī)范[R]. 北京大學(xué),2013.
[3] 陳渝,向勇. 操作系統(tǒng)實驗指導(dǎo)[M]. 北京:清華大學(xué)出版社,2013.
[4] 劉衛(wèi)東,李山山,宋佳興. 計算機硬件系統(tǒng)實驗教程[M]. 北京:清華大學(xué)出版社,2013.
[責(zé)任編輯:余大品]