理学C风格四PPT课件_第1页
理学C风格四PPT课件_第2页
理学C风格四PPT课件_第3页
理学C风格四PPT课件_第4页
理学C风格四PPT课件_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、3.6 3.6 虚拟机风格虚拟机风格虚拟机风格:虚拟机风格:解释器、基于规则的系统解释器、基于规则的系统第1页/共71页虚拟机第2页/共71页从Java入手第3页/共71页Write Once, Run Anywhere一次书写,多处运行第4页/共71页JAVA如何支持Platform IndependenceJava虚拟机第5页/共71页What is Virtual Machine? 虚拟机是一种软件; 它创建了一种虚拟的环境; 将用户与底层平台隔离开来。第6页/共71页 JVM:执行Java字节码的虚拟机 JVM可适应所有的硬件与OS平台,从而使得Java具有“一次书写,到处运行”的能力

2、 在JVM上运行的程序必须首先被编译为标准的二进制格式的文件:.classJava Virtual Machine (JVM)第7页/共71页 注意:Java class文件并不是机器代码或目标代码,而是一种具有标准中间格式的二进制文件,无法直接在任何OS平台上执行; Java Class必须在JVM的支持下才能真正执行; java class文件在JVM下运行,运行策略可能为: 解释器 JIT编译器Java Class在JVM上的执行第8页/共71页JVM的执行机制第9页/共71页 每个特定的OS需要实现自己的JVM 在执行具体的class代码之前,JVM需要针对特定的OS环境,进行以下转换

3、 Load and store Type conversion Object creation and manipulation Operand stack management (push / pop) Control transfer (branching) Method invocation and return Throwing exceptions 将JAVA CLASS代码转化为特定OS所能支持的程序运行模式JVM的功能与作用第10页/共71页总结:基于JVM的Java程序开发与执行过程第11页/共71页解释器 Interpreter问题不管何种类别的虚拟机,本质上都是在高层次抽象

4、的用户与低层次抽象的OS/硬件之间建立一道屏障。但是,如何把上层应用的请求映射到下层OS/硬件系统的执行?p解释器(Interpreter)p基于规则的系统(Rule-based System)第12页/共71页 解释器是一个用来执行其他程序的程序。 解释器针对不同的硬件平台实现了一个虚拟机。 将高抽象层次的程序翻译为低抽象层次所能理解的指令,以消除在程序语言与硬件之间存在的语义差异。解释器 Interpreter第13页/共71页解释器 解释器通常用来在程序语言定义的计算和有效硬件操作确定的计算之间建立对应和联系。 简单和小规模的解释器只完成基本的信息识别和转换 复杂的解释器需要从词法到句法

5、、到语法的复杂识别和处理第14页/共71页例如要在手机上进行应用开发:n通常手机上都有一些小型的操作系统。要在手机上写应用程序。n如果直接在手机上写,是非常痛苦的。如代码的输入、程序的调试、编译、运行都非常困难。n但是手机上的应用程序与PC机上的完全不同,它跑在不同的操作系统上面,使用的是不同的处理器,同时也涉及到不同的处理指令。n即使想在PC机上进行应用开发,也会碰到一个问题。手机上的指令在PC机上找不到,手机上调用的指令在PC机上是不被支持的。n这时,就需要一个能在PC机上模拟手机程序的嵌入式系统,使手机的特殊指令能在PC机运行。n也就是需要一个解释器或是模拟器,它的功能是通过在PC机上模

6、拟手机上的指令,从而在PC机上能够运行手机上的程序。这样就可以在PC机上开发好后,再放到手机上运行。进而使整个手机上的应用程序开发变得容易。解释器第15页/共71页解释器 作为一种体系结构,解释器已经被广泛应用在从系统到应用软件的各个层面, 包括各类语言环境、Internet浏览器、数据分析与转换等; LISP、Prolog、JavaScript、VBScript、HTML、产生式系统、数据库系统(SQL解释器)、各种通信协议等。第16页/共71页n基本构件:(1个作为执行引擎的状态机和3个存储器)p解释器引擎p存储区被解释的源代码解释器引擎当前的内部控制状态的表示:在某个时刻需要执行哪些指令

7、程序当前执行状态的表示n连接器:过程调用和直接存储器访问。解释器组成第17页/共71页 解释器在软件中的应用由来已久,早期的程序语言环境就分为编译(Compilation)和解释(Interpretation)两大类。 二者在目标、功能与实现上有何差别? 二者的性能有何差别?解释器和编译器Interpreter versus compiler第18页/共71页Compiler (编译器) 编译器不会执行输入的源程序代码,而是将其翻译为另一种语言,通常是可执行的机器码或目标码,并输出到文件中以便随后链接为可执行文件并加以执行Interpreter (解释器)n在解释器中,程序源代码被解释器直接加

8、以执行。第19页/共71页解释器和编译器Interpreter versus compiler第20页/共71页 解释器的执行速度要慢于编译器产生的目标代码的执行速度,但是却低于编译器“编译+链接+执行”的总时间 解释器通常省略了链接与编译的步骤,从而降低编程时间 edit-interpret-debug (编辑源代码-解释-调试) edit-compile-link-run-debug (编辑源代码-编译-链接-运行-调试) 解释器执行速度之所以慢,是因为每次解释执行的时候,都需要分析程序的结构,而编译代码则直接执行而无需重复编译 解释器对内存的分配是在解释时才进行的;而编译器则是在编译时进

9、行,因此运行时直接将程序代码装入内存并执行即可解释器和编译器Interpreter versus compiler第21页/共71页 传统解释器(traditionally interpreted) 纯粹的解释执行 基于字节码的解释器(compiled to bytecode which is then interpreted) 编译解释执行 实时编译器Just-in-Time (JIT) 编译|解释执行解释器的三种策略第22页/共71页 解释器直接读取源代码并加以执行; ASP Excel JavaScript MATLAB etc传统解释器第23页/共71页JVM中的解释器 Java的源程

10、序不是直接交给解释器解释,而是先经过一个编译过程,把Java源程序翻译成一种特定的二进制字节码文件(Bytecode),再把这个字节码文件交给Java解释器来解释执行; javac 程序将Java源代码编译为字节码 Java编译器所生成的可执行代码可以不基于任何具体的硬件平台,而是基于JVM。 C/C+要的源程序要在不同的平台上运行,必须重新进行编译字节码解释器Bytecode interpreter第24页/共71页JVM中的解释器第25页/共71页 在该类解释器下,源代码首先被“编译”为高度压缩和优化的字节码,但并不是真正的机器目标代码,因而与硬件平台无关; 编译后得到的字节码然后被解释器

11、加以解释; 例如: Java Perl PHP Python etc字节码解释器Bytecode interpreter第26页/共71页 JIT模糊了解释器、字节码解释器和编译器之间的边界与区分第27页/共71页 实时编译JIT中,字节码在运行时被编译为本机的目标代码 第一步是编译得到字节码 字节码被 配置到目标系统中 当字节码被执行时,运行环境下的编译器将其翻译为本地机器码) JIT模糊了解释器、字节码解释器和编译器之间的边界与区分实时编译器JIT (Just-in-time) Complier第28页/共71页需编译哪些部分? 只有当某个函数要被执行时,才被编译,因此称为JIT 而且,J

12、IT并不是编译全部的代码,而是只编译那些被频繁执行的代码段) 被执行多次的方法; 包含多次循环的方法.实时编译器JIT (Just-in-time) Complier第29页/共71页 适用的应用程序: 应用程序并不能直接运行在最适合的机器上,或不能直接以最适合的语言执行 优点: 有助于应用程序的可移植性和程序设计语言的跨平台能力 可以对未实现的硬件进行仿真,在测试上提供一个安全的和低成本的解决方案,提供了更多的灵活性。 缺点: 额外的间接层次(运行都是模拟的),带来了系统性能的下降(执行的速度)解释的程序比编译的程序慢很多比硬件实现慢更多 在解释器风格下进行测试,需要额外的构建软件解释器第3

13、0页/共71页基于规则的系统Rule-based System第31页/共71页基于规则的系统Rule-based System几个例子第32页/共71页if-else分支结构第33页/共71页当if-else结构越来越多时第34页/共71页业务逻辑与程序代码之间的“语义鸿沟”第35页/共71页业务逻辑的频繁变化第36页/共71页如何解决上述问题?第37页/共71页基于规则的系统第38页/共71页基于规则的系统第39页/共71页基于规则的系统第40页/共71页基于规则的系统第41页/共71页基于规则的系统第42页/共71页基于规则的系统第43页/共71页基于规则的系统第44页/共71页基于规则

14、的系统第45页/共71页基于规则的系统第46页/共71页基于规则的系统第47页/共71页基于规则的系统规则的分类第48页/共71页基于规则的系统应用:基于规则的专家系统 (Rule-based Expert System)第49页/共71页基于规则的系统应用:一般专家系统结构下图:第50页/共71页基于规则的系统应用:业务规则引擎(Business Rule Engine)第51页/共71页3.7 3.7 反馈控制环风格反馈控制环风格第52页/共71页3.7 反馈控制环风格 源自于控制理论中的模型框架,将事务处理看做输入、加工、输出、反馈、再输人的一个持续的过程模型。 反馈控制系统:通过度量受

15、控制变量来调控其他过程变量的闭环系统。 反馈控制环风格能处理复杂的自适应问题,尤其广泛应用于产品线的自动机械控制软件领域中。 如生产管理系统、工控系统、供电、水利甚至可以推广到商务软件中体现的管理模型中。第53页/共71页54542021-11-153.7 反馈控制环风格机器学习的基本模型机器学习的基本模型第一步,训练样本被输入到学习内容中,这一部分包含基本的将被查第一步,训练样本被输入到学习内容中,这一部分包含基本的将被查询的基本数据。询的基本数据。第二步,真正的数据被输入并得到结果。第二步,真正的数据被输入并得到结果。第54页/共71页55552021-11-153.7 反馈控制环风格在学

16、习构件的分析和计算之后,学习结果被输出。但同时,学习内容在学习构件的分析和计算之后,学习结果被输出。但同时,学习内容将会检查结果的有效性,然后学习结果会回馈到学习构件当中。通过将会检查结果的有效性,然后学习结果会回馈到学习构件当中。通过这一反馈,学习构件的学习能力得到提高,知识得到增长。这一反馈,学习构件的学习能力得到提高,知识得到增长。第55页/共71页3.8 七种经典软件体系风格比较不同的结构风格分别具有各自的特点、优劣和用途。以下从特点、优势、缺陷和应用4个方面对7种体系结构风格进行分析比较。1. 管道过滤器风格u每个功能性构件都有一组输入和输出。每个过滤器都是独立的,不需要与其他过滤器

17、建立联系。每个过滤器从它的输入接口读取数据,对这些数据进行处理,然后通过输出接口输出。u这种体系结构风格便于支持重复使用,易于维护和评估,支持有针对性的分析和并发。u但同时,这种结构必须在两个独立的过滤器问处理联系数据,缺乏交互性。u这种结构常用于通信领域和编译器。第56页/共71页57572021-11-153.8 七种经典软件体系风格比较2. 面向对象风格u在这种风格中,数据表示和相关操作被封装;类的对象负责它们的整合。对于某个对象来说,其他的对象是透明的,仅仅暴露出接口。u这种风格的优点是高模块化、代码封装、代码共享、易维护以及良好的扩展性。u缺点是调用者必须知道被调对象的引用。当对象引

18、用改变时,必须通知所有可能调用其方法的对象。这一特点使系统具有比较高的耦合。u此风格广泛运用于用面向对象语言实现的系统中,如Java和C。第57页/共71页58582021-11-1558582021-11-153.8 七种经典软件体系风格比较3. 事件驱动风格u基于此风格的系统由许多子系统或元素组成。整个系统有许多目标,并利用消息协作的方式来工作。在这些子系统中,有一个主子系统负责整个系统的运行。每个元素拥有事件接收和处理机制。u这种风格易于完成并发多任务,拥有良好的延展性。子系统通过复合可以构成更复杂的系统。与面向对象风格不同的是,这种风格具有良好的交互特性。u缺点是:它对系统计算控制能力

19、弱,很难共享大量数据,对象之间的逻辑也较复杂。u集成开发环境(Integrated Development EnVironment,IDB) 应用了此风格。第58页/共71页59592021-11-1559592021-11-1559592021-11-153.8 七种经典软件体系风格比较4.分层风格u整个的系统被分解成许多层。每层为上层提供服务,同时接受来自较低层的服务。u这类型的风格支持抽象化和软件重用性,而且有不错的扩展性。u但是因为方法调用的间接性,可能影响整个系统的性能。u典型的分层系统是网络协议。第59页/共71页60602021-11-1560602021-11-15606020

20、21-11-153.8 七种经典软件体系风格比较5. 数据共享,也称为库风格u中央的数据单元被共享,它为一些单元提供存储和访问服务。整个的系统有一个控制单元。u这种风格具备良好的知识库扩展性,能解决具体领域的问题。u因此这种风格通常用于专家系统,如自然语言处理和模式识别。第60页/共71页61612021-11-1561612021-11-1561612021-11-153.8 七种经典软件体系风格比较6.解释器风格u具有固定的结构、伪代码和解释器引擎。解释器引擎包括它的定义及其操作状态。u以这种风格为基础的系统能处理具体领域的问题,典型的应用是解释性语言的解释器。第61页/共71页62622

21、021-11-1562622021-11-1562622021-11-1562622021-11-153.8 七种经典软件体系风格比较7.反馈控制环风格u最典型特性是:通过其学习构件和决策者构件的运用,能利用学习和信息更新增强自身的功能。u它的典型的应用是生产管理系统。第62页/共71页63632021-11-1563632021-11-1563632021-11-153.8 七种经典软件体系风格比较从这7种结构风格的比较中,能发现这些风格具有的一个共同性质属性:良好的扩展性。实际上,基于软件工程学的原则,好的软件总是倾向于可变化、易扩展。扩展困难的软件当然不是好软件,因此一种不能支持系统扩展

22、的结构风格将不具备可扩展性。每种风格只能在特定环境中使用。它们趋向于以牺牲其他质量属性为代价得到其中一个好的质量属性。如,管道过滤器风格有不好的交互性,但事件驱动风格却对这种交互有不错的支持。事件驱使风格很难共享数据,但数据共享风格最大的优势正是对数据共享的支持。第63页/共71页3.12 异构风格 3.12 异构风格异构风格 的集成的集成 案例一案例一第64页/共71页3.12 异构风格异构风格 的集成的集成所有的体系结构不仅有很紧密的联系,而且在大所有的体系结构不仅有很紧密的联系,而且在大多数情况下是被一起使用的。多数情况下是被一起使用的。对于一个实际的系统,甚至不能判断它是对于一个实际的

23、系统,甚至不能判断它是A风格、风格、B风格还是风格还是C风格,因为没有足够的理由把它归风格,因为没有足够的理由把它归为任何一种独立的体系结构风格。为任何一种独立的体系结构风格。这种系统类型可以被称为这种系统类型可以被称为复合系统复合系统,这种系统的,这种系统的构建模式被称为构建模式被称为异构风格的集成异构风格的集成。第65页/共71页第66页/共71页上图展示了一个虚拟系统,它整合了许多体系结构风格。可上图展示了一个虚拟系统,它整合了许多体系结构风格。可以把整个系统当成一个以把整个系统当成一个分层系统分层系统。这样它可以被分成两层:。这样它可以被分成两层:第第1层是原始数据生成层,第层是原始数

24、据生成层,第2层是解释层。层是解释层。n在第在第1层,主要的组成部分是层,主要的组成部分是管道过滤器管道过滤器子系统。子系统。(1)第第1个过滤器中的数据能够被送到第个过滤器中的数据能够被送到第2个过滤器中。个过滤器中。(2)当第当第2个过滤器收到数据时,将会产生相应的信息,然个过滤器收到数据时,将会产生相应的信息,然后将此信息传送到事件队列构件和服务提供对象构件中。后将此信息传送到事件队列构件和服务提供对象构件中。(3)当事件队列不为空时,它将会激发相应的对象来处理当事件队列不为空时,它将会激发相应的对象来处理这个事件,并完成任务。这是一个典型的这个事件,并完成任务。这是一个典型的事件驱动体事件驱动体系结系结构风格的例子。构风格的例子。3.12 异构风格异构风格 的集成的集成 案例一案例一第67页/共71页(4)当服务提供对象构件接收到由第当服务提供对象构件接收到由第2个过滤器传来的信个过滤器传来的信息时,它将把这些信息记录在信息库里。息时,它将把这些信息记录在信息库里。u它就像是在数据共享风格中的黑板。在这个信息库

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论