精华内容
下载资源
问答
  • 计算机体系结构.是系统结构还是体系结构
    千次阅读
    2019-05-21 16:01:37

    计算机体系结构.体系结构简介

    什么是计算机体系结构

    对于“Computer Architecture”,有些地方译为“计算机系统结构”,有些地方译为“计算机体系结构”。这两种翻译都对,只是经常会被混用。本文将以“体系结构”为主,不过如果偶尔出现了“系统结构”那也不要慌,其实指的都是”Computer Architecture“。

    计算机体系结构包含了整个计算机设计与实现的方方面面,是对整个计算机系统的组织、功能、实现的全面考量【1】。值得一提的是,过去(上世纪)的体系结构通常指的是指令集架构(Instruction Set Architecture,简称ISA),彼时摩尔定律的效果十分强劲,只需堆砌更多的晶体管就可以获得性能上的提升,因此并不需要太多的微结构设计。

    当然如今已经不仅仅是ISA了,但ISA是仍是体系结构中很重要的一部分,因为ISA设计是关乎软硬件结合的关键:软件通过指令操控硬件,硬件根据指令执行具体功能。ISA设计通常可以被视为系统结构所涵盖范围的上层,而下层是微结构(Microarchitecture)。

    有些地方会将“体系结构”和“微结构”所混淆,其实是不准确的。微结构对应的是某一具体ISA在某种特定处理器上的具体实现【2】,对于常见的桌面处理器其微结构设计通常包括但不限于:流水线、存储层次结构、功能单元、乱序结构、片上网络等等,而对于专用的嵌入式处理器常常不采用乱序结构(更肯定一点的话,可以去掉“常常”二字)且流水线也十分简单。相同的ISA可以有不同的微结构实现,比如Intel和AMD的处理器都是x86指令集,但其内部架构千差万别,耳熟能详的有Intel的酷睿系列、至强系列,AMD的推土机和锐龙。

    但是,体系结构设计常常不仅仅需要这两部分的知识,或者换句话说,对于体系结构而言,仅仅把视角局限于ISA和微结构是远远不够的:

    • 对于ISA设计,其需要和应用(操作系统、编译器、应用软件等)相结合。
      • 比如在x86指令集发展过程中,其支持的越来越多的扩展指令集,如SSE、AVX、VT-x等等【3】,其主要目的是能够针对某种特定的应用,为其提供更直接的指令,从而使得程序运行更快。当然除了性能方面的考量,也有对应用功能上的支持,比如虚拟化的支持、系统特权级的支持、内存保护的支持等等。
      • 因此ISA设计绝不仅仅是拍脑袋想出来的一堆指令,其设计都是有着广泛考量,要做到对编译器友好、对底层实现友好、对程序运行友好、对操作系统友好等等各方面,设计出一个足够好的ISA的确是不太容易的一件事。
      • (题外话:x86指令集足够好吗?单从设计上看x86称不上好,但Intel实力雄厚,可以背下足够沉重的历史包袱,使得x86指令集的发展中做到了很好的兼容性,而这也是其能够赢得市场的关键原因)
    • 对于微结构设计,其需要和硬件实现相互配合,这就需要微结构设计人员具备电路逻辑设计、芯片封装与测试等广泛的硬件知识。
      • 比如流水线的设计需要与时钟频率相互配合,一般而言每级流水的最佳延迟是6至8个FO4的延迟【4】。此外很重要的一点,或者说是最重要的一点,就是微结构设计与性能、成本和功耗之间的关系。要使微结构设计在这三者之间达到平衡,从而取得最佳的设计效果,进而达到预期的设计目标,是很不容易的一件事。
      • 不十分准确但足以表达这种权衡(tradeoff)的说法是,当专注提升其中某一个指标的时候,往往会影响另外两个指标,比如当以复杂的设计来取得较好的性能时,可能需要付出较大的芯片面积从而增加成本(涉及生产良率、测试成本等等),同时复杂的逻辑也会带来功耗上的压力。

    在体系结构领域的经典著作《量化研究方法》(第五版)中,体系结构涵盖了这三个方面:ISA、组成(微结构)、硬件。

    • 计算机的实现包括两方面:组成和硬件。组成即“微结构”,包括存储系统、处理器内部实现等等,与前文所述的概念一致。硬件则指的是具体实现,包括计算机的详尽数字电路逻辑设计和芯片封装技术。可以认为,微结构即描述了计算机逻辑上的设计,而硬件则描述了计算机具体的实现,二者结合来实现了一个具体的计算机。而ISA则可以认为是计算机所表露的接口,所有用该ISA所写的程序,都可以在该计算机上运行。
    • 目前我个人更倾向于把体系结构集中在ISA和微结构这两方面上,而将硬件相关的知识作为微结构设计中所不可缺少的一部分。要设计出一个好的微结构必然需要对硬件有相当的理解,能从逻辑设计上看到真正的硬件实现时所需要的资源,并保证微结构的设计符合硬件的约束。在我看来体系结构最具吸引力的是微结构,而对微结构设计的学习并不需要深入了解硬件,但是在真正实现一个可以流片的芯片时,必然需要与硬件工艺进行对接。

    计算机系统层次

    从上至下来看到整个计算机系统,可以大致分成这样几个层次:

    1. Problem
    2. Algorithm
    3. Program
    4. ISA
    5. Microarchitecture
    6. Circuits/Gates
    7. Electrons

    前三层是对所有软件的一个划分:首先我们有了某个问题(比如人们需要一个程序来管理各种硬件资源),然后设计一个算法(如何管理呢,划分成内存管理、进程管理等),最后编成程序(就是操作系统啦)。

    对于Program这一级通常可以分为三个层次,即编程语言(Programming Language)、汇编语言(AssemblyLanguage)和机器码(Machine Code)。如果进一步划分下去,编程语言又分为高级编程语言(如Java、Python)和低级编程语言(如C、BASIC)。低级编程语言并不是格调上更low,而是更接近底层,可以直接与硬件进行交互,需要具备一定的计算机知识才能比较好的学习和使用,比如C的指针其实就是内存地址。而高级语言则进行了一定的抽象,屏蔽的硬件细节,使得人们可以不需要了解硬件的组织和运行就可以编写程序,就像写数学公式一样来完成编程工作,比如Matlib。

    再向下就到了体系结构所涵盖的范围了,即ISA和微结构。再下层的Circuits/Gates即电路。微结构设计通常使用HDL(Hardware Description Language)语言来完成。以verilog为例,其包含若干抽象层次,比如你可以使用“+”来完成一个加法操作,也可以亲自上手使用逻辑门来设计出一个加法器。

    而要设计出一个满足需求的结构,数字电路的知识是必不可少的。至少需要对电路运行的时钟有所了解,才能开始上手HDL的学习。更进一步,当需要更好的设计时,那就更不能缺少对电路的了解了。比如相同功能的实现常常有若干种不同的电路组成可以完成,通常使用更少的门电路可以减少面积、降低延迟,但也有可能面临稳定性的问题。而面对复杂的功能需求,则需要设计出一个足够高效的电路结构,否则则会拖慢整个流水线,从而降低芯片的执行效率。尽管微结构设计人员不需要亲自上手设计出电路上的每一个逻辑门,但也要时刻明白不能把过重的任务压在电路设计上,要避免设计太过复杂使得电路难以实现。此外也需要注意到电路的功耗等等其他因素。

    而Electrons则更加底层,这一层通常不关心微结构是如何设计的,更不关心程序要如何运行,而是专注于把逻辑设计(HDL)实现成真正的数字电路,并且满足各种物理上的约束。比如晶体管尺寸不断降低,相同面积的芯片上可以集成越来越多的晶体管,但要如何保证尺寸这么小的晶体管能够正常运行,比如晶体管中越来越薄的绝缘层所面临的漏电问题,这些就是电子所需要关注的。

    后续目录

    目录

    1. 体系结构简介 introduction
      1.1 概念
      1.2 计算机的层次结构
    2. 计算机简史 brief history
      2.1 两大定律与两大结构
      2.2 历史上的计算机
      2.3 北桥和南桥
    3. 微结构系列 microarchitecture
      3.1 流水线设计 pipeline design
      3.2 缓存层次 cache hierarchy
      3.3 乱序结构 out of order execution
      3.4 多发射结构 multiple instruction issue
      3.5 分支预测 branch prediction
      3.6 数据预取 data prefetching
      3.7 快表 TLB translation lookaside buffer
      3.8 缓存一致性 cache coherence
      3.9 内存一致性 memory consistency
      3.10 向量计算 vector execution
      3.11 图形计算 graph process unit
      3.12 片上网络 network on chip
    4. ISA设计 instruction set architecture
      4.1 CISC vs RISC
      4.2 现有指令集 x86 ARM POWER MIPS Alpha
      4.3 指令集架构设计原则 design rules
    5. 性能工程 & 功耗管理 & 成本控制
    6. Domain Specific Architecture

    参考资料

    [1] WiKiPedia.Computer architecture[EB/OL].(2019-03-02)[2019-04-29]
    https://en.wikipedia.org/wiki/Computer_architecture

    [2] WiKiPedia.Microarchitecture[EB/OL].(2019-03-03)[2019-04-29]
    https://en.wikipedia.org/wiki/Microarchitecture

    [3] WiKiChip.Core i5-8400[EB/OL].(2019-01-16)[2019-04-29]
    https://en.wikichip.org/wiki/intel/core_i5/i5-8400

    [4] M. S. Hrishikesh, Doug Burger, Stephen W. Keckler, Premkishore Shivakumar, Norman P. Jouppi, Keith I. Farkas: The Optimal Logic Depth Per Pipeline Stage is 6 to 8 FO4 Inverter Delays. ISCA 2002: 14-24

    更多相关内容
  • 装配式建筑7种常见结构体系和未来发展方向.doc
  • 常见操作系统体系结构

    千次阅读 2021-03-24 21:50:39
    常见操作系统体系结构 前言 开发一个操作系统,不是简单的上去就是写代码,而是要在需求分析的基础上,首先进行系统设计,具体就是软件体系结构设计。好的系统设计,才能使编写的系统具有很好的扩展性以及成长空间,...

    常见操作系统体系结构

    前言

    开发一个操作系统,不是简单的上去就是写代码,而是要在需求分析的基础上,首先进行系统设计,具体就是软件体系结构设计。好的系统设计,才能使编写的系统具有很好的扩展性以及成长空间,使得系统越用越好,而不是用着用着就用不下去了。本文介绍操作系统常见的体系结构,了解这些体系结构才能更好的理解各种操作系统。

    一、一种常见的OS总体结构风格

    在这里插入图片描述
    在这里插入图片描述
    OS总体结构由用户接口子系统和基础平台子系统两部分组成。用户接口子系统供计算机用户直接使用,而基础平台子系统为用户接口子系统提供系统调用。可以理解为基础平台子系统为用户接口子系统服务,用户接口子系统为用户服务,并且这些关系具有单向性

    二、OS基础平台子系统结构风格(一)

    在这里插入图片描述

    1.分层结构

    在这里插入图片描述
    分层结构的每一层均对其上各层隐藏其下各层的存在。即每层只与其直接临近的上下两层有直接关系。

    )

    2.分级结构

    在这里插入图片描述
    分级结构中每级只与其所有下级有关系。
    )

    3.分块结构

    在这里插入图片描述
    分块结构中各个块之间都可以相互调用,相互存在关系。
    )

    4.分层、分级、分块结构风格的关系及比较

    在这里插入图片描述
    分层结构设计的要求最严格,分级结构次之,分块结构最简单。
    在这里插入图片描述
    分块之所以不灵活是因为各个模块之间的相互调用,导致任何一个模块的修改可能影响其它模块。

    三、OS基础平台子系统结构风格(二)

    在这里插入图片描述
    在这里插入图片描述
    模式即CPU的特权模式,即CPU的操作权限等级

    1.多模式结构风格的结构特征

    在这里插入图片描述
    在这里插入图片描述
    各模块可能是一级保护,二级保护,三级保护等等,模块之间的切换需要切换保护级别,这使得安全提升的同时,会以降低基础平台子系统的性能为代价。

    2.单模式结构风格的结构特征

    在这里插入图片描述
    在这里插入图片描述

    3.多模式和单模式结构风格之间的比较

    在这里插入图片描述

    四、常见的基础平台子系统结构风格(三)

    1.双模式基础平台子系统结构风格

    双模式基础平台子系统介于多模式和单模式之间,既能提高安全性,又能尽量小的降低系统性能。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    如果核外子系统要访问核内子系统,首先要经过判断,判断核外子系统的操作是否能合法的进入核内子系统(软中断),这个过程需要花费时间。当然如何判断是否合法是由预先定义好的规则实现,但是黑客总能找到尚未定义的规则,然后通过这条规则(漏洞)进入内核子系统获取数据,或者破坏系统。然后系统工程师会赶快补上这条规则,这就是黑客和系统工程师之间的较量,较量的同时也会使得系统越来越完善。

    2.微核结构风格

    在这里插入图片描述
    微核结构就是尽可能的去除核心子系统的多余部分,使得核心部分越“轻”越好,但这往往不好实现。
    在这里插入图片描述

    展开全文
  • 随着软件规模和复杂程度...经过对常见软件体系结构模型的分析后,提出一种新的软件建模方式——基于中间层的软件体系结构。然后,通过一个实际的例子——校园一卡通系统,阐述了所提出的基于中间层的软件体系结构模型。
  • 本资源可以作为《软件设计模式体系结构》的期末复习提纲,需要的朋友可以下载哦!
  • J2EE体系结构设计

    2021-02-27 17:40:50
    模型-视图-控制(model-view-control,简称MVC)结构是目前最常见的J2EE应用所基于的体系结构,MVC主要适用于交互式的Web应用,尤其是存在大量页面及多次客户访问及数据显示;相比较而言,一个工作流体系结构更多应用...
  • 软件体系结构中五种常见风格的剖析软件体系结构中五种常见风格的剖析软件体系结构中五种常见风格的剖析软件体系结构中五种常见风格的剖析
  • 模型-视图-控制(model-view-control,简称MVC)结构是目前最常见的J2EE应用所基于的体系结构,MVC主要适用于交互式的Web应用,尤其是存在大量页面及多次客户访问及数据显示;相比较而言,一个工作流体系结构更多应用...
  • 软件体系结构表示系统的框架结构,用于从较高的层次上来描述各部分之间的关系和接口,主要包括构件、构件性质和构件之间的关系。 通过使用软件体系结构,可以有效地分析用户需求,方便系统的修改,以及减小程序构造...

    一、概述

    软件体系结构表示系统的框架结构,用于从较高的层次上来描述各部分之间的关系和接口,主要包括构件构件性质构件之间的关系

    通过使用软件体系结构,可以有效地分析用户需求,方便系统的修改,以及减小程序构造风险。

    随着软件规模不断地增大和复杂程度日益增高,系统框架架构的设计变得越来越关键。软件框架设计的核心问题是能否复用已经成型的体系结构方案。由此,产生了软件体系结构风格的概念。

    二、常见风格分类

    体系结构风格的形成是多年探索研究和工程实践的结果。一个良好和通用的体系结构风格往往是工程技术领域成熟的标志。经过多年的发展,已经总结出许多成熟的软件体系结构风格,例如:

    1. 数据流风格:批处理和管道/过滤器。
    2. 调用/返回风格:主程序/子程序、层次结构和C/S。
    3. 面向对象风格。
    4. 独立部件风格:进程通信和事件驱动。
    5. 虚拟机风格:解释器和基于规则的系统。
    6. 数据共享风格:数据库系统和黑板系统。

    三、 体系结构风格

    1.管道/过滤器 体系结构风格

    惯用模式:

    主要包括过滤器和管道两种元素。在这种结构中,构件被称为过滤器,负责对数据进行加工处理。每个过滤器都有一组输入端口和输出端口,从输入端口接收数据,经过内部加工处理之后,传送到输出端口上。数据通过相邻过滤器之间的连接件进行传输,连接件可以看作输入数据流和输出数据流之间的通路,这就是管道。

    原理图:

     

    优点:

    1. 简单性。
    2. 支持复用。
    3. 系统具有可扩展性和可进化型。
    4. 系统并发性(每个过滤器可以独立运行,不同子任务可以并行执行,提高效率)。
    5. 便于系统分析。

    缺点:

    1. 系统处理工程是批处理方式。
    2. 不适合用来设计交互式应用系统。
    3. 由于没有通用的数据传输标准,因此每个过滤器都需要解析输入数据和合成数据。
    4. 难以进行错误处理。

     

    传统的编译器就是管道/过滤器体系结构风格的一个实例。编译器由词法分析、语法分析、语义分析、中间代码生成、中间代码优化和目标代码生成几个模块组成,一个模块的输出是另一个模块的输入。源程序经过各个模块的独立处理之后,最终将产生目标程序。编译器的框架结构如图:

    2.面向对象 体系结构风格

    惯用模式:

    在面向对象体系结构中,软件工程的模块化、信息隐藏、抽象和重用原则得到了充分的体现。在这种体系结构中,数据表示和相关原语操作都被封装在抽象数据类型中。在这种风格中,对象是构件,也成为抽象数据类型的实例。对象与对象之间,通过函数调用和过程调用来进行交互。

    原理图:

    优点:

    1. 一个对象对外隐藏了自己的详细信息
    2. 对象将数据和操作封装在一起
    3. 继承和封装方法为对象服用提供了技术支持

    缺点:

    1. 如果一个对象要调用另一个对象,则必须知道它的标识和名称
    2. 会产生连锁反应

    3.事件驱动 体系结构风格

    惯用模式:

    事件驱动就是在当前系统的基础之上,根据事件声明和发展状况来驱动整个应用程序运行。

    事件驱动体系结构的基本思想是:系统对外部的行为表现可以通过它对事件的处理来实现。在这种体系结构中,构件不再直接调用过程,而是声明事件。系统其他构件的过程可以在这些事件中进行注册。当触发一个事件的时候,系统会自动调用这个事件中注册的所有过程。因此,触发一个事件会引起其他构件的过程调用。

    原理图:

    优点:

    1. 事件声明者不需要知道哪些构件会响应事
    2. 提高了软件复用能力
    3. 便于系统升级

    缺点:

    1. 构件放弃了对计算的控制权,完全由系统来决定
    2. 存在数据·传输问题

    4.分层 体系结构风格

    惯用模式:

    在分层风格中,系统将划分为一个层次结构。

    每一层都具有高度的内聚性,包含抽象程度一致的各种构件,支持信息隐藏。

    分层有助于将复杂系统划分为独立的模块,从而简化程序的设计和实现。

    通过分解,可以将系统功能划分为一些具有明确定义的层,较高层是面对特定问题,较低层具有一般性。

    每层都为上层提供服务,同时又利用了下层的逻辑功能。在分层体系结构中,每一层只对相邻层可见。层次之间的连接件是协议和过程调用。用以实现各层之间的交互。

     

    原理图:

    优点:

    1. 设计者可以将系统分解为一个增量的步骤序列从而完成复杂的业务逻辑。
    2. 每一层之多和相邻的上下两层进行交互。
    3. 只要给相邻层提供相同的接口。

    缺点:

    1. 并非所有系统都能够按照层次来进行划分。
    2. 很难找到一种合适和正确的层次划分方法。
    3. 在传输数据是,需要经过多个层次。
    4. 多层结构难以调试。

    5.C2 体系结构风格

    惯用模式:

    C2结构是一个层次网络,包括构件和连接件两种软件元素。构件和连接键都是包含顶部和底部的软件元素。构件和构件之间只能通过连接件进行连接,而连接件之间则可以直接进行连接。构件的顶部、底部分别与连接件的底部、顶部连接,连接件的顶部、底部也分别与连接件的底部、顶部连接。

    在C2体系结构中,构件之间的所有通信必须使用消息传递机制来实现。构件之间所有传递的信息可以分为两种,一种是向上层构件发出服务请求的请求消息另一种是向下层构件发出指示状态变化的通知消息。连接件负责消息的过滤、路由、广播、通信和相关处理。

    原理图:

    优点:

    1. 可以使用任何编程语言来开发构件,构件重用和替换比较容易实现
    2. 具有一定的扩展能力,可以有多种不同粒度的构件
    3. 构件不需要共享地址空间,避免了共享全局变量所造成的复杂关系
    4. 具有良好的适应性
    5. 在C2体系结构中,可以使用多个工具集和多种媒体类型,能够动态地更新系统的框架结构

    缺点:

    1. 构件和构件之间不允许直接相连
    2. 与某一个连接件相关联的构件和连接件的数目没有限制

    6.数据共享 体系结构风格

    定义:

    数据共享风格也成为仓库风格。

    在这种风格中,有两种不同类型的软件元素:一种是中央数据单元,也成为资源库,用于表示系统的当前状态;另一种是相互依赖的构件组,这些构件可以对中央数据单元实施操作。中央数据单元和构件之间可以进行信息交换,这是数据共享体系结构的技术实现基础。

    根据所使用的控制策略不同,数据共享体系结构可以分为两种类型,一种是传统的数据库,另一种是黑板

    如果由输入流中的事件来驱动系统进行信息处理,把执行结构存储到中央数据单元,则这个系统就是数据库应用系统。

    如果由中央数据单元的当前状态来驱动系统运行,则这个系统就是黑板应用系统。

    黑板是数据共享体系结构的一个特例,用以解决状态冲突并处理可能存在的不确定性知识源

    黑板常用于信号处理,如语音和模式识别,同时在自然语言处理领域中也有广泛的应用,如机器翻译和句法分析。

     

    原理图:

    一个典型的黑板系统主要包括知识源、中央控制单元、控制单元。

    优点:

    1. 便于多客户共享大量数据,而不必关心数据是何时产生的、由谁提供的及通过何种途径来提供
    2. 便于将构件作为知识源添加到系统中来

    缺点:

    1. 对共享数据结构,不同知识源要达成一致
    2. 需要同步机制和加锁机制来保证数据的完整性和一致性,增大了系统设计的复杂度

    7.解释器 体系结构风格

    惯用模式:

    解释器作为一种体系结构,主要用于构建虚拟机,用以弥合程序语义和计算机硬件之间的间隙。实际上,解释器是利用软件来创建的一种虚拟机,因此,解释器风格又被称为虚拟机风格

    原理图:

    优点:

    1. 能够提高应用程序的抑制能力和变成语言的跨平台移植能力。
    2. 实际测试工作可能费城复杂,测试代价极其昂贵,具有一定的风险性。

    缺点:

    1. 由于使用了特定了语言和自定义操作规则,因此增加了系统运行的开销。
    2. 解释器系统难以设计和测试。

    8.反馈控制环 体系结构风格

    定义:

    反馈控制环是一种特定的数据流结构。传统数据流结构是线性的,而控制连续循环过程的体系结构应该是环形的。

    反馈控制环系统主要包括以下三个部分:

    1. 过程,指操纵过程变量的相关机制。
    2. 数据元素,指连续更新的过程变量,包括输入变量、控制变量、操纵变量和相关参考值。
    3. 控制器,通过控制规则来修正变量,收集过程的实际状态和目标状态,调节变量以驱动实际状态朝目标状态前进。

     

    原理图:

    优点:

    1. 过程控制是连续的,可以利用各种构件和相关规则来设计反馈控制环系统,实现各种功能。
    2. 反馈控制环结构能够处理复杂的自适应问题,机器学习就是一个例子。

    缺点:

    9.C/S 体系结构风格

    惯用模式:

    ……

    原理图:

    优点:

    1. 客户机构件和服务器构件分别运行在不同的计算机上,有利于分布式数据的组织和处理。
    2. 构件之间的位置是相互透明的,客户机程序和服务器程序都不必考虑对方的实际存储位置。
    3. 客户机侧重数据的显示和分析,服务器则注重数据的管理。
    4. 构件之间是彼此独立和充分隔离的。
    5. 将大规模的业务逻辑分布到多个通过网络连接的低成本的计算机,降低了系统的整体开销。

    缺点:

    1. 开发成本较高。
    2. 在开发C/S结构系统时,大部分工作都都集中在客户机程序的设计上,增加了设计的复杂度。
    3. 信息内容和形式单一。
    4. 如果对C/S体系结构的系统进行升级,开发人员需要到现场来更新客户机程序,同时需要对运行环境进行重新配置,增加了维护费用。
    5. 两层C/S结构采用了单一的服务器,同时以局域网为中心,因此难以扩展到Intranet和Internet。
    6. 数据安全性不高。

    10.B/S 体系结构风格

    惯用模式:

    B/S结构是三层C/S体系结构的一种实现方式,主要包括浏览器,Web服务器和数据库服务器。B/S结构主要利用不断成熟的WWW技术,结合浏览器的多脚本语言,采用通用浏览器来实现原来需要复杂的专用软件才能实现的强大功能,节约了开发成本。

    B/S体系结构的核心是Web服务器,可以将应用程序以网页的形式存放在Web服务器上。

    当用户运行某个应用程序时,只需要在可以断的浏览器中输入响应的 URL,向 Web 服务器提出 HTTP 请求。

    当Web 服务器接收 HTTP 请求之后,会调用相关的应用程序(Servlets),同时向数据库服务器发送数据操作请求。

    数据库服务器对数据操作请求进行响应,将结果返回给Web服务器的应用程序。

    Web服务器应用程序执行业务处理逻辑,利用 HTML 来封装操作结果,通过浏览器呈现给用户。在B/S结构中,数据请求、王爷生成、数据库访问和应用程序执行全部由Web 服务器来完成。

    原理图:

    优点:

    1. 客户端只需要安装浏览器,操作简单。
    2. 运用HTTP标准协议和统一客户端软件,能够实现跨平台通信。
    3. 开发成本比较低,只需要维护Web服务器程序和中心数据库。

    缺点:

    1. 个性化程度比较低,所有客户端程序的功能都是一样的。
    2. 客户端数据处理能力比较差。
    3. 在B/S结构的系统中,数据提交一般以页面为单位,动态交互性不强,不利于在线事务处理。
    4. B/S体系结构的可扩展性比较差,系统安全性难以保障。
    5. B/S结构的应用系统查询中心数据库,其速度要远低于C/S体系结构。

    11.公共对象请求代理(CORBA)体系结构风格

    惯用模式:

    公共对象请求代理(Common Object Request Broker Architecture,CORBA)是由对象管理组织(Object Management Group,OMG)提出来的,是一套完整的对象技术规范,其核心包括标准语言、接口和协议。

    在异构分布式环境下,可以利用CORBA来实现应用程序之间的交互操作,同时,CORBA也提供了独立于开发平台的编程语言的对象重用方法。

     

    原理图:

    优点:

    1. 实现了客户端程序与服务器程序的分析。
    2. 将分布式计算模式与面向对象技术结合起来,提高了软件复用率。
    3. 提供了软件总线机制,软件总线是指一组定义的完整的接口规范。
    4. CORBA能够支持不同的编程语言和操作系统,在更大的范围内,开发人员能够相互利用已有的开发成果。

    缺点:

    12.正交 体系结构风格

    惯用模式:

    正交体系结构是一种以 垂直线索构件族 为基础的层次化结构,包括组织层线索

    在每一个组织层中,都包含具有相同抽象级别的构件。

    线索是子系统的实例,是由完成不同层次功能的构件通过相互调用而形成的,每一条线索完成系统的一部分相对独立的功能。

    在正交体系结构中,每条线索的实现与其他线索的实现无关或关联很少。在同一层次中,构件之间不存在相互调用关系。

    原理图:

    优点:

    1. 结构清晰。
    2. 便于修改和维护。
    3. 易于重用。

    缺点:

    13.MVC 体系结构风格

    惯用模式:

    模型-视图-控制器(Model-View-Controller,MVC)是一种常见的体系结构风格。MVC被广泛应用与用户交互程序的设计中。

    原理图:

    优点:

    1. 多个视图与一个模型相对应
    2. 具有良好的移植性。
    3. 系统被分割为三个独立的部分,当功能发生变化时,改变其中的一个部分就能够满足要求。

    缺点:

    1. 增加了系统设计和运行复杂性。
    2. 视图与控制器连接过于紧密,妨碍两者的独立复用。
    3. 视图访问模型的效率比较低。
    展开全文
  • 10个常见软件体系结构模式

    万次阅读 多人点赞 2018-05-07 14:06:04
    根据维基百科,架构模式是在特定环境下软件体系结构常见问题的通用可重用解决方案。架构模式类似于软件设计模式,但具有更广的范围。在本文中,我将简要地解释以下10种常见架构模式及其用法,优缺点。分层模式...

    有没有想过如何设计大型企业级系统? 在开始主要软件开发之前,我们必须选择一个合适的架构来为我们提供所需的功能和质量属性。 因此,在将它们应用于我们的设计之前,我们应该了解不同的体系结构。

    什么是建筑模式?

    根据维基百科,

    架构模式是在特定环境下软件体系结构中常见问题的通用可重用解决方案。 架构模式类似于软件设计模式,但具有更广的范围。

    在本文中,我将简要地解释以下10种常见架构模式及其用法,优缺点。

    1. 分层模式
    2. 客户端 - 服务器模式
    3. 主从模式
    4. 管道过滤器模式
    5. 经纪人模式
    6. 点对点模式
    7. 事件总线模式
    8. 模型 - 视图 - 控制器模式
    9. 黑板模式
    10. 解释器模式

    1.分层模式

    这种模式可以用来构建可以分解为子任务组的程序,每个子任务都处于特定的抽象层次。 每层为下一个更高层提供服务。

    一般信息系统最常见的4层如下。

    • 表示层 (也称为UI层 )
    • 应用程序层 (也称为服务层 )
    • 业务逻辑层 (也称为域层 )
    • 数据访问层 (也称为持久层 )

    用法

    • 一般桌面应用程序
    • 电子商务Web应用程序。
    分层模式

    2.客户端 - 服务器模式

    这种模式由两方组成; 一个服务器和多个客户端 。 服务器组件将向多个客户端组件提供服务。 客户端向服务器请求服务,服务器向这些客户端提供相关服务。 此外,服务器继续侦听客户端请求。

    用法

    • 在线应用程序,如电子邮件,文件共享和银行业务
    客户端 - 服务器模式

    3.主从模式

    这种模式由两方组成; 主人奴隶 。 主组件将工作分配给相同的从组件,并根据从组件返回的结果计算最终结果。

    用法

    • 在数据库复制中,主数据库被视为权威来源,并且从属数据库与其同步。
    • 在计算机系统中连接到总线的外设(主从驱动器)。
    主从模式

    4.管道过滤器模式

    这种模式可以用来构造产生和处理数据流的系统。 每个处理步骤都包含在一个过滤器组件中。 要处理的数据通过管道传递。 这些管道可用于缓冲或同步目的。

    用法

    • 编译器。 连续的过滤器执行词法分析,解析,语义分析和代码生成。
    • 生物信息学工作流程。
    管道过滤器模式

    5.经纪人模式

    这种模式用于构建具有解耦组件的分布式系统。 这些组件可以通过远程服务调用相互交互。 代理组件负责协调组件之间的通信。

    服务器将其功能(服务和特性)发布给代理。 客户向经纪人请求服务,然后经纪人将客户重定向到其注册中心的适当服务。

    用法

    经纪人模式

    6.点对点模式

    在这种模式中,单个组件被称为同级 。 同事可能既作为客户端 ,向其他同行请求服务,又作为服务器向其他同行提供服务。 对等体可以充当客户端或服务器或两者兼而有之,并且可以随着时间动态地改变其角色。

    用法

    点对点模式

    7.事件总线模式

    这种模式主要处理事件,并有四个主要组成部分; 事件源 , 事件监听器 , 通道事件总线 。 信息源将消息发布到事件总线上的特定频道。 听众订阅特定频道。 听众会收到发布到他们之前订阅的频道的消息。

    用法

    • Android开发
    • 通知服务
    事件总线模式

    8.模型 - 视图 - 控制器模式

    这种模式也称为MVC模式,将交互式应用程序分为三部分,

    1. 模型 - 包含核心功能和数据
    2. 视图 - 将信息显示给用户(可以定义多个视图)
    3. 控制器 - 处理来自用户的输入

    这样做是为了将信息的内部表示与信息呈现给用户并从用户接受的方式分开。 它将组件分离并允许有效的代码重用。

    用法

    • 主要编程语言的万维网应用程序体系结构。
    • Web框架,如DjangoRails 。
    模型 - 视图 - 控制器模式

    9.黑板模式

    这种模式对于没有确定性解决策略的问题是有用的。 黑板图案由3个主要组件组成。

    • 黑板 - 包含来自解决方案空间的对象的结构化全局内存
    • 知识源 - 具有自己表示的专用模块
    • 控制组件 - 选择,配置和执行模块。

    所有组件都可以访问黑板。 组件可能产生添加到黑板的新数据对象。 组件在黑板上查找特定类型的数据,并可能通过与现有知识源的模式匹配找到这些数据。

    用法

    • 语音识别
    • 车辆识别和跟踪
    • 蛋白质结构鉴定
    • 声纳信号解释。
    黑板模式

    10.解释器模式

    此模式用于设计解释用专用语言编写的程序的组件。 它主要指定如何评估程序行,称为用特定语言编写的句子或表达式。 基本思想是为语言的每个符号设置一个类。

    用法

    • 数据库查询语言,如SQL。
    • 用于描述通信协议的语言。
    解释器模式

    建筑模式的比较

    下面的表格总结了每种架构模式的优缺点。

    建筑模式的比较

    希望你发现这篇文章有用。

    原文:https://towardsdatascience.com/10-common-software-architectural-patterns-in-a-nutshell-a0b47a1e9013

    展开全文
  • 1.计算机体系结构常见名词解释及缩写 2.逻辑代数常用公式和卡诺图化简 3.触发器的应用 4.浮点数的概念等
  • XYZ/E是世界上第一个可执行的时态逻辑语言,它既能描述抽象静态语义,又能表示程序的动态语义,这一特征恰好适合分层描述软件体系结构,文[1]采用XYZ/E语言刻画了软件体系结构的基本组件与连接件。本文讨论如何通过...
  • 本资源可以作为《软件设计模式与体系结构》的复习使用,包含几种常见的设计模式的样例及其代码,需要的朋友可以下载哦!
  • 本文内容包括:可扩展的并行计算体系结构可扩展与单一系统映象集群的重要指标结束语参考资料这篇文章是《集群的可扩展性及其分布式体系结构》第二篇的下半部分,将继续介绍常见的几类并行计算体系结构、可扩展与单一...
  • 第二节 操作系统的体系结构 目前流行的操作系统有Windows操作系统、UNIX操作系统、Linux操作系统和Android操作系统等。 一、Windows操作系统的体系结构 Windows体系结构是分层的模块系统,主要层次有硬件抽象层...
  • 体系结构决策记录(ADR) TL; DR:ADR提供了许多有关草帽团队工作方式的文档。 概述 ADR代表体系结构决策记录,它是一种设计文档,为软件开发提供了高级,简洁的文档。 目的是使这些文档成为Straw Hat团队与软件...
  • 软件体系结构实验 南京邮电大学 软件体系结构实验报告 实验题目基于软件体系结构软件设计开发 姓名xxx 学号xxx 院系计算机软件学院 指导老师周国强 12月23日 一 实验目的和要求 实验目的 经过常见的基于体系结构和...
  • 分层体系结构模式是n层模式,其中组件被组织在水平层中。这是设计大多数软件的传统方法,并且具有独立性。这意味着所有组件都是互连的,但彼此之间不依赖。 图1:分层架构 在此体系结构中有四层,其中...
  • 软件体系结构

    千次阅读 2022-02-24 11:22:45
    软件体系结构期末复习
  • 1.6 计算机网络体系结构 1 常见的计算机网络体系结构 OSI体系结构(法律上的国际标准) TCP/IP体系结构 /IP体系结构
  • ARM SOC 体系结构

    2018-08-03 16:29:09
    基于ARM核开发SOC系统的常见架构,包括存储器,外设,片上总线,片上调试
  • 完整英文电子版ISO/IEC/IEEE 42010:2011 Systems and software engineering — Architecture description(系统和软件工程—体系结构描述)。 ISO/IEC/IEEE 42010:2011通过使用架构描述来解决系统架构的创建、分析...
  • 计算机网络体系结构

    千次阅读 2022-03-27 11:49:11
    计算机网络体系结构1 常见的计算机网络体系结构1.1 OSI体系结构1.2 TCP/IP体系结构1.3 原理体系结构2 分层的必要性3 计算机网络体系结构的专用术语 参考视频:链接: 计算机网络微课堂. 1 常见的计算机网络体系结构 ...
  • 本文介绍了常见的单片机根据结构的分类,并说明了两种结构之间的区别、各自的优缺点。
  • 文章目录计算机体系结构体系结构是什么计算机系统由几部分组成win32和win64区别存储层次缓存(Cache)分级源码补码反码,有源码为什么有补码反码流水线调度效率、五级流水线加速达到5吗计算机子系统可以不要吗 ...
  • 软件体系结构风格整理

    万次阅读 多人点赞 2019-01-06 15:17:36
    什么是软件体系结构风格? 软件体系结构风格(Architectural Styles)是描述特定系统组织方式的惯用范例,强调了软件系统中通用的组织结构。 风格这个词是个模糊的概念,不同的人有不同的理解,这有时候就让人很...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 179,882
精华内容 71,952
关键字:

常见的结构体系