软件设计-理论课08

上传人:luoxia****01803 文档编号:74516746 上传时间:2019-01-28 格式:PPT 页数:62 大小:720KB
返回 下载 相关 举报
软件设计-理论课08_第1页
第1页 / 共62页
软件设计-理论课08_第2页
第2页 / 共62页
软件设计-理论课08_第3页
第3页 / 共62页
软件设计-理论课08_第4页
第4页 / 共62页
软件设计-理论课08_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《软件设计-理论课08》由会员分享,可在线阅读,更多相关《软件设计-理论课08(62页珍藏版)》请在金锄头文库上搜索。

1、软件体系结构,Software Architecture,教学内容,2,软件体系结构风格(2),Software Architecture Styles,提纲,虚拟机-解释器风格 虚拟机(Virtual Machine) 解释器(Interpreter) 案例分析:KWIC,4,1. 虚拟机(Virtual Machine),5,问题,你认为JAVA最吸引人的特性是什么?,Built-in Networking,Good Performance,Dynamic Binding,Security,Automatic Memory Management,Several dangerous feat

2、ures of C&C+ eliminated,Robust,Compiler/Interpreter Combo,Object Oriented,Platform Independence,Write Once, Run Anywhere,6,Write Once, Run Anywhere,7,JAVA如何支持平台独立性,Java虚拟机,8,什么是虚拟机(Virtual Machine)?,虚拟机是一种软件 它创建了一种虚拟的环境 将用户与底层平台隔离开来,VM,VM,VM,VM,“虚拟机”的分类,系统级的虚拟机(System virtual machine):对OS的虚拟,把一台物理上独

3、立的机器虚拟为多个不同的虚拟机,每个虚拟机可支持运行各自的操作系统,本质:在OS与硬件之间建立隔离。 Hardware virtual machine(硬件虚拟机) 进程级的虚拟机(Process virtual machine):对单一程序的虚拟,其本质是在应用程序与OS之间建立隔离。 Application virtual machine(应用程序虚拟机),10,硬件虚拟机,想在Android下开发程序,必须买一部Android手机? 不需要,下载一个Android虚拟机(硬件虚拟机)即可 硬件虚拟机(Hardware virtual machine) 在一台服务器上虚拟地构造若干个独立的

4、执行环境,每一个虚拟环境负责支持一个OS内核的执行,这些OS可以与该服务器本地的OS不同 从而允许在一个OS上书写的应用程序可以在一台运行其它OS的机器上执行,11,虚拟机例子:VMware,12,应用程序虚拟机,应用程序虚拟机(Application virtual machine) 将用户使用的应用程序与计算机系统隔离开来的软件 应用程序无需针对不同的OS和硬件环境而开发不同的版本,只需针对虚拟机开发即可 应用程序使用解释器(interpreter )或JIT(Just-in-Time)技术在加以运行,13,Java虚拟机(JVM),JVM:执行Java字节码的虚拟机 JVM可适应所有的硬

5、件与OS平台,从而使得Java具有“一次书写,到处运行”的能力 JVM的标准输入:Java Class 在JVM上运行的程序必须首先被编译为标准的二进制格式的文件:.class,14,Java Class在JVM上的执行,Java class文件并不是机器代码或目标代码,而是一种具有标准中间格式的二进制文件,无法直接在任何OS平台上执行。 Java Class必须在JVM的支持下才能真正执行 Java class文件在JVM下运行,运行策略可能为:解释器或JIT编译器,15,JVM的执行机制,JVM (Java虚拟机),16,JVM的功能与作用,将Java Class代码转化为特定OS所能支持

6、的程序运行模式,每个特定的OS需要实现自己的JVM 在执行具体的class代码之前,JVM需要针对特定的OS环境,做以下的事情: Load and store Type conversion Object creation and manipulation Operand stack management (push / pop) Control transfer (branching) Method invocation and return Throwing exceptions,17,基于JVM的Java程序开发与执行过程,18,2. 解释器(Interpreter),19,MS-DOS

7、的命令解释器,用户的命令行请求 (e.g., dir *.jsp /a /p),操作系统内核的 执行指令?,20,解释器,解释器是一个用来执行其他程序的程序 解释器针对不同的硬件平台实现了一个虚拟机 将高抽象层次的程序翻译为低抽象层次所能理解的指令,以消除在程序语言与硬件之间存在的语义差异,源代码,解释器,宿主系统 (OS、硬件),解释执行,21,解释器,解释器通常用来在程序语言定义的计算和有效硬件操作确定的计算之间建立对应和联系 简单和小规模的解释器只完成基本的信息识别和转换 复杂的解释器需要从词法到句法、到语法的复杂识别和处理 作为一种体系结构风格,解释器已经被广泛应用在从系统软件到应用软

8、件的各个层面 包括各类语言环境、Internet浏览器、数据分析与转换等 LISP、Prolog、JavaScript、VBScript、HTML、Matlab、数据库系统(SQL解释器)、各种通信协议等。,22,解释器的组成,被解释执行的程序,程序执行的当前状态,解释器引擎,解释器引擎 的内部状态,23,解释器风格,基本构件: 解释器引擎 存储区: 被解释的源代码 解释器引擎当前的内部控制状态的表示:在某个时刻需要执行哪些指令 程序当前执行状态的表示 连接器: 对存储区的数据访问,24,解释器 Vs. 编译器,解释器在软件中的应用由来已久,早期的程序语言环境就分为编译(Compilation

9、)和解释(Interpretation)两大类。 编译器 解释器,25,源代码 (.c+),编译器,目标码 (.obj),可执行文件 (.exe),宿主系统 (OS、硬件),编译,链接,执行,源代码,解释器,宿主系统 (OS、硬件),解释执行,解释器 Vs. 编译器,编译,链接,执行,解释执行,分析程序结构 源代码目标码 确定内存分配与访问方案,分析程序结构 确定内存分配与访问方案 分配内存 解释并执行程序,分配内存 执行目标码(机器码),编译器,解释器,26,解释器 Vs. 编译器,解释器的执行速度要慢于编译器产生的目标代码的执行速度,但是却低于编译器“编译+链接+执行”的总时间 解释器通常

10、省略了链接与编译的步骤,从而降低编程时间 编辑源代码-解释-调试 编辑源代码-编译-链接-运行-调试,27,解释器 Vs. 编译器,解析器执行速度之所以慢,是因为每次解释执行的时候,都需要分析程序的结构,而编译代码则直接执行而无需重复编译 解释器对内存的分配是在解释时才进行的;而编译器则是在编译时进行,因此运行时直接将程序代码装入内存并执行即可,28,解释器的三种策略,传统解释器 纯粹的解释执行 基于字节码的解释器 编译解释执行 Just-in-Time (JIT)实时编译器 编译|解释执行,29,传统解释器,解释器直接读取源代码并加以执行; ASP Excel JavaScript MATL

11、AB ,源代码,解释器,宿主系统 (OS、硬件),解释执行,30,基于字节码的解释器,在该类解释器下,源代码首先被“编译”为高度压缩和优化的字节码,但并不是真正的机器目标代码,因而与硬件平台无关。 编译后得到的字节码然后被解释器加以解释 例如: Java、Perl、PHP、Python、 ,源代码 (.java),编译器,字节码 (.class),宿主系统 (OS、硬件),编译,解释执行,解释器,31,JVM中的解释器,Java的源程序不是直接交给解释器解释,而是先经过一个编译过程,把Java源程序翻译成一种特定的二进制字节码文件(Bytecode),再把这个字节码文件交给Java解释器来解释

12、执行 javac程序将Java源代码编译为字节码 Java编译器所生成的可执行代码可以不基于任何具体的硬件平台,而是基于JVM。 C/C+要的源程序要在不同的平台上运行,必须重新进行编译。,32,实时编译,实时编译JIT中,字节码在运行时被编译为本机的目标代码 第一步是编译得到字节码 字节码被配置到目标系统中 当字节码被执行时,运行环境下的编译器将其翻译为本地机器码,33,实时编译,JIT模糊了解释器、字节码解释器和编译器之间的边界与区分 JIT 也用于.NET和Java平台,源代码 (.java),编译器,字节码 (.class),宿主系统 (OS、硬件),编译,解释执行,解释器,编译器,目

13、标码 (.obj),执行,编译,34,JIT需编译哪些部分?,只有当某个函数要被执行时,才被编译,因此称为JIT 而且,JIT并不是编译全部的代码,而是只编译那些被频繁执行的代码段 被执行多次的方法 包含多次循环的方法,35,问题,针对解释器的三种策略: 传统解释器(traditionally interpreted) 基于字节码的解释器 (compiled to bytecode which is then interpreted) Just-in-Time (JIT)编译器 对比各自的工作原理,并对比分析各自的优缺点。,36,2. 案例分析 (Key Word in Context, KW

14、IC),37,KWIC(Key Word in Context),KWIC索引是二次文献的辅助索引 这种索引的出现是现代科学技术的发展和科技文献急剧增长的产物 KWIC索引是最早出现的用电子计算机编制的文献索引 1972年,David L. Parnas在论文“On the Criteria To Be Used in Decomposing Systems into Modules”将KWIC索引系统作为一个案例用于模块化设计的研究 KWIC被全世界各个大学的软件设计课程奉为课堂讲义或者作业的经典案例,38,KWIC:功能需求,功能需求: 接受一些行 每行有若干词 每个词由若干字符组成 每行

15、都可以循环移位:重复地把第一个词删除,然后接到行末 KWIC把所有行的各种移位情况按照字母表顺序输出,39,KWIC:举例,40,A third way for styles to be combined is to elaborate one level of,A third way for styles to third way for styles to A way for styles to A third for styles to A third way styles to A third way for to A third way for styles be combined

16、is to combined is to be is to be combined to be combined is elaborate one level of one level of elaborate level of elaborate one of elaborate one level,A third way for styles to be combined is to combined is to be elaborate one level of for styles to A third way is to be combined level of elaborate one of elaborate one level one level of elaborate styles to A third way for third way for styles to A to A third way for styles to be combined is way for styles

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > Windows相关

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号