999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

計算機系統基礎課程的實驗設計與分析

2018-10-25 03:14:46袁春風陶先平
計算機教育 2018年10期
關鍵詞:實驗課程學生

汪 亮,袁春風,蘇 豐,唐 杰,路 通,陶先平

(南京大學 計算機科學技術與軟件工程實驗教學中心,江蘇 南京 210023)

0 引 言

隨著后PC時代的到來,對于計算機行業相關人員的需求也從頂層軟件開發人員轉向需要更全面系統知識的系統性人才,而傳統的培養體系在這方面仍存在不足[1]。在此大背景下,對于在高校中開展計算機系統教育的需求也顯得愈發迫切,涌現出了一系列相關的教學研究工作[1-12]。其中,計算機系統基礎作為整個課程體系中的入門課,在整個課程鏈中起到重要的引領性作用。作為一門面向實際系統的課程,要引導學生將理論和實際相結合深入理解計算機系統,一個有效的方法就是通過實驗手段來實踐所學到的知識。因此,實驗在計算機系統基礎教育中占有重要地位。

作為一門面向整個計算機系統的實驗課程,如何在有限的教學時間、可控的學生精力投入范圍內做到既重點突出又體現系統性和完整性,是實驗設計和教學過程中面臨的主要挑戰。縱觀現有計算機系統實驗課程設計方案,比較典型的是卡耐基梅隆大學所設計的Lab實驗方案[13]。該方案通過9個獨立的小實驗,重點突出了對學生數據操作、機器指令理解、體系結構等方面的鍛煉。然而該實驗方案在體現系統的完整性方面仍存在不足,對于引導學生全面系統地理解程序從生成、載入到執行各個階段所涉及的具體內容無法做到無縫銜接。

1 相關工作

計算機系統實驗的相關設計方案可大致分為面向硬件的實驗設計和面向程序的實驗設計兩類。面向硬件的實驗設計方案中較為典型的是采用FPGA作為實驗平臺,通過構建以類MIPS指令集CPU為核心的計算機系統,來引導學生通過實驗掌握計算機系統的各個組成成分,實踐相關的理論知識[14-15]。這一類面向硬件的實驗設計方案有利于引導學生從底層細節入手深入把握計算機系統的各個部件設計與實現原理,在實踐過程中取得了很好的教學效果。然而此類面向硬件的實驗設計方案對學生前期知識的掌握要求較高。本文所關注的計算機系統基礎課程是系統方向的入門課程,其授課時間為本科二年級第一學期,作為一門平臺課向所有信息類的學生開設。因此,學生在計算機相關知識的掌握和動手能力方面尚需培養。同時,由于面向硬件的實驗設計方案受其實現難度的限制,能夠覆蓋的主題數量和深度有限,在實驗的針對性和系統性之間需要進行仔細權衡。

與我們的工作同屬一類的典型實驗設計方案是卡耐基梅隆大學所設計的Lab實驗方案[13]。該方案的9個小實驗中,包括數據實驗、二進制炸彈、緩沖區溢出和cache實驗都是面向程序執行的,針對性較強。該實驗方案的優勢在于通過一系列獨立的小實驗,有針對性地引導學生深入實踐相關課題。然而其不足之處在于,對于完整的計算機系統缺乏系統性的實驗,從而導致各主題之間的關聯不緊密,無法做到程序從生成、裝載、執行和輸入輸出在內完整過程的無縫銜接。

在以上相關工作的基礎上,本文提出了一種面向程序的計算機系統基礎實驗設計方案,即PA實驗。該實驗方案以構建完整的計算機模擬器為主線,通過各個階段的逐步展開,以連續、系統的方式,為學生深入學習計算機系統基礎創造良好的配套實驗過程。

2 PA實驗的設計原則

(1)實驗設計的系統性和簡潔性。實驗的各個階段應當主題突出,同時緊密結合構成一個完整的系統;實驗框架應盡可能簡潔,屏蔽無關細節并采用簡單、直接、易懂的設計和實現方案。

(2)與理論課程的同步配合。與理論課講授內容和次序的同步配合也是設計課程實驗時必須重點考慮的問題。

(3)對于項目開發的實踐教育。計算機系統基礎實驗體現為一個小規模的軟件項目。對于學生而言,在實驗的過程中掌握項目管理、開發和測試相關的技術,也是在設計實驗時需要體現的內容。

(4)與后續課程的銜接。計算機系統基礎作為整個系統培養課程體系中的一環,其配套的實驗也應該兼顧與后續課程及其實驗的銜接。

3 PA實驗設計

3.1 PA實驗設計

3.1.1 實驗總覽

PA實驗的整體目標是引導學生創建一個簡化的x86模擬器并實現相應的上層軟件,從而實現對計算機系統基礎相關知識的系統性實踐教育。圖1展示了PA的整體架構。PA項目主要由NEMU(NJU Emulator)、Kernel、用戶程序以及內嵌于NEMU中的Monitor四大組件構成。其中,實驗的核心內容圍繞NEMU展開,可大致分為針對CPU功能、存儲管理、異常控制流、I/O外設的模擬四大部分。Kernel為一個精簡的操作系統,主要提供包括程序裝載、虛存管理、系統調用和中斷處理相應的功能。在Kernel的支撐之上,PA能夠運行各類測試用例以及樣例游戲程序。

圖1 PA整體架構圖

PA作為一個x86指令集體系結構的軟件模擬器,在運行時表現為一個用戶程序。通過模擬實現x86系統的各條指令,實現運行x86程序的功能。PA由C語言編寫,其目標平臺為32位i386平臺,目標操作系統位GNU/Linux系統。圖2展示了PA實驗運行時的系統棧。

本課程選用的教材為袁春風老師的《計算機系統基礎》。PA實驗與理論課的講授次序緊密配合,分4個階段:①數據的表示、存取和運算;②指令的譯碼和執行;③存儲管理;④異常控制流和I/O。

圖2 PA運行時系統棧

3.1.2 PA 1:數據的表示、存取和運算

以數據的表示、存取和運算為切入點,介紹計算機系統中整數和浮點數這兩種重要類型數據的表示和運算規則。配合理論課第二章的內容,無符號整數采用原碼表示,帶符號整數采用補碼表示,浮點數采用IEEE 754標準。在數據表示的基礎上,通過實現ALU和FPU的運算功能,引導學生熟悉掌握數據在計算機中的表示和運算方式;通過設置EFLAGS標志位的練習,指導學生掌握整數運算中可能出現的各種情況。

IEEE 754標準內容較多,學生不容易理解和掌握。PA通過實現軟件模擬浮點數,指導學生動手實現包括對階、規格化、舍入等運算操作,幫助學生深入理解掌握浮點數的表示和運算規則。通過閱讀和編寫代碼,生動地理解包括浮點數階碼溢出、邊界值的處理、精度問題等單憑理論課講授難以切實體會的內容。

在數據表示和運算的基礎上,PA 1自然引出計算機存儲數據的需求,進而介紹寄存器和主存這兩大數據存儲部件,引導學生理解其結構和對外提供的存取接口。

3.1.3 PA 2:指令的譯碼和執行

強調計算機執行程序的能力。配合理論課第三章的內容,介紹x86指令的譯碼和執行相關內容。在本階段,我們只關心指令的順序執行和跳轉,不涉及異常控制流的執行。

該階段首先從宏觀角度介紹指令執行的一般過程,通過一個while循環語句,指導學生理解指令循環的實際含義。在譯碼階段,通過函數指針數組模擬操作碼譯碼功能;通過實現包括ModR/M、SIB、立即數、寄存器和內存地址尋址等具體的功能性代碼,引導學生深入理解指令操作數的編碼方式和各類操作數尋址方式;通過實現不同指令的實現函數,幫助學生深入理解并掌握指令功能及其必要的實現細節。

在PA的框架代碼中通過提供大量的測試用例來幫助發現指令實現中可能存在的bug。從測試用例程序的裝載方式來分,PA 2又可以分為兩個小階段。第一個小階段中測試用例程序通過內存鏡像直接拷貝的方式來加載;第二小階段則引入Kernel,要求實現ELF文件的解析來裝載測試用例程序的代碼和數據段。其中第二小階段配合理論課的授課進度,從測試用例從硬盤文件裝載到模擬內存這一需求出發,自然從第三章過渡到第四章的內容。最后作為一個可選任務,通過實現程序調試器的功能,簡要介紹表達式求值方法并實現對符號表的解析,對應理論課第四章的內容。

3.1.4 PA 3:存儲管理

探討程序執行過程中的訪存效率、安全性和并行性,引出理論課第六章的內容并展開相應的實現。

首先從訪存效率的角度出發,介紹cache的組織和替換策略。要求學生通過實現一個簡單的模擬cache,深入理解cache的組織方式、結構和替換算法的實現方式;通過引入模擬時鐘,來引導學生通過實際運行體會cache的增加對于執行效率的影響,體會訪存局部性原理。第二,從存儲保護的角度,來引出x86的保護模式和分段機制。通過實現CR0寄存器和lgdt等指令,深入理解機器從實模式到保護模式的切換過程;通過實現地址轉換函數,理解段表的構造和從邏輯地址到線性地址的轉換過程。最后,從支持程序并行執行的角度,引入虛擬地址空間的概念,通過在Kernel中實現對頁表的初始化和管理,并在NEMU中增加從線性地址到物理地址的轉換過程,引導學生理解機器和操作系統如何配合完成存儲管理的功能。

3.1.5 PA 4:異常控制流和I/O

以時鐘中斷為切入點,要求學生實現包括int在內的相關指令以及操作系統的中斷描述符表和處理函數,深入掌握從硬件到操作系統配合響應異常和中斷的過程。

在基本的異常和中斷響應功能的基礎上,通過提供相應的設備模擬代碼并要求學生實現包括端口映射的I/O和內存映射的I/O這兩種I/O方式,幫助學生構建一臺具備基本I/O功能的計算機,完成按鍵響應等基本功能,深入理解I/O的基本原理。

在基本測試用例以外,PA還提供了包括打字小游戲和仙劍奇俠傳在內的兩款小游戲作為最后的測試用例,使得學生在理解計算機運行程序基本原理的基礎上獲得較高的成就感,激發學習的興趣。

第四階段的內容對應理論課的第七和第八兩章的內容。

3.1.6 與理論課的同步配合

綜上所述,整個計算機系統基礎PA實驗的設計涵蓋了計算機系統基礎課程所涉及的絕大部分理論內容。通過構建一個完整的模擬計算機系統,在幫助學生掌握各項知識的同時,由簡單到復雜,階段性、系統性地完成一個功能相對完備的機器,兼顧了對獨立知識點和整體系統性這兩個方面的訓練。整個實驗過程緊扣理論課各個章節的授課次序,能夠做到與理論課的同步配合,在可控的學習負荷的情況下,做到實驗與理論的互相促進和增強效果。表1梳理了PA實驗各階段和理論課的同步對應情況。

表1 PA各實驗階段與計算機系統基礎理論課的對應關系

3.2 項目管理、測試與調試訓練

作為一個小規模的軟件項目,PA實驗采用git來進行項目版本管理。通過實際的操作,引導學生學習版本控制的重要性以及掌握git工具的基本使用方式,為未來的項目開發打下基礎。

為了有效提高所編寫代碼的正確性,PA還引入了大量的測試方法并鼓勵學生編寫測試用例。在PA 1的過程中,展現了所實現程序和內聯匯編執行結果的交叉驗證技術,屬于將實現代碼與一個“黃金版本”進行比較的測試方式。在后續的實驗過程中,則通過構建測試I/O形式的測試用例方式,來測試代碼中可能包含的bug。通過展現兩種不同的測試技術,并強調單元測試的重要性,來引導學生了解測試的方法;通過讓學生在實現過程中因為測試不充分而導致的各種程序bug,來生動展現測試的重要性。

最后,通過簡要介紹gdb和引入monitor調試器,來幫助學生理解使用調試工具的必要性,掌握程序調試的基本技巧。

在上述過程中,我們的設計原則是允許學生犯錯,并深刻體會到因各種錯誤所導致的程序異常行為,通過付出一定的努力進行測試和調試,鍛煉相應的能力和技巧。

3.3 與后續課程的銜接

作為計算機系統方向課程鏈中的一個環節,計算機系統基礎課程是一門重要的入門性的課程,與后續包括操作系統、編譯原理在內的課程具有很強的關聯性。在PA實驗的設計中也體現了這一點。

首先,作為一個功能完整的計算機系統,要實現對用戶程序的執行設計到機器和操作系統的協作。從PA 2第二小階段開始,實驗引入Kernel并在后續的實驗中不斷增強Kernel的功能,引導學生初步理解和掌握操作系統的基本功能和實現方式,為后續操作系統的理論學習和實驗打下基礎。

第二,作為PA 2第三階段的一個可選功能,實驗在monitor組件中實現了表達式求值功能,包含了基本的詞法、語法分析功能,為后續編譯原理的學習做鋪墊。

4 教學實踐結果分析與討論

我們首先分析歷年來PA的完成情況來獲取學生對PA實驗的接受程度;以2016學年秋季學期的成績數據為樣本,通過對比PA實驗成績和期末考試成績,來分析PA實驗與課程成績之間的關聯關系,并結合當年期末展開的開放式問卷和訪談的反饋結果,來直接獲取學生對于PA實驗有效性的反饋意見。同時,在學習負荷方面,由于PA實驗對學生的動手能力和知識掌握程度都提出了較高的要求,因此通過開放式問卷和訪談的方式,就學生的學習負荷展開了調研。調研工作的執行時間為2016學年秋季學期期末開始,為期約兩周,共收到反饋74份,其中有效反饋67份。

4.1 歷年完成情況統計

在2014年未設置專門的實驗輔導課的情況下,PA完成情況并不理想,極少有同學能夠完成整個PA實驗,有部分同學甚至無法完成第一階段的實驗。自2015年開始設置專門的輔導課程后,完成情況得到大幅改觀,在2015年和2016年,絕大多數的同學都完成到了PA的后期,有許多同學能夠完成最終階段,從而實現運行小游戲的目標。

可以看出,除理論課之外開設專門的實驗輔導課效果明顯。在有專門輔導的情況下,大多數同學通過付出一定的努力,能夠在規定的時間內完成實驗所要求的基本任務。能力較強的學生可以實現運行游戲等附加任務。

4.2 PA實驗設計的有效性

圖3展示了2016年PA成績和期末考試成績的分布情況,對兩項成績計算皮爾遜相關系數,其結果為0.76。該結果顯示PA成績和期末考試成績有較強的正相關性,反映出PA成績能夠較大程度反應學生對理論知識掌握情況,同時也從側面反映出PA實驗設計的有效性。

圖3 2016學年秋季學期得分統計

除量化的成績以外,我們還通過開放式調查問卷和訪談的方式獲得了學生的相關反饋。在收到的67份有效反饋中,有43人明確表示PA實驗對計算機系統基礎的學習有積極意義,9人表示沒有意義,15人未表態。其中比較典型的反饋包括:

“PA對于理解計算機系統基礎,真的幫助很大,比做習題、做lab的幫助都要大的多,不去動手實現,也許我永遠都不會明白一個程序是怎么走完的,訪問地址的流程又是怎樣的。在調BUG、看匯編代碼時,我才能明白程序的調用、棧幀的變化等。”

“寫PA的過程極大地加深了我對課本上理論知識的理解和掌握,尤其是:FLOAT部分加深了我對課本第二章的理解, PA2階段二、階段五加深了我對課本第三章和第四章的理解,cache部分加深了我對cache的理解。”

總體而言,對于PA實驗在計算機系統基礎課程中的作用,絕大多數同學持肯定的態度。基于以上分析,我們認為PA實驗的設計完成了其預期目標,是有效的。同時,通過訪談,我們也意識到PA對于學生而言是較有挑戰的一個項目,具有較高的學習負荷。

4.3 學生的學習負荷

4.3.1 時間負荷

通過授課期間的觀察和訪談結果,不同學生在完成PA時所體驗到的時間負荷因人而異。在收到的67份有效反饋中,50人表示PA實驗時間負荷較高,8人表示時間負擔不重,9人未表態。其中,最快的學生在2個月的時間內就能夠自主完成PA。對于某些能力較強的同學而言,PA平均每周花費的時間在5~6小時,短的只有2小時。因此可以說對于這些同學而言,學習的時間負荷不是很高。而對于其他學生而言,時間負荷是一個不容忽視的因素。在反饋意見中,有部分同學表示PA占據了本學期大多數時間。

從教學實踐過程來看,除了平時授課時間以外,經常會遇到學生深夜在線要求答疑的情況,因此如何降低學生在學習過程中的時間負荷,是PA實驗設計中應當考慮的問題。

針對該問題,我們在2017年對PA設計做了較大的調整,把部分與課程主線關聯不夠緊密的部分獨立為可選任務,保證了主線任務的簡潔性,降低學生在實驗過程中的時間開銷。

4.3.2 認知負荷

在PA實驗過程中,認知負荷表現為實現各階段實驗目標所要付出的對理論知識理解以及代碼理解相關的努力。通過分析調研反饋發現,PA實驗的認知負荷主要源自兩個方面:第一是與理論課程的時間失配問題;第二是框架代碼本身的復雜性問題。

針對與理論課的時間失配問題,在收到的67份有效反饋意見中,有24人表示時間失配增加了PA實驗的難度,1人表示時間失配沒有造成困難,其余42人未明確表態。比較典型的反饋意見是理論課與PA課節奏不搭、不同老師的授課進度匹配不是很好等。

而針對框架代碼本身的復雜性問題,43人明確表示框架代碼的編碼復雜性導致了實驗困難,其余24人未明確表態,典型的反饋包括:“指令的編寫花了很多時間,涉及許多宏定義,打亂了程序的理解,整體性沒把握。”

針對上述調研發現的問題,我們2017年關注并調整了PA實驗和理論課的時間同步問題。同時和理論課老師共同研討規劃,整個授課團隊在時間安排上已達成一致,避免時間失配。針對框架代碼本身的復雜性問題,我們對以往暴露出的復雜難理解的部分作了重構,經過往年學生和助教的審核,均表示代碼的可讀性有了較大提升,其復雜性得到了控制。

5 總結與展望

通過近3年的教學實踐,南京大學計算機科學與技術系在計算機系統基礎教育以及其配套的PA實驗部分作了較為深入的創新和探討。本文通過介紹和分析實驗設計,給出了PA實驗的整體設計思路和各階段設計方案。對歷年的成績和訪談結果進行分析后,可以得出PA實驗的有效性和對于計算機系統基礎教學的積極意義。對于在教學實踐過程中所暴露出的學生學習負荷較大的問題,在新版的PA實驗設計中作了相應的改進。

后續將在持續改進PA實驗設計的基礎上,開展通過標準化量表來對學生在PA實驗過程中的壓力和工作負荷進行量化評估的工作。我們希望能夠對學生在學習過程中的收獲和體驗進行更為深入的分析,從而推動PA實驗的不斷演進。

猜你喜歡
實驗課程學生
記一次有趣的實驗
數字圖像處理課程混合式教學改革與探索
軟件設計與開發實踐課程探索與實踐
計算機教育(2020年5期)2020-07-24 08:53:38
為什么要學習HAA課程?
做個怪怪長實驗
趕不走的學生
學生寫話
NO與NO2相互轉化實驗的改進
實踐十號上的19項實驗
太空探索(2016年5期)2016-07-12 15:17:55
學生寫的話
主站蜘蛛池模板: 国产门事件在线| 精品国产美女福到在线不卡f| 亚洲第一视频免费在线| 国产在线一区二区视频| 久久中文字幕av不卡一区二区| 精品一区二区三区水蜜桃| 69国产精品视频免费| 国产精品毛片在线直播完整版| 91九色最新地址| 制服丝袜在线视频香蕉| 成年免费在线观看| 久久久久国产精品熟女影院| h网址在线观看| 亚洲日韩第九十九页| 1级黄色毛片| 激情综合婷婷丁香五月尤物| 99re这里只有国产中文精品国产精品| 亚洲精品自拍区在线观看| 亚洲手机在线| 久久久国产精品无码专区| 少妇极品熟妇人妻专区视频| 婷婷成人综合| 国产成人AV大片大片在线播放 | 亚洲一区二区在线无码| 全部免费毛片免费播放 | 在线亚洲小视频| 国产成人免费高清AⅤ| 久久久久亚洲AV成人人电影软件 | 亚洲综合色吧| 亚洲AV一二三区无码AV蜜桃| 成人国产免费| 国产福利大秀91| 在线日韩日本国产亚洲| 久久亚洲国产一区二区| 久久99热这里只有精品免费看| 精品久久久久久成人AV| 中文字幕在线不卡视频| 激情视频综合网| 真人免费一级毛片一区二区| 宅男噜噜噜66国产在线观看| 国产男人天堂| 久久永久视频| 成年午夜精品久久精品| 91成人在线观看| 色爽网免费视频| 经典三级久久| 欧美午夜视频| 国产成年女人特黄特色毛片免 | 米奇精品一区二区三区| 亚洲狼网站狼狼鲁亚洲下载| 九九线精品视频在线观看| 欧美自拍另类欧美综合图区| jizz在线观看| 国产亚洲精品自在久久不卡 | 国产免费观看av大片的网站| 欧美成人亚洲综合精品欧美激情| 亚洲国产午夜精华无码福利| 美女国内精品自产拍在线播放| 中文字幕永久视频| 国产精品自拍露脸视频| 国产农村1级毛片| 熟女日韩精品2区| 免费一级毛片在线播放傲雪网| 欧美第一页在线| 91久久偷偷做嫩草影院精品| 国产美女叼嘿视频免费看| 色综合手机在线| 毛片国产精品完整版| 色综合手机在线| 国产Av无码精品色午夜| 2019年国产精品自拍不卡| 欧美日韩国产成人高清视频| 911亚洲精品| 免费人成黄页在线观看国产| 亚洲中文字幕97久久精品少妇| 色婷婷在线播放| 国产精品第页| 亚洲第一中文字幕| 亚洲开心婷婷中文字幕| 女人18一级毛片免费观看| 中文字幕乱码二三区免费| 99视频全部免费|