左 航,楊秋輝,陳 潤(rùn),何 丹,胡 瓊
(四川大學(xué)計(jì)算機(jī)軟件學(xué)院,四川 成都 610065)
我國(guó)的新工科研究與實(shí)踐項(xiàng)目指南明確指出在專業(yè)改造升級(jí)路徑中應(yīng)當(dāng)注重探索專業(yè)知識(shí)、能力、素質(zhì)的深度融合,聚焦國(guó)家戰(zhàn)略和未來(lái)產(chǎn)業(yè)需求。在十四五規(guī)劃中再次明確強(qiáng)化國(guó)家戰(zhàn)略科技力量,打好關(guān)鍵核心技術(shù)攻堅(jiān)戰(zhàn),特別是在事關(guān)國(guó)家安全和發(fā)展全局的基礎(chǔ)核心領(lǐng)域。操作系統(tǒng)作為國(guó)家所需的核心技術(shù),是支撐眾多相關(guān)產(chǎn)業(yè)發(fā)展的基石,所以人才隊(duì)伍的建設(shè)十分重要。
從學(xué)科培養(yǎng)角度看,工程教育認(rèn)證中以學(xué)生為中心的理念強(qiáng)調(diào)圍繞培養(yǎng)目標(biāo)和畢業(yè)要求進(jìn)行教學(xué)安排,操作系統(tǒng)的培養(yǎng)目標(biāo)應(yīng)當(dāng)把學(xué)生和用人單位滿意度作為專業(yè)評(píng)價(jià)的重要參考依據(jù)[1-2]。從學(xué)生層面看,課程集程序設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)與算法,體系結(jié)構(gòu)等多門類知識(shí),實(shí)踐難度較高,同時(shí)其作為研究生入學(xué)考試的必考科目,在一定程度上影響學(xué)生的深造學(xué)習(xí)。
因此我們認(rèn)為操作系統(tǒng)課程應(yīng)當(dāng)圍繞滿足軟件相關(guān)產(chǎn)業(yè)需求和學(xué)生學(xué)業(yè)深造需求,滿足國(guó)家對(duì)國(guó)產(chǎn)操作系統(tǒng)人才的需求進(jìn)行教學(xué)設(shè)計(jì),從而保證學(xué)生具備扎實(shí)的理論基礎(chǔ),良好的系統(tǒng)的開(kāi)發(fā)能力,以及持續(xù)學(xué)習(xí)能力和創(chuàng)新能力。
目前國(guó)內(nèi)外大學(xué)操作系統(tǒng)課程的常用授課模式與計(jì)算機(jī)學(xué)科中的大多數(shù)課程類似,主要是以理論授課為先,穿插講解部分關(guān)鍵算法代碼,最后進(jìn)行實(shí)驗(yàn)的方式開(kāi)展[3-5],即“理論+代碼片段→完整代碼實(shí)現(xiàn)”方式。其中實(shí)驗(yàn)和作業(yè)大多以編程項(xiàng)目為主,瞄準(zhǔn)專業(yè)實(shí)踐能力的培養(yǎng),并不重視常規(guī)的書(shū)面練習(xí)題。該模式的優(yōu)點(diǎn)在于教師的講授可以條理清晰的勾勒出理論框架,并突出關(guān)鍵算法的代碼實(shí)現(xiàn),高效的傳達(dá)課程重點(diǎn)難點(diǎn)。同時(shí)實(shí)驗(yàn)設(shè)計(jì)緊扣幾大核心模塊,如并發(fā)、任務(wù)調(diào)度、內(nèi)存管理、文件系統(tǒng)等,力圖通過(guò)實(shí)驗(yàn)具化理論,從而夯實(shí)理論基礎(chǔ)。
雖然該方案的設(shè)計(jì)思路清晰,培養(yǎng)目標(biāo)明確,但由于課程實(shí)驗(yàn)需要采用模擬教學(xué)系統(tǒng),會(huì)使得實(shí)驗(yàn)難度較其他課程更高,因此傳統(tǒng)的實(shí)驗(yàn)?zāi)J綄?huì)無(wú)形中削弱實(shí)驗(yàn)夯實(shí)理論的效果。目前實(shí)驗(yàn)常用的模擬系統(tǒng)有XV6,PintOS,NachOS 等,其源代碼一般有6000至10000+行,模塊封裝設(shè)計(jì)有一定技巧,且模塊間存在關(guān)聯(lián),故實(shí)驗(yàn)中常常出現(xiàn)牽一發(fā)而動(dòng)全身的情況。因此,學(xué)生需要具備兩個(gè)基本能力,才能更好的完成實(shí)驗(yàn):第一對(duì)框架的整體設(shè)計(jì)、主要功能模塊和理論算法有一個(gè)比較全面和深入的理解;第二具備較好的程序設(shè)計(jì)和調(diào)試能力。然而學(xué)生剛剛學(xué)完理論知識(shí),難以快速形成非常清晰的知識(shí)脈絡(luò)和系統(tǒng)認(rèn)知;且在類似規(guī)模系統(tǒng)下的實(shí)踐經(jīng)驗(yàn)較少。這些因素都將放大實(shí)驗(yàn)難度,使得通過(guò)實(shí)驗(yàn)夯實(shí)理論的預(yù)期目標(biāo)難以達(dá)到滿意的效果。
與此同時(shí)原模式下偏重培養(yǎng)實(shí)踐能力,輕書(shū)面練習(xí)將不利于從實(shí)踐回歸理論形成知識(shí)體系的閉環(huán);缺乏操作系統(tǒng)領(lǐng)域論文與實(shí)驗(yàn)的結(jié)合,將導(dǎo)致對(duì)學(xué)生持續(xù)學(xué)習(xí)能力和創(chuàng)新能力培養(yǎng)的不足;缺乏產(chǎn)業(yè)相關(guān)軟件實(shí)驗(yàn)也將使得學(xué)生缺乏對(duì)產(chǎn)業(yè)發(fā)展的關(guān)注與認(rèn)知。
課程教改前的問(wèn)卷調(diào)查也驗(yàn)證了上述分析,85%的同學(xué)認(rèn)為課程有助于提高專業(yè)基礎(chǔ)能力和初步的操作系統(tǒng)編程能力,57%的同學(xué)認(rèn)為實(shí)驗(yàn)有助于理解課本理論知識(shí);但仍然有高達(dá)78%的同學(xué)認(rèn)為實(shí)驗(yàn)編碼任務(wù)比較困難,而僅有35%的同學(xué)認(rèn)為課程目前的組織方式可以很好的應(yīng)對(duì)深造學(xué)習(xí)的需求。
秉承工程認(rèn)證倡導(dǎo)的持續(xù)改進(jìn)理念,我們希望根據(jù)調(diào)查反映出的難點(diǎn),在原有的“理論+代碼片段-完整代碼實(shí)現(xiàn)”方法中增加新的迭代環(huán)節(jié)來(lái)進(jìn)一步優(yōu)化課程方案,完善和提升培養(yǎng)效果,真正做到加強(qiáng)產(chǎn)學(xué)研深度合作,共育數(shù)字時(shí)代卓越人才。課程的改進(jìn)將按照知識(shí)引入、拓展和綜合提升[6]的順序,迭代遞進(jìn),最終聚焦在三個(gè)問(wèn)題上,即:實(shí)驗(yàn)難度較高不容易入手;書(shū)面練習(xí)少不利于理論的推導(dǎo)和繼續(xù)深造;產(chǎn)學(xué)研結(jié)合不緊密和創(chuàng)新能力培養(yǎng)不足。
首先針對(duì)大部分學(xué)生反映的實(shí)驗(yàn)難度較高的問(wèn)題,在課堂講解代碼片段的基礎(chǔ)上,將實(shí)驗(yàn)算法實(shí)現(xiàn)分為不同階段,初級(jí)階段由教師帶領(lǐng)閱讀框架代碼,分解算法的代碼實(shí)現(xiàn)步驟,帶領(lǐng)學(xué)生完成示例性代碼。本階段,學(xué)生不需要對(duì)理論有非常深入的理解,通過(guò)依葫蘆畫瓢的方式完成設(shè)計(jì),這一步的主要目標(biāo)通過(guò)教師展示代碼實(shí)現(xiàn)步驟來(lái)幫助學(xué)生梳理系統(tǒng)框架及算法流程,初步理解如何將理論轉(zhuǎn)換為模擬系統(tǒng)下的代碼。
其次在原有方法中新增“理論綜合練習(xí)”,對(duì)理論知識(shí)進(jìn)行一次迭代,形成“理論+代碼片段-完整代碼實(shí)現(xiàn)-理論綜合練習(xí)”模式。在本階段,學(xué)生將回歸針對(duì)理論的書(shū)面練習(xí),練習(xí)題以優(yōu)質(zhì)的考研重難點(diǎn)綜合題為主。在學(xué)生已經(jīng)實(shí)現(xiàn)和跑通基礎(chǔ)算法代碼的基礎(chǔ)上,綜合練習(xí)將從具象回歸抽象,幫助學(xué)生進(jìn)一步理解理論核心,以及和其他章節(jié)的關(guān)系。從而達(dá)到理論指導(dǎo)實(shí)踐,實(shí)踐歸理論這樣一個(gè)學(xué)習(xí)閉環(huán)。
最后增加“論文算法代碼實(shí)踐及拓展”迭代環(huán)節(jié),最終形成“理論+代碼片段→完整代碼實(shí)現(xiàn)→理論綜合練習(xí)→論文算法代碼實(shí)踐及拓展”模式。在本環(huán)節(jié),學(xué)生需要通過(guò)閱讀相應(yīng)的學(xué)術(shù)論文,并在模擬系統(tǒng)上獨(dú)立以論文中的方式去具體實(shí)現(xiàn)教材經(jīng)典算法,觀察算法性能是否和教材或論文一致。與此同時(shí),配以相應(yīng)的擴(kuò)展實(shí)驗(yàn)和閱讀,引導(dǎo)學(xué)生關(guān)注本章節(jié)知識(shí)的產(chǎn)業(yè)動(dòng)態(tài)。這一步將擴(kuò)展學(xué)習(xí)的深度和寬度,培養(yǎng)學(xué)生的創(chuàng)新能力,并強(qiáng)調(diào)產(chǎn)學(xué)研融合。
新方案在理論和實(shí)踐中反復(fù)迭代,將有利于螺旋式的提升并強(qiáng)化學(xué)生的理論和實(shí)踐能力,從而很好的解決原有模式下的三個(gè)問(wèn)題。
由于內(nèi)存管理是操作系統(tǒng)概念中核心模塊之一,主要包括分頁(yè),地址轉(zhuǎn)換及虛擬內(nèi)存等內(nèi)容,與文件管理、進(jìn)程調(diào)度等模塊密不可分,下面以該部分為例討論如何進(jìn)行迭代遞進(jìn)式學(xué)習(xí)。
在階段一,課程首先完成了分頁(yè),地址轉(zhuǎn)換的理論學(xué)習(xí)。討論了TLB,多級(jí)頁(yè)表和反向頁(yè)表技術(shù),并輔以簡(jiǎn)單的練習(xí)題目,比如地址轉(zhuǎn)換,多級(jí)頁(yè)表計(jì)算等,幫助學(xué)生建立頁(yè)表相關(guān)基礎(chǔ)理論的直觀認(rèn)識(shí)。
在階段二,做初級(jí)實(shí)驗(yàn),教師帶領(lǐng)學(xué)生完成模擬系統(tǒng)NachOS下相關(guān)框架模塊的導(dǎo)讀并實(shí)現(xiàn)基礎(chǔ)代碼。本次實(shí)驗(yàn)共需四步,如圖1 所示,即開(kāi)啟TLB 模塊,加入統(tǒng)計(jì)TLB 命中率的代碼,實(shí)現(xiàn)異常處理函數(shù)和線程切換時(shí)的TLB處理,由教師帶領(lǐng)學(xué)生一起完成。
圖1 TLB實(shí)驗(yàn)流程
其中TLB 異常處理函數(shù)采用教學(xué)示范替換策略,如圖2 所示,以VPN 對(duì)TLB 數(shù)組長(zhǎng)度取余的方式選中被替換項(xiàng)。通過(guò)這個(gè)簡(jiǎn)單實(shí)驗(yàn),學(xué)生能夠理解系統(tǒng)間模塊的相互關(guān)系,快速跑通TLB 工作流程,明白TLB頁(yè)表替換模塊在系統(tǒng)中的位置和作用,何時(shí)被調(diào)用,如何影響內(nèi)存地址轉(zhuǎn)換,從而初步達(dá)成將理論轉(zhuǎn)換為代碼的實(shí)驗(yàn)?zāi)繕?biāo)。
圖2 TLB異常處理函數(shù)偽代碼
在階段三,引入考研綜合題型[7],如圖3 所示。學(xué)生在計(jì)算地址和訪問(wèn)時(shí)間的過(guò)程中,需要將本章節(jié)中的地址轉(zhuǎn)換,缺頁(yè)處理,TLB 替換,駐留集等知識(shí)和概念融會(huì)貫通。重新回溯理論的綜合考察題目,有利于學(xué)生整合零碎的概念并形成完整的知識(shí)脈絡(luò)。
圖3 TLB綜合考察題目示例
在階段四,拓展章節(jié)內(nèi)容的深度和寬度。首先,讓學(xué)生獨(dú)立實(shí)現(xiàn)兩種經(jīng)典TLB 替換算法,即最近最少用LRU 算法和隨機(jī)替換算法。在算法的設(shè)計(jì)過(guò)程中,學(xué)生需要解決以下二個(gè)問(wèn)題:如何來(lái)記錄最近使用次數(shù),以及以什么樣的方式實(shí)現(xiàn)隨機(jī)?在分小組討論后,教師下發(fā)論文[8],學(xué)生在閱讀分析論文后,按照論文給出的方法實(shí)現(xiàn)兩種替換算法。并在同一測(cè)試場(chǎng)景下分別測(cè)試實(shí)驗(yàn)中三種不同TLB 替換算法的命中率,并對(duì)數(shù)據(jù)進(jìn)行分析和討論,驗(yàn)證算法理論分析結(jié)果與實(shí)驗(yàn)結(jié)果是否一致,最終形成實(shí)驗(yàn)報(bào)告。接著擴(kuò)展閱讀相關(guān)的論文,引導(dǎo)學(xué)生進(jìn)一步了解TLB 在現(xiàn)代多核計(jì)算機(jī)中的具體實(shí)現(xiàn)方式。最后引入華為歐拉操作系統(tǒng)實(shí)驗(yàn),了解內(nèi)核編程及歐拉操作系統(tǒng)底層內(nèi)存分配相關(guān)知識(shí)。
至此,算法實(shí)現(xiàn)再次回歸理論,達(dá)到理論與實(shí)踐的知行合一,實(shí)驗(yàn)算法分兩次實(shí)現(xiàn)大大的降低了實(shí)驗(yàn)入手難度;綜合練習(xí)題的引入即便于學(xué)生整合不同章節(jié)的知識(shí)點(diǎn);論文的閱讀與實(shí)踐有利于培養(yǎng)學(xué)生的創(chuàng)新能力;而歐拉操作系統(tǒng)實(shí)驗(yàn)的引入在一定程度上可以激發(fā)學(xué)生學(xué)習(xí)國(guó)產(chǎn)操作系統(tǒng)并借此融入華為社區(qū)和了解產(chǎn)業(yè)生態(tài)。
新方案中,理論與實(shí)驗(yàn),理論與深造考試,實(shí)驗(yàn)與科研論文和業(yè)界產(chǎn)品,四者在迭代中實(shí)現(xiàn)了產(chǎn)學(xué)研的深度融合。迭代通過(guò)知識(shí)啟蒙、知識(shí)拓展促進(jìn)了立體的知識(shí)體系的構(gòu)建與專業(yè)實(shí)踐能力的提升,而論文閱讀與歐拉操作系統(tǒng)實(shí)驗(yàn)則進(jìn)一步實(shí)現(xiàn)了學(xué)生研究與創(chuàng)新,理論與產(chǎn)品專業(yè)素養(yǎng)的綜合提升。課堂調(diào)查顯示認(rèn)為對(duì)實(shí)驗(yàn)的理解程度更深的同學(xué)上升到82%,而認(rèn)為有助于應(yīng)對(duì)深造考試的同學(xué)上升到了53%,認(rèn)為華為歐拉操作系統(tǒng)相關(guān)實(shí)驗(yàn)非常有意義的同學(xué)達(dá)到89%。由此可見(jiàn),新的教學(xué)方案很好符合了工程教育認(rèn)證和軟件工程人才培養(yǎng)的核心理念。