软考高级-系统架构设计师 知识点整理 (一篇就够了 建议收藏)

文章目录

一 计算机硬件

计算机组成

  • 计算机的基本硬件系统由运算器、控制器、存储器、输入设备和输出设备5大部件组成。
  • 运算器、控制器等部件被集成在一起统称为中央处理单元(Central Processing Unit,CPU)。CPU是硬件系统的核心,用于数据的加工处理,能完成各种算术、逻辑运算及控制功能
  • 存储器是计算机系统中的记忆设备,分为内部存储器和外部存储器。前者速度高、容量小,一般用于临时存放程序、数据及中间结果。而后者容量大、速度慢,可以长期保存程序和数据。
  • 输入设备和输出设备合称为外部设备(简称外设),输入设备用于输入原始数据及各种命令,而输出设备则用于输出计算机运行的结果。

中央处理单元

CPU的组成
  1. CPU的组成:CPU主要由运算器、控制器、寄存器组和内部总线等部件组成
  • 运算器:由算术逻辑单元 ALU(实现对数据的算术和逻辑运算)、累加寄存器AC(运算结果或源操作数的存放区)、数据缓冲寄存器DR(暂时存放内存的指令或数据)、和状态条件寄存器PSW(保存指令运行结果的条件码内容,如溢出标志等)组成。执行所有的算术运算,如加减乘除等;执行所有的逻辑运算并进行逻辑测试,如与、或、非、比较等。
  • 控制器:由指令寄存器IR(暂存CPU执行指令)、程序计数器PC(存放指令执行地址)、地址寄存器AR(保存当前CPU所访问的内存地址)、指令译码器ID(分析指令操作码〉等组成。控制整个CPU的工作,最为重要。
  • CPU依据指令周期的不同阶段来区分二进制的指令和数据,因为在指令周期的不同阶段,指令会命令CPU分别去取指令或者数据。
CPU的功能
  1. CPU 的功能:
    (1)程序控制。CPU通过执行指令来控制程序的执行顺序,这是CPU的重要功能。
    (2)操作控制。一条指令功能的实现需要若干操作信号配合来完成,CPU产生每条指令的操作信号并将操作信号送往对应的部件,控制相应的部件按指令的功能要求进行操作。
    (3)时间控制。CPU对各种操作进行时间上的控制,即指令执行过程中操作信号的出现时间、持续时间及出现的时间顺序都需要进行严格控制。
    (4)数据处理。CPU通过对数据进行算术运算及逻辑运算等方式进行加工处理,数据加工处理的结果被人们所利用。所以,对数据的加工处理也是CPU最根本的任务。
    此外,CPU还需要对系统内部和外部的中断(异常)做出响应,进行相应的处理。

校验码

  • 码距:就单个编码A:00而言,其码距为1,因为其只需要改变一位就变成另一个编码。在两个编码中,从A码到B码转换所需要改变的位数称为码距,如A:00要转换为B:11,码距为2。才般来说,码距越大,越利于纠错和检错。
  • 奇偶校验码:在编码中增加1位校验位来使编码中1的个数为奇数(奇校验)或者偶数(偶校验),从而使码距变为2。例如:
    奇校验:编码中,含有奇数个1,发送给接收方,接收方收到后,会计算收到的编码有多少个1,如果是奇数个,则无误,是偶数个,则有误。
    偶校验同理,只是编码中有偶数个1,由上述,奇偶校验只能检1位错,并且无法纠错
  • CRC(循环冗余校验码)只能检错,不能纠错。使用CRC编码,需要先约定一个生成多项式G(x)。生成多项式的最高位和最低位必须是1。假设原始信息有m位,则对应多项式M(x)。生成校验码思想就是在原始信息位后追加若干校验位,使得追加的信息能被G(x)整除。接收方接收到带校验位的信息,然后用G(x)整除。余数为0,则没有错误;反之则发生错误
  • 例:假设原始信息串为10110,CRC 的生成多项式为G(x)=x^4+x+1,求CRC 校验码。
    (1)在原始信息位后面添0,假设生成多项式的阶为r,则在原始信息位后添加r个0,本题中,G(x)阶为4,则在原始信息串后加4个0,得到的新串为101100000,作为被除数。
    (2)由多项式得到除数,多项中x的幂指数存在的位置1,不存在的位置0。本题中,x的幂指数为0,1,4的变量都存在,而幂指数为2,3的不存在,因此得到串10011。
    (3)生成CRC校验码,将前两步得出的被除数和除数进行模2除法运算(即不进位也不借位的除法运算)。除法过程如下图所示
    在这里插入图片描述
    得到余数1111。

注意:余数不足r,则余数左边用若干个0补齐。如求得余数为11,r=4,则补两个0得到0011。
(4) 生成最终发送信息串,将余数添加到原始信息后。上例中,原始信息为10110,添加余数1111后,结果为101101111发送方将此数据发送给接收方。
(5) 接收方进行校验。接收方的CRC校验过程与生成过程类似,接收方接收了带校验和的帧后,用多项式G(x)来除。余数为0,则表示信息无错;否则要求发送方进行重传。
 注意:收发信息双方需使用相同的生成多项式

指令系统

  • 计算机指令的组成:一条指令由操作码和操作数两部分组成,操作码决定要完成的操作,操作数指参加运算的数据及其所在的单元地址。在计算机中,操作要求和操作数地址都由二进制数码表示,分别称作操作码和地址码,整条指令以二进制编码的形式存放在存储器中。

  • 计算机指令执行过程取指令一一分析指令一一执行指令三个步骤,首先将程序计数器PO中的指令地址取出,送入地址总线,CPU依据指令地址去内存中取出指令内容存入指令寄存器IR;后由指令译码器进行分析,分析指令操作码;最后执行指令,取出指令执行所需的源操作数。

  • 指令寻址方式
    顺序寻址方式:当执行一段程序时,是一条指令接着一条指令地顺序执行。
    跳跃寻址方式:指下一条指令的地址码不是由程序计数器给出,而是由本条指令直接给出。程序跳跃后,按新的指令地址开始顺序执行。因此,程序计数器的内容也必须相应改变,以便及时跟踪新的指令地址。

  • 指令操作数的寻址方式
    立即寻址方式:指令的地址码字段指出的不是地址,而是操作数本身。
    直接寻址方式:在指令的地址字段中直接指出操作数在主存中的地址。
    间接寻址方式:指令地址码字段所指向的存储单元中存储的是操作数的地址。
    寄存器寻址方式:指令中的地址码是寄存器的编号。
    基址寻址方式:将基址寄存器的内容加上指令中的形式地址而形成操作数的有
    效地址,其优点是可以扩大寻址能力。
    变址寻址方式:变址寻址方式计算有效地址的方法与基址寻址方式很相似,它是将变址寄存器的内容加上指令中的形式地址而形成操作数的有效地址。

  • CISC是复杂指令系统,兼容性强,指令繁多、长度可变,由微程序实现;

  • RISC缇精简指令系统,指令少,使用频率接近,主要依靠硬件实现(通用寄存器、硬布线逻辑控制)。
    区别如下:
    在这里插入图片描述

  • 指令流水线原理:将指令分成不同段,每段由不同的部分去处理,因此可以产生叠加的效果,所有的部件去处理指令的不同段
    在这里插入图片描述

  • RISC中的流水线技术
    (1)超流水线(Super Pipe Line)技术。它通过细化流水、增加级数和提高主频,使得在每个机器周期内能完成一个甚至
    两个浮点操作。其实质是以时间换取空间
    (2)超标量(Super Scalar)技术。它通过内装多条流水线来同时执行多个处理,其时钟频率虽然与一般流水接近,却有
    更小的CPL其实质是以空间换取时间
    (3)超长指令字(Very Long Instruction Word VLIW)技术。VLIW和超标量都是20世纪80年代出现的概念,其共同点是要同时执行多条指令,其不同在于超标量依靠硬件来实现并行处理的调度,VLIW则充分发挥软件的作用,而使硬件简化,
    性能提高。

  • 流水线时间计算
    流水线周期:指令分成不同执行段,其中执行时间最长的段为流水线周期。
    流水线执行时间:1条指令总执行时间+(总指令条数-1)*流水线周期。
    流水线吞吐率计算:吞吐率即单位时间内执行的指令条数。公式:指令条数/流水线执行时间
    流水线的加速比计算:加速比即使用流水线后的效率提升度,即比不使用流水线快了多少倍,越高表明流水线效率越高,
    公式:不使用流水线执行时间/使用流水线执行时间。

存储系统

  • 计算机采用分级存储体系的主要目的是为了解决存储容量、成本和速度之间的矛盾问题。
  • 两级存储:Cache-主存、主存-辅存(虚拟存储体系)。
  • 局部性原理:总的来说,在CPU运行时,所访问的数据会趋向于一个较小的局部空间地址内,包括下面两个方面:
     时间局部性原理:如果一个数据项正在被访问,那么在近期它很可能会被再次访问,即在相邻的时间里会访问同一个数据项
     空间局部性原理:在最近的将来会用到的数据的地址和现在正在访问的数据地址很可能是相近的,即相邻的空间地址会被连续访问
    在这里插入图片描述
  • 高速缓存Cache用来存储当前最活跃的程序和数据,直接与CPU交互,位于CPU和主存之间,容量小,速度为内存的5-10倍,由半导体材料构成。其内容是主存内存的副本拷贝,对于程序员来说是透明的。
  • Cache由控制部分和存储器组成,存储器存储数据,控制部分判断CPU要访问的数据是否在Cache中,在则命中,不在则依据一定的算法从主存中替换。
  • 地址映射:在CPU工作时,送出的是主存单元的地址,而应从Cache存储器中读/写信息。这就需要将主存地址转换为Cache存储器地址,这种地址的转换称为地址映像,由硬件自动完成映射,分为下列三种方法:

1.直接映像:将Cache存储器等分成块,主存也等分成块并编号。主存中的块与Cache中的块的对应关系是固定的,也即二者块号相同才能命中。地址变换简单但不灵活,容易造成资源浪费。
2.全相联映像:同样都等分成块并编号。主存中任意一块都与Cache中任意一块对应。因此可以随意调入Cache任意位置,但地址变换复杂,速度较慢。因为主存可以随意调入Cache任意块,只有当Cache满了才会发生块冲突,是最不容易发生块冲突的映像方式。
3.组组相连映像前面两种方式的结合,将Cache存储器先分块再分组,主存也同样先分块再分组,组间采用直接映像,即主存中组号与Cache中组号相同的组才能命中,但是组内全相联映像,也即组号相同的两个组内的所有块可以任意调换。

  • 替换算法的目标就是使Cache获得尽可能高的命中率。常用算法有如下几种。
    (1)随机替换算法。就是用随机数发生器产生一个要替换的块号,将该块替换出去。
    (2)先进先出算法。就是将最先进入Cache的信息块替换出去。
    (3)近期最少使用算法。这种方法是将近期最少使用的Cache中的信息块替换出去。
    (4)优化替换算法。这种方法必须先执行一次程序,统计Cache的替换情况。有了这样的先验信息,在第二次执行该程序时便可以用最有效的方式来替换。
  • 命中率及平均时间
     Cache有一个命中率的概念,即当CPU所访问的数据在Cache中时,命中,直接从Cache中读取数据,设读取一次Cache时间为1ns,若CPU访问的数据不在Cache中,则需要从内存中读取,设读取一次内存的时间为1000ns,若在CPU多次读取数据过程中,有90%命中Cache,则CPU读取一次的平均时间为(90%*1 +10%*1000)ns
  • 磁盘结构和参数
     磁盘有正反两个盘面,每个盘面有多个同心圆,每个同心圆是一个磁道,每个同心圆又被划分为多个扇区,数据就被存放在一个个扇区中。
     磁头首先要寻找到对应的磁道,然后等待磁盘进行周期旋转,旋转到指定的扇区,才能读取到对应的数据,因此,会产生寻道时间和等待时间。公式为:存取时间=寻道时间+等待时间(平均定位时间+转动延迟)。
     注意:寻道时间是指磁头移动到磁道所需的时间;等待时间为等待读写的扇区
    转到磁头下方所用的时间。
  • 磁盘调度算法
     之前已经说过,磁盘数据的读取时间分为寻道时间+旋转时间,也即先找到对应的磁道,而后再旋转到对应的扇区才能读取数据,其中寻道时间耗时最长,需要重点调度,有如下调度算法:
    先来先服务FCFS:根据进程请求访问磁盘的先后顺序进行调度。
    最短寻道时间优先SSTF:请求访问的磁道与当前磁道最近的进程优先调度,使得每次的寻道时间最短。会产生“饥饿”现象,即远处进程可能永远无法访问。
    扫描算法SCAN:又称“电梯算法”,磁头在磁盘上双向移动,其会选择离磁头当前所在磁道最近的请求访问的磁道,并且与磁头移动方向一致,磁头永远都是从里向外或者从外向里一直移动完才掉头,与电梯类似。
    单向扫描调度算法CSCAN:与SCAN不同的是,其只做单向移动,即只能从里向外或者从外向里。

输入输出技术

  • 计算机系统中存在多种内存与接口地址的编址方法,常见的是下面两种:
    (1)内存与接口地址独立编址方法
    内存地址和接口地址是完全独立的两个地址空间。访问数据时所使用的指令也完全不同,用于接口的指令只用于接口的读/写,其余的指令全都是用于内存的。因此,在编程序或读程序时很易使用和辨认。这种编址方法的缺点是用于接口的指令太少、功能太弱。
    (2)内存与接口地址统一编址方法
    内存地址和接口地址统一在一个公共的地址空间里,即内存单元和接口共用地址空间。优点是原则上用于内存的指令全都可以用于接口,这就大大地增强了对接口的操作功能,而且在指令上也不再区分内存或接口指令。该编址方法的缺点就在于整个地址空间被分成两部分,其中一部分分配给接口使用,剩余的为内存所用,这经常会导致内存地址不连续。
  • 计算机和外设间的数据交互方式:
    (1)程序控制(查询)方式CPU主动查询外设是否完成数据传输,效率极低
    (2)程序中断方式:外设完成数据传输后,向CPU发送中断,等待CPU处理数据,效率相对较高。中断响应时间指的是从发出中断请求到开始进入中断处理程序;中断处理时间指的是从中断处理开始到中断处理结束。中断向量提供中断服务程序的入口地址。多级中断嵌套,使用堆栈来保护断点和现场。
    (3)DMA方式(直接主存存取)CPU只需完成必要的初始化等操作,数据传输的整个过程都由DMA控制器来完成,在主存和外设之间建立直接的数据通路效率很高

在一个总线周期结束后,CPU会响应DMA请求开始读取数据;CPU响应程序中断方式请求是在一条指令执行结束时

总线结构

  • 总线(Bus),是指计算机设备和设备之间传输信息的公共数据通道。总线是连接计算机硬件系统内多种设备的通信线路,它的一个重要特征是由总线上的所有设备共享,因此可以将计算机系统内的多种设备连接到总线上。
  • 从广义上讲,任何连接两个以上电子元器件的导线都可以称为总线,通常分为以下三类:
    (1)内部总线:内部芯片级别的总线,芯片与处理器之间通信的总线。
    (2)系统总线:是板级总线,用于计算机内各部分之间的连接,具体分为数据总线(并行数据传输位数)、地址总线(系统可管理的内存空间的大小)、控制总线(传送控制命令)。代表的有ISA总线、EISA总线、PCI总线。
    (3)外部总线:设备一级的总线,微机和外部设备的总线。代表的有RS232(串行总线)>SCSI(并行总线)、USB(通用串行总线,即插即用,支持热插拔)。

二 操作系统知识

操作系统概述

  • 操作系统定义:能有效地组织和管理系统中的各种软/硬件资源,合理地组织计算机系统工作流程,控制程序的执行,并且向用户提供一个良好的工作环境和友好的接口。
  • 操作系统有三个重要的作用
    第一,管理计算机中运行的程序和分配各种软硬件资源;
    第二,为用户提供友善的人机界面。
    第三,为应用程序的开发和运行提供一个高效率的平台。
  • 操作系统的4个特征是并发性、共享性、虚拟性和不确定性
操作系统的功能

(1)进程管理。实质上是对处理机的执行“时间”进行管理,采用多道程序等技术将CPU的时间合理地分配给每个任务,主要包括进程控制、进程同步、进程通信和进程调度。
(2)文件管理。主要包括文件存储空间管理、目录管理、文件的读/写管理和存取控制。
(3)存储管理。存储管理是对主存储器“空间”进行管理,主要包括存储分配与回收、存储保护、地址映射(变换)和主存扩充。
(4)设备管理。实质是对硬件设备的管理,包括对输入/输出设备的分配、启动、完成和回收。
(5)作业管理。包括任务、界面管理、人机交互、图形界面、语音控制和虚拟现实等。

操作系统的分类
  • 批处理操作系统:单道批处理和多道批处理(主机与外设可并行)。
  • 分时操作系统:一个计算机系统与多个终端设备连接。将CPU的工作时间划分为许多很短的时间片,轮流为各个终端的用户服务。
  • 实时操作系统:实时是指计算机对于外来信息能够以足够快的速度进行处理,并在被控对象允许的时间范围内做出快速反应。实时系统对交互能力要求不高,但要求可靠性有保障。
  • 网络操作系统:是使联网计算机能方便而有效地共享网络资源,为网络用户提供各种服务的软件和有关协议的集合。三种模式:集中模式、客户端/服务器模式、对等模式。
  • 分布式操作系统:分布式计算机系统是由多个分散的计算机经连接而成的计算机系统,系统中的计算机无主、次之分,任意两台计算机可以通过通信交换信息。
  • 微型计算机操作系统:简称微机操作系统,常用的有Windows、Mac OS、Linux。

进程组成和状态

  • 进程的组成:进程控制块PCB(唯一标志)、程序(描述进程要做什么)、数据(存放进程执行时所需数据)。

  • 进程基础的状态是下左图中的三态图。需要熟练掌握左下图中的进程三态之间的转换。

前趋图

  • 用来表示哪些任务可以并行执行,哪些任务之间有顺序关系,具体如下图:可知,ABC可以并行执行,但是必须ABC都执行完后,才能执行D,这就确定了两点:任务间的并行、任务间的先后顺序
    在这里插入图片描述

进程资源图

  • 用来表示进程和资源之间的分配和请求关系,如下图所示:
    在这里插入图片描述
  • P代表进程,R代表资源,R方框中有几个圆球就表示有几个这种资源,在上图中,R1指向P1,表示R1有一个资源已经分配给了P1,P1指向R2,表示P1还需要请求一个R2资源才能执行。
  • 阻塞节点:某进程所请求的资源已经全部分配完毕,无法获取所需资源,该进程被阻塞了无法继续。如上图中P2。
  • 非阻塞节点:某进程所请求的资源还有剩余,可以分配给该进程继续运行。如上图中P1、P3。
    当一个进程资源图中所有进程都是阻塞节点时,即陷入死锁状态。

进程的同步与互斥

  • 临界资源:各进程间需要以互斥方式对其进行访问的资源
  • 临界区:指进程中对临界资源实施操作的那段程序。本质是一段程序代码。
  • 互斥:某资源(即临界资源)在同一时间内只能由一个任务单独使用,使用时需要加锁,使用完后解锁才能被其他任务使用;如打印机。
  • 同步:多个任务可以并发执行,只不过有速度上的差异,在一定情况下停下等待,不存在资源是否单独或共享的问题;如自行车和汽车。
  • 互斥信号量:对临界资源采用互斥访问,使用互斥信号量后其他进程无法访问,初值为1
  • 同步信号量:对共享资源的访问控制,初值一般是共享资源的数量
  • P操作申请资源,S=S-1,若S>=0,则执行P操作的进程继续执行;若S<O,则置该进程为阻塞状态(因为无可用资源),并将其插入阻塞队列。
  • v操作释放资源,S=S+1,若S>0,则执行v操作的进程继续执行;若S<=0,则从阻塞状态唤醒一个进程,并将其插入就绪队列(此时因为缺少资源被P操作阻塞的进程可以继续执行)然后执行v操作的进程继续。
    在这里插入图片描述

进程调度

  • 进程调度方式是指当有更高优先级的进程到来时如何分配CPU。分为可剥夺和不可剥夺两种,可剥夺指当有更高优先级进程到来时,强行将正在运行进程的CPU分配给高优先级进程;不可剥夺是指高优先级进程必须等待当前进程自动释放CPU。
  • 在某些操作系统中,一个作业从提交到完成需要经历高、中、低三级调度。
    (1)高级调度。高级调度又称“长调度”“作业调度”或“接纳调度”,它决定处于输入池中的哪个后备作业可以调入主系统做好运行的准备,成为一个或一组就绪进程。在系统中一个作业只需经过一次高级调度。
    (2)中级调度。中级调度又称“中程调度”或“对换调度”,它决定处于交换区中的哪个就绪进程可以调入内存,以便直接参与对CPU的竞争
    (3)低级调度。低级调度又称“短程调度”或“进程调度”,它决定处于内存中的哪个就绪进程可以占用CPU。低级调度是操作系统中最活跃、最重要的调度程序,对系统的影响很大。
调度算法
  • 先来先服务FCFS:先到达的进程优先分配CPU。用于宏观调度。
  • 时间片轮转:分配给每个进程CPU时间片,轮流使用CPU,每个进程时间片大小相同,很公平,用于微观调度。
  • 优先级调度:每个进程都拥有一个优先级,优先级大的先分配CPU。
  • 多级反馈调度:时间片轮转和优先级调度结合而成,设置多个就绪队列1,2,3…n,每个队列分别赋予不同的优先级,分配不同的时间片长度;新进程先进入队列1的末尾,按FCFS原则,执行队列1的时间片;若未能执行完进程,则转入队列2的末尾,如此重复。
    在这里插入图片描述

死锁

  • 当一个进程在等待永远不可能发生的事件时,就会产生死锁,若系统中有多个进程处于死锁状态,就会造成系统死锁。
  • 死锁产生的四个必要条件资源互斥、每个进程占有资源并等待其他资源、系统不能剥夺进程资源、进程资源图是一个环路。
  • 死锁产生后,解决措施是打破四大条件,有下列方法:
    死锁预防:采用某种策略限制并发进程对于资源的请求,破坏死锁产生的四个条件之一,使系统任何时刻都不满足死锁的条件。
    死锁避免:一般采用银行家算法来避免,银行家算法,就是提前计算出一条不会死锁的资源分配方法,才分配资源,否则不分配资源,相当于借贷,考虑对方还得起才借钱,提前考虑好以后,就可以避免死锁。
    死锁检测:允许死锁产生,但系统定时运行一个检测死锁的程序,若检测到系统中发生死锁,则设法加以解除。
    死锁解除:即死锁发生后的解除方法,如强制剥夺资源,撤销进程等。
    死锁资源计算:系统内有n个进程,每个进程都需要R个资源,那么其发生死锁的最大资源数为n*(R-1)。其不发生死锁的最小资源数为n*(R-1)+1

线程

  • 传统的进程有两个属性:可拥有资源的独立单位;可独立调度和分配的基本单位
  • 引入线程的原因是进程在创建、撤销和切换中,系统必须为之付出较大的时空开销,故在系统中设置的进程数目不宜过多,进程切换的频率不宜太高,这就限制了并发程度的提高。引入线程后,将传统进程的两个基本属性分开,线程作为调度和分配的基本单位,进程作为独立分配资源的单位。用户可以通过创建线程来完成任务,以减少程序并发执行时付出的时空开销。
  • 线程是进程中的一个实体,是被系统独立分配和调度的基本单位。线程基本上不拥有资源,只拥有一点运行中必不可少的资源(如程序计数器、一组寄存器和栈)它可与同属一个进程的其他线程共享进程所拥有的全部资源,例如进程的公共数据、全局变量、代码、文件等资源,但不能共享线程独有的资源,如线程的栈指针等标识数据。

分区存储管理

  • 所谓分区存储组织,就是整存,将某进程运行所需的内存整体一起分配给它,然后再执行。有三种分区方式:
  • 固定分区:静态分区方法,将主存分为若干个固定的分区,将要运行的作业装配进去,由于分区固定,大小和作业需要的大小不同,会产生内部碎片。
  • 可重定位分区:可以解决碎片问题,移动所有已经分配好的区域,使其成为一个连续的区域,这样其他外部细小的分区碎片可以合并为大的分区,满足作业要求。只在外部作业请求空间得不到满足时进行
  • 可变分区:动态分区方法,主存空间的分区是在作业转入时划分,正好划分为作业需要的大小,这样就不存在内部碎片,但容易将整片主存空间切割成许多块,会产生外部碎片。可变分区的算法如下:
  • 系统分配内存的算法有很多,如下图所示,根据分配前的内存情况,还需要分配9K空间,对不同算法的结果介绍如下:
  • 首次适应法:按内存地址顺序从头查找,找到第一个>=9K空间的空闲块,即切割9K空间分配给进程。
  • 最佳适应法:将内存中所有空闲内存块按从小到大排序,找到第一个>=9K空间的空闲块,切割分配,这个将会找到与9K空间大小最相近的空闲块。
  • 最差适应法:和最佳适应法相反,将内存中空闲块空间最大的,切割9K空间分配给进程,这是为了预防系统中产生过多的细小空闲块。
  • 循环首次适应法:按内存地址顺序查找,找到第一个>=9K空间的空闲块,而后若还需分配,则找下个,不用每次都从头查找,这是与首次适应法不同的地方
    在这里插入图片描述
分页存储管理
  • 逻辑页分为页号和页内地址,页内地址就是物理偏移地址,而页号与物理块号并非按序对应的,需要查询页表,才能得知页号对应的物理块号,再用物理块号加上偏移地址才得出了真正运行时的物理地址。
    优点:利用率高,碎片小,分配及管理简单。
    缺点:增加了系统开销,可能产生抖动现象
    页面置换算法
  • 最优算法:OPT,理论上的算法,无法实现,是在进程执行完后进行的最佳效率计算,用来让其他算法比较差距。原理是选择未来最长时间内不被访问的页面置换,这样可以保证未来执行的都是马上要访问的。
  • 先进先出算法:FIFO,先调入内存的页先被置换淘汰,会产生抖动现象,即分配的页数越多,缺页率可能越多(即效率越低),
  • 最近最少使用:LRU,在最近的过去,进程执行过程中,过去最少使用的页面被置换淘汰,根据局部性原理,这种方式效率高,且不会产生抖动现象,使用大量计数器,但是没有LFU多。
  • 淘汰原则:优先淘汰最近未访问的,而后淘汰最近未被修改的页面。
    快表
  • 是一块小容量的相联存储器,由快速存储器组成,按内容访问,速度快,并且可以从硬件上保证按内容并行查找,一般用来存放当前访问最频繁的少数活动页面的页号
  • 快表是将页表存于Cache中;慢表是将页表存于内存上。慢表需要访问两次内存才能取出页,而快表是访问一次Cache和一次内存,因此更快。
分段存储管理
  • 将进程空间分为一个个段,每段也有段号和段内地址,与页式存储不同的是,每段物理大小不同,分段是根据逻辑整体分段的,因此,段表也与页表的内容不同,页表中直接是逻辑页号对应物理块号,而下图所示,段表有段长和基址两个属性,才能确定一个逻辑段在物理段中的位置。
    在这里插入图片描述
段页式存储管理
  • 对进程空间先分段,后分页,具体原理图和优缺点如下:
    优点:空间浪费小、存储共享容易、存储保护容易、能动态链接。
    缺点:由于管理软件的增加,复杂性和开销也随之增加,需要的硬件以及占用的内容也有所增加,使得执行速度大大下降。
    在这里插入图片描述

设备管理概述

  • 设备是计算机系统与外界交互的工具,具体负责计算机与外部的输入/输出工作,所以常称为外部设备(简称外设)。在计算机系统中,将负责管理设备和输入/输出的机构称为I/O系统。因此,1/O系统由设备、控制器、通道(具有通道的计算机系统)、总线和|/O软件组成。
  • 设备的分类:
    按数据组织分类:块设备八字符设备。
    按照设备功能分类:输入设备、输出设备、存储设备、网络联网设备、供电设备。
    资源分配角度分类:独占设备、共享设备和虚拟设备。
    数据传输速率分类:低速设备、中速设备、高速设备。
  • 设备管理的任务是保证在多道程序环境下,当多个进程竞争使用设备时,按一定的策略分配和管理各种设备,控制设备的各种操作,完成|/O设备与主存之间的数据交换。
  • 设备管理的主要功能是动态地掌握并记录设备的状态、设备分配和释放、缓冲区管理、实现物理I/O设备的操作、提供设备使用的用户接口及设备的访问和控制。

I/O软件

  • I/O设备管理软件的所有层次及每一层功能如下图:
  • 实例:当用户程序试图读一个硬盘文件时,需要通过操作系统实现这一操作。与设备无关软件检查高速缓存中有无要读的数据块,若没有,则调用设备驱动程序,向/O硬件发出一个请求。然后,用户进程阻塞并等待磁盘操作的完成。当磁盘操作完成时,硬件产生一个中断,转入中断处理程序。中断处理程序检查中断的原因,认识到这时磁盘读取操作已经完成,于是唤醒用户进程取回从磁盘读取的信息,从而结束此次/O请求。用户进程在得到了所需的硬盘文件内容之,后继续运行。
    在这里插入图片描述

设备管理技术

  • 一台独占设备,在同一时间只能由一个进程使用,其他进程只能等待,且不
    知道什么时候打印机空闲,此时,极大的浪费了外设的工作效率。
  • 引入SPOOLING(外围设备联机操作)技术,就是在外设上建立两个数据缓冲
    区,分别称为输入井和输出井,这样,无论多少进程,都可以共用这一台打印
    机,只需要将打印命令发出,数据就会排队存储在缓冲区中,打印机会自动按
    顺序打印,实现了物理外设的共享,使得每个进程都感觉在使用一个打印机,
    这就是物理设备的虚拟化
    。如下图所示:
    在这里插入图片描述

文件管理概述

  • 文件是具有符号名的、在逻辑上具有完整意义的一组相关信息项的集合。
  • 信息项是构成文件内容的基本单位,可以是一个字符,也可以是一个记录,记录可以等长,也可以不等长。一个文件包括文件体和文件说明。文件体是文件真实的内容。文件说明是操作系统为了管理文件所用到的信息,包括文件名、文件内部标识、文件的类型、文件存储地址、文件的长度、访问权限、建立时间和访问时间等。
  • 文件管理系统,就是操作系统中实现文件统一管理的一组软件和相关数据的集合,专门负责管理和存取文件信息的软件机构,简称文件系统。文件系统的功能包括按名存取;统一的用户接口;并发访问和控制;安全性控制;优化性能;差错恢复。
  • 文件的类型:
    (1)按文件性质和用途可将文件分为系统文件、库文件和用户文件。
    (2)按信息保存期限分类可将文件分为临时文件、档案文件和永久文件。
    (3)按文件的保护方式分类可将文件分为只读文件、读/写文件、可执行文件和不保护文件。
    (4)UNIX系统将文件分为普通文件、目录文件和设备文件(特殊文件)。
  • 文件的逻辑结构可分为两大类:有结构的记录式文件;无结构的流式文件
  • 文件的物理结构是指文件在物理存储设备上的存放方法,包括:
    (1)连续结构。连续结构也称顺序结构,它将逻辑上连续的文件信息(如记录)依次存放在连续编号的物理块上
    (2)链接结构。链接结构也称串联结构,它是将逻辑上连续的文件信息(如记录)存放在不连续的物理块上,每个物理块设有一个指针指向下一个物理块
    (3)索引结构。将逻辑上连续的文件信息(如记录)存放在不连续的物理块中,系统为每个文件建立一张索引表。索引表记录了文件信息所在的逻辑块号对应的物理块号,并将索引表的起始地址放在与文件对应的文件目录项中。
    (4)多个物理块的索引表。索引表是在文件创建时由系统自动建立的,并与文件一起存放在同一文件卷上。根据一个文件大小的不同,其索引表占用物理块的个数不等,一般占一个或几个物理块。

索引文件结构

  • 如图所示,系统中有13个索引节点,0-9为直接索引,即每个索引节点存放的是内容,假设每个物理盘大小为4KB,共可
    存4KB*10=40KB数据;
  • 10号索引节点为一级间接索引节点,大小为4KB,存放的并非直接数据,而是链接到直接物理盘块的地址,假设每个地址占4B,则共有1024个地址,对应1024个物理盘,可存1024*4KB=4096KB数据。
  • 二级索引节点类似,直接盘存放一级地址,一级地址再存放物理盘快地址,而后链接到存放数据的物理盘块,容量又扩大了一个数量级,为102410244KB数据。
    在这里插入图片描述

文件目录

文件控制块中包含以下三类信息:基本信息类、存取控制信息类和使用信息类。
(1)基本信息类。例如文件名、文件的物理地址、文件长度和文件块数等
(2)存取控制信息类。文件的存取权限,像UNIX用户分成文件主、同组用户和一般用户三类,这三类用户的读/写执行RWX权限。
(3)使用信息类。文件建立日期、最后一次修改日期、最后次访问的日期、当前使用的信息(如打开文件的进程数、在文件上的等待队列)等。

  • 文件控制块的有序集合称为文件目录.
      相对路径:是从当前路径开始的路径。
      绝对路径:是从根目录开始的路径。
      全文件名=绝对路径+文件名。要注意,绝对路径和相对路径是不加最后的文件名的,只是单纯的路径序列。

三 数据库系统

  • 数据:是数据库中存储的基本对象,是描述事物的符号记录。
  • 数据的种类:文本、图形、图像、音频、视频、学生的档案记录、货物的运输情况等。
  • 数据库DB:是长期存储在计算机内、有组织的、可共享的大量数据的集合。
  • 数据库的基本特征:
     数据按一定的数据模型组织、描述和存储;
     可为各种用户共享;
     冗余度较小;
     数据独立性较高;
     易扩展
  • 数据库系统DBS:是一个采用了数据库技术,有组织地、动态地存储大量相关数据,方便多用户访问的计算机系统。其由下面四个部分组成:
     数据库(统一管理、长期存储在计算机内的,有组织的相关数据的集合)
     硬件(构成计算机系统包括存储数据所需的外部设备)
     软件(操作系统、数据库管理系统及应用程序)
     人员(系统分析和数据库设计人员、应用程序员、最终用户、数据库管理员DBA)。
  • 数据库管理系统DBMS的功能
     实现对共享数据有效的组织、管理和存取。包括数据定义、数据库操作、数据库运行管理、数据的存储管理、数据库的建立和维护等

三级模式-两级映像

  • 内模式:管理如何存储物理的数据,对应具体物理存储文件。
  • 模式:又称为概念模式,就是我们通常使用的基本表,根据应用、需求将物理数据划分成一张张表。
  • 外模式:对应数据库中的视图这个级别,将表进行一定的处理后再提供给用户使用
  • 外模式一模式映像:是表和视图之间的映射,存在于概念级和外部级之间,若表中数据发生了修改,只需要修改此映射,而无需修改应用程序。
  • 模式一内模式映像:是表和数据的物理存储之间的映射,存在于概念级和内部级之间,若修改了数据存储方式,只需要修改此映射,而不需要去修改应用程序。
    在这里插入图片描述

数据库设计

(1)需求分析:即分析数据存储的要求,产出物有数据流图、数据字典、需求说明书。获得用户对系统的三个要求:信息要求、处理要求、系统要求。
(2)概念结构设计:就是设计E-R图,也即实体-联系图。工作步骤包括:选择局部应用、逐一设计E-R图、E-R图合并。
合并E-R图时,它们之间存在的冲突主要有以下3类。
  属性冲突。同一属性可能会存在于不同的分E-R图中。
  命名冲突。相同意义的属性,在不同的分E-R图上有着不同的命名,或是名称相同的属性在不同的分E-R图中代表着不同的意义。
  结构冲突。同一实体在不同的分E-R图中有不同的属性,同一对象在某一分E-R图中被抽象为实体而在另一分E-R图中又被抽象为属性。
(3)逻辑结构设计:将E-R图,转换成关系模式。工作步骤包括:确定数据模型、将E-R图转换成为指定的数据模型、确定完整性约束和确定用户视图。
(4)物理设计:步骤包括确定数据分布、存储结构和访问方式。
(5)数据库实施阶段。根据逻辑设计和物理设计阶段的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
(6)数据库运行和维护阶段。数据库应用系统经过试运行即可投入运行,但该阶段需要不断地对系统进行评价、调整与修改。
在这里插入图片描述

数据模型

  • 关系模型是二维表的形式表示的实体一联系模型,是将实体一联系模型转换而来的,经过开发人员设计的;
  • 概念模型是从用户的角度进行建模的,是现实世界到信息世界的第一抽象,是真正的实体-联系模型。
  • 网状模型表示实体类型及其实体之间的联系,一个事物和另外几个都有联系,形成一张网。
  • 面向对象模型是采用面向对象的方法设计数据库,以对象为单位,每个对象包括属性和方法,具有类和继承等特点。
  • 数据模型三要素:数据结构(所研究的对象类型的集合)、数据操作(对数据库中各种对象的实例允许执行的操作的集合)、数据的约束条件(一组完整性规则的集合)。
  • 用E-R图来描述概念数据模型,世界是由一组称作实体的基本对象和这些对象之间的联系构成的。
  • 在E-R模型中,使用椭圆表示属性(一般没有)、长方形表示实体、菱形表示联系,联系的两端要填写联系类型,示例如下图:在这里插入图片描述
  • 实体:客观存在并可相互区别的事物。可以是具体的人、事、物或抽象概念。如人、汽车、图书、账户、贷款。
  • 弱实体和强实体:弱实体依赖于强实体的存在而存在。
  • 实体集:具有相同类型和共享相同属性的实体的集合,如学生、课程。
  • 属性:实体所具有的特性
  • 属性分类:简单属性和复合属性;单值属性和多值属性;NULL属性;派生属性。
  • 域:属性的取值范围称为该属性的域。
  • 码(key):唯一标识实体的属性集。
  • 联系:现实世界中事物内部以及事物之间的联系,在E-R图中反映为实体内部的联系和实体之间的联系
  • 联系类型:一对一1:1、一对多1:N、多对多M:N
  • E-R模型转换为关系模型:每个实体都对应一个关系模式;联系分为三种:
     1:1联系中,联系可以放到任意的两端实体中,作为一个属性(要保证1:1的两端关联),也可以转换为一个单独的关系模式;
     1:N的联系中,联系可以单独作为一个关系模式,也可以在N端中加入1端实体的主键.
     M:N的联系中,联系必须作为一个单独的关系模式,其主键是M和N端的联合主键

关系代数

  • 并:结果是两张表中所有记录数合并,相同记录只显示一次。
  • 交:结果是两张表中相同的记录。
  • 差:S1-S2,结果是S1表中有而S2表中没有的那些记录。
    在这里插入图片描述
  • 笛卡尔积:S1 ∗ * S2,产生的结果包括S1和S2的所有属性列,并且S1中每条记录依次和S2中所有记录组合成一条记录,最终属性列为S1+S2属性列,记录数为S1 ∗ * S2记录数。
  • 投影:实际是按条件选择某关系模式中的某列,列也可以用数字表示。
  • 选择:实际是按条件选择某关系模式中的某条记录。
    在这里插入图片描述
  • 自然连接的结果显示全部的属性列,但是相同属性列只显示一次,显示两个关系模式中属性相同且值相同的记录
    设有关系R、S如下左图所示,自然连接结果如下图所示:
    在这里插入图片描述

函数依赖

  • 给定一个,能唯一确定一个Y,就称X确定Y,或者说Y依赖于,例如Y=X*X函
    数。
  • 函数依赖又可扩展以下两种规则:
     部分函数依赖:A可确定C,(A,B)也可确定C,(A,B)中的一部分(即A)可以确定C,称为部分函数依赖
     传递函数依赖:当A和B不等价时,A可确定B,B可确定C,则A可确定C,是传递函数依赖;若A和B等价,则不存在传递,直接就可确定C。
  • 函数依赖的公理系统(Armstrong)
    设关系模式R<U,F>,U是关系模式R的属性全集,F是关系模式R的一个函数依赖集。对于R<U,F>来说有以下的;
     自反律:若Y∈X∈U,则X→Y为F所逻辑蕴含
     增广律:若X→Y为F所逻辑蕴含,且Z∈U,则XZ→YZ为F所逻辑蕴含
     传递律:若X→Y和Y→Z为F所逻辑蕴含,则X→Z为F所逻辑蕴含
     合并规则:若X→Y,X→Z,则X→YZ为F所蕴涵
     伪传递率:若X-→Y,WY→Z,则XW→Z为F所蕴涵
     分解规则:若X→Y,Z∈Y,则X→Z为F所蕴涵

键与约束

 超键:能唯一标识此表的属性的组合。
 候选键:超键中去掉冗余的属性,剩余的属性就是候选键。
 主键:任选一个候选键,即可作为主键。
 外键:其他表中的主键
 主属性:候选键内的属性为主属性,其他属性为非主属性。
 实体完整性约束:即主键约束,主键值不能为空,也不能重复
 参照完整性约束:即外键约束,外键必须是其他表中已经存在的主键的值,或者为空
 用户自定义完整性约束:自定义表达式约束,如设定年龄属性的值必须在0到150之间。

范式

1.第一范式1NF:关系中的每一个分量必须是一个不可分的数据项。通俗地说,第一范式就是表中不允许有小表的存在。
2.第二范式2NF:如果关系R属于1NF,且每一个非主属性完全函数依赖于任何一个候选码,则R属于2NF。通俗地说,2NF就是在1NF的基础上,表中的每一个非主属性不会依赖复合主键中的某一个列
3.第三范式3NF:在满足1NF的基础上,表中不存在非主属性对码的传递依赖
4.BC范式BCNF:是指在第三范式的基础上进一步消除主属性对于码的部分函数依赖和传递依赖。通俗的来说,就是在每一种情况下每一个依赖的左边决定因素都必然包含候选键

并发控制

  • 事务:由一系列操作组成,这些操作,要么全做,要么全不做,拥有四种特性,详解如下:
    (操作)原子性:要么全做,要么全不做。
    (数据)一致性:事务发生后数据是一致的,例如银行转账,不会存在A账户转出,但是B账户没收到的情况。
    (执行)隔离性:任一事务的更新操作直到其成功提交的整个过程对其他事务都是不可见的,不同事务之间是隔离的,互不干涉。
    (改变)持续性:事务操作的结果是持续性的。
  • 事务是并发控制的前提条件,并发控制就是控制不同的事务并发执行,提高系统效率,但是并发控制中存在下面三个问题:
    1.丢失更新:事务1对数据A进行了修改并写回,事务2也对A进行了修改并写回,此时事务2写回的数据会覆盖事务1写回的数据,就丢失了事务1对A的更新。即对数据A的更新会被覆盖。
    2.不可重复读:事务2读A,而后事务1对数据A进行了修改并写回,此时若事务2再读A,发现数据不对。即一个事务重复读A两次,会发现数据A有误。
    3.读脏数据:事务1对数据A进行了修改后,事务2读数据A,而后事务1回滚,数据A恢复了原来的值,那么事务2对数据A做的事是无效的,读到了脏数据。

封锁协议

  • X锁是排它锁(写锁)。若事务T对数据对象A加上x锁,则只允许T读取和修改A,其他事务都不能再对A加任何类型的锁,直到T释放A上的锁。
  • S锁是共享锁(读锁)。若事务T对数据对象A加上S锁,则只允许T读取A,但不能修改A,==其他事务只能再对A加S锁=(也即能读不能修改),直到T释放A上的S锁。
  • 共分为三级封锁协议,如下:
    1.一级封锁协议:事务在修改数据R之前必须先对其加X锁,直到事务结束才释放。可解决丢失更新问题。
    2.二级封锁协议:一级封锁协议的基础上加上事务T在读数据R之前必须先对其
    加s锁,读完后即可释放s锁。可解决丢失更新、读脏数据问题。

    3.三级封锁协议:一级封锁协议加上事务T在读取数据R之前先对其加S锁,直到事务结束才释放。可解决丢失更新、读脏数据、数据重复读问题

数据库安全

  • 静态转储:即冷备份,指在转储期间不允许对数据库进行任何存取、修改操作;
    优点是非常快速的备份方法、容易归档〈直接物理复制操作);
    缺点是只能提供到某一时间点上的恢复,不能做其他工作,不能按表或按用户恢复。
  • 动态转储:即热备份,在转储期间允许对数据库进行存取、修改操作,因此,转储和用户事务可并发执行;
    优点是可在表空间或数据库文件级备份,数据库扔可使用,可达到秒级恢复;
    缺点是不能出错,否则后果严重,若热备份不成功,所得结果几乎全部无效。
  • 完全备份:备份所有数据。
  • 差量备份:仅备份上一次完全备份之后变化的数据。
  • 增量备份:备份上一次备份之后变化的数据。
  • 日志文件:在事务处理过程中,DBMS把事务开始、事务结束以及对数据库的插入删除和修改的每一次操作写入日志文件。一旦发生故障,DBMS的恢复子系统利用日志文件撤销事务对数据库的改变,回退到事务的初始状态。

分布式数据库

  • 局部数据库位于不同的物理位置,使用一个全局DBMS將所有局部数据库联网管理,这就是分布式数据库。
  • 分片模式
     水平分片:将表中水平的记录分别存放在不同的地方。
     垂直分片:将表中的垂直的列值分别存放在不同的地方。
  • 分布透明性
     分片透明性:用户或应用程序不需要知道逻辑上访问的表具体是如何分块存储的
     位置透明性:应用程序不关心数据存储物理位置的改变
     逻辑透明性:用户或应用程序无需知道局部使用的是哪种数据模型
     复制透明性:用户或应用程序不关心复制的数据从何而来
    在这里插入图片描述

数据仓库技术

数据仓库是一个面向主题的、集成的、非易失的、且随时间变化的数据集合,用于支持管理决策。
面向主题:按照一定的主题域进行组织的。
集成的:数据仓库中的数据是在对原有分散的数据库数据抽取、清理的基础上经过系统加工、汇总和整理得到的,必须消除源数据中的不一致性,以保证数据仓库内的信息是关于整个企业的一致的全局信息。
相对稳定的:数据仓库的数据主要供企业决策分析之用,所涉及的数据操作主要是数据查询,一旦某个数据进入数据仓库以后,一般情况下将被长期保留,也就是数据仓库中一般有大量的查询操作,但修改和删除操作很少,通常只需要定期的加载、刷新。
反映历史变化:数据仓库中的数据通常包含历史信息,系统记录了企业从过去某一时点(如开始应用数据仓库的时点)到目前的各个阶段的信息,通过这些信息,可以对企业的发展历程和未来趋势做出定量分析和预测。
数据仓库的结构通常包含四个层次,

  1. 数据源:是数据仓库系统的基础,是整个系统的数据源泉。
  2. 数据的存储与管理:是整个数据仓库系统的核心。
  3. OLAP(联机分析处理)服务器:对分析需要的数据进行有效集成,按多维模型组织,以便进行多角度、多层次的分析,并发现趋势。
  4. 前端工具:主要包括各种报表工具、查询工具、数据分析工具、数据挖掘工具以及各种基于数据仓库或数据集市的应用开发工具。

反规范化技术

  • 反规范化技术:规范化设计后,数据库设计者希望牺牲部分规范化来提高性能
  • 采用反规范化技术的益处:降低连接操作的需求、降低外码和索引的数目,还可能减少表的数目,能够提高查询效率
  • 可能带来的问题:数据的重复存储,浪费了磁盘空间;可能出现数据的完整性问题,为了保障数据的一致性,增加了数据维护的复杂性,会降低修改速度
  • 具体方法:
    (1)增加冗余列:在多个表中保留相同的列,通过增加数据冗余减少或避免查询时的连接操作。
    (2)增加派生列:在表中增加可以由本表或其它表中数据计算生成的列,减少查询时的连接操作并避免计算或使用集合函数。
    (3)重新组表:“如果许多用户需要查看两个表连接出来的结果数据,则把这两个表重新组成一个表来减少连接而提高性能
    (4) 水平分割表:根据一列或多列数据的值,把数据放到多个独立的表中,主要用于表数据规模很大、表中数据相对独立或数据需要存放到多个介质上时使用。
    (5)垂直分割表:对表进行分割,将主键与部分列放到一个表中,主键与其它列放到另一个表中,在查询时减少I/0次数。

SQL语句

  • SQl语言中的语法关键字,不区分大小写
    创建表 create table;
    指定主键 primary key();
    指定外键 foreign key();
    修改表 alter table;
    删除表 drop table;
    索引 index 视图view
    数据库查询 select…from…where
    分组查询group by 分组是要注意select后的列名要适应分组,having为分组附加条件:select sno,avg from student group by sno having(avg>60)
    更名运算 as: select sno as “学号” from t1
    字符串匹配 like,%匹配多个字符,_匹配任意一个字符
    排序 order by:默认为升序,降序要加关键字desc:select * from order by sno desc。

四 嵌入式技术

嵌入式微处理体系结构

冯诺依曼结构

传统计算机采用冯·诺依曼(Von Neumann)结构,也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构
在这里插入图片描述

  • 冯·诺依曼结构的计算机程序和数据共用一个存储空间,程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置
  • 采用单一的地址及数据总线,程序指令和数据的宽度相同。
  • 处理器执行指令时,先从储存器中取出指令解码,再取操作数执行运算,即使单条指令也要耗费儿个甚至几十个周期,在高速运算时,在传输通道上会出现瓶颈效应。
哈佛结构

 哈佛结构是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器每个存储器独立编址、独立访问
在这里插入图片描述

  • 与两个存储器相对应的是系统中的两套独立的地址总线和数据总线
  • 这种分离的程序总线和数据总线可允许在一个机器周期内同时获取指令字来自程序存储器)和操作数(来自数据存储器),从而提高了执行速度,使数据的吞吐率提高了1倍。

微处理器分类

  • 根据嵌入式微处理器的字长宽度,可分为4位、8位、16位、32位和64位。般把16位及以下的称为嵌入式微控制器(EmbeddedMicroController),32位及以上的称为嵌入式微处理器。
  • 如果按系统集成度划分,可分为两类:一种是微处理器内部仅包含单纯的中央处理器单元,称为一般用途型微处理器:另一种则是将CPU、ROM、RAM及1/0等部件集成到同一个芯片上,称为单芯片微控制器(SingleChipMicrocontroller)。
  • 如果根据用途分类,一般分为嵌入式微控制器MCU、嵌入式微处理器MPU、嵌入式数字信号处理器DSP、嵌入式片上系统SOC等。
  • 嵌入式微控制器MCU典型代表是单片机,其片上外设资源比较丰富,适合于控制。MCU芯片内部集成ROM/EPROM、RAM、总线、总线逻辑、定时/计数器、看门狗、I/O、串行口、脉宽调制输出、A/D、D/A、FlashRAM、EEPROM等各种必要功能和外设。和嵌入式微处理器相比,微控制器的最大特点是单片化,体积大大减小,从而使功耗和成本下降、可靠性提高,其片上外设资源一般较丰富,适合于控制,是嵌入式系统工业的主流。
  • 嵌入式微处理器MPU通用计算机中的CPU演变而来。它的特征是具有32位以上的处理器,具有较高的性能,当然其价格也相应较高。但与计算机处理器不同的是,在实际嵌入式应用中,只保留和嵌入式应用紧密相关的功能硬件,去除其他的冗余功能部分,这样就以最低的功耗和资源实现嵌入式应用的特殊要求。与工业控制计算机相比,嵌入式微处理器具有体积小、重量轻、成本低、可靠性高的优点。目前常见的有ARM、MIPS、POWER PC等。
  • 嵌入式数字信号处理器DSP专门用于信号处理方面的处理器,其在系统结构和指令算法方面进行了特殊设计,具有很高的编译效率和指令的执行速度。采用哈佛结构,流水线处理,其处理速度比最快的CPU还快10-50倍。在数字滤波、FFT、谱分析等各种仪器上DSP获得了大规模的应用。
  • 嵌入式片上系统SOC,是追求产品系统最大包容的集成器件。SOC最大的特点是成功实现了软硬件无缝结合,直接在处理器片内嵌入操作系统的代码模块。是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。

多核处理器

  • 多核指多个微处理器内核,是将两个或更多的微处理器封装在一起,集成在一个电路中。多核处理器是单枚芯片,能够直接插入单的处理器插槽中。多核与多CPU相比,很好的降低了计算机系统的功耗和体积。在多核技术中,由操作系统软件进行调度,多进程,多线程并发都可以
    2个或多个内核工作协调实现方式:
  • 对称多处理技术SMP:将2颗完全一样的处理器封装在一个芯片内,达到双倍或接近双倍的处理性能,节省运算资源。
  • 非对称处理技术AMP:2个处理内核彼此不同,各自处理和执行特定的功能,在软件的协调下分担不同的计算任务。
多核CPU的调度
  • 多核CPU环境下进程的调度算法一般有全局队列调度和局部队列调度两种:
  • 全局队列调度是指操作系统维护一个全局的任务等待队列,当系统中有一个CPU空闲时,操作系统就从全局任务等待队列中选取就绪任务开始执行,CPU核心利用率高。
  • 局部队列调度是操作系统为每个CPU内核维护一个局部的任务等待队列,当系统中有个CPU内核空闲时,就从该核心的任务等待队列中选取适当的任务执行,优点是无需在多个CPU之间切换。

嵌入式软件

 嵌入式软件是指应用在嵌入式计算机系统当中的各种软件,除了具有通用软件的一般特性,还具有一些与嵌入式系统相关的特点,包括:规模较小、开发难度大、实时性和可靠性要求高、要求固化存储

嵌入式软件分类
  • 系统软件:控制和管理嵌入式系统资源,为嵌入式应用提供支持的各种软件,如设备驱动程序、嵌入式操作系统、嵌入式中间件等。
  • 应用软件:嵌入式系统中的上层软件,定义了嵌入式设备的主要功能和用途,并负责与用户交互,一般面向特定的应用领域,如飞行控制软件、手机软件、地图等。
  • 支撑软件:辅助软件开发的工具软件,如系统分析设计工具、在线仿真工具、交叉编译器等。
  • 板级支持包(BSP)是介于主板硬件和操作系统中驱动层程序之间的一层,一般认为它属于操作系统一部分,主要是实现对操作系统的支持,为上层的驱动程序提供访问硬件设备寄存器的函数包,使之能够更好的运行于硬件主板。
    具体功能包括:
    1.单板硬件初始化,主要是CPU的初始化,为整个软件系统提供底层硬件支持
    2.为操作系统提供设备驱动程序和系统中断服务程序
    3.定制操作系统的功能,为软件系统提供一个实时多任务的运行环境
    4.初始化操作系统,为操作系统的正常运行做好准备。
    主要具有以下两个特点。
    硬件相关性,因为嵌入式实时系统的硬件环境具有应用相关性,而作为上层软件与硬件平台之间的接口,BSP需为操作系统提供操作和控制具体硬件的方法。
    操作系统相关性,不同的操作系统具有各自的软件层次结构,因此不同操作系统具有特定的硬件接口形式。
    一般来说,BSP主要包括两个方面的内容:引导加载程序Boot Loader和设备驱动程序
  • BootLoader是嵌入式系统加电后运行的第一段软件代码,是在操作系统内核运行之前运行的一小段程序,通过这段程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境设置到一个合适的状态,以便为最终调用操作系统内核做好准备。一般包括以下功能:
  • 片级初始化:主要完成微处理器的初始化,包括设置微处理器的核心寄存器和控制寄存器、微处理器的核心工作模式及其局部总线模式等。片级初始化把微处理器从上电时的默认状态逐步设置成系统所要求的工作状态。这是一个纯硬件的初始化过程。
  • 板级初始化:通过正确地设置各种寄存器的内容来完成微处理器以外的其他硬件设备的初始化。例如,初始化LED显示设备、初始化定时器、设置中断控制寄存器、初始化串口通信、初始化内存控制器、建立内存空间的地址映射等。在此过程中,除了要设置各种硬件寄存器以外,还要设置某些软件的数据结构和参数。因此,这是一个同时包含有软件和硬件在内的初始化过程。
  • 加载内核(系统级初始化)将操作系统和应用程序的映像从Flash存储器复制到系统的内存当中,然后跳转到系统内核的第一条指令处继续执行。
  • 在一个嵌入式系统当中,操作系统是可能有也可能无的。但无论如何,设备驱动程序是必不可少的。所谓的设备驱动程序,就是一组库函数,用来对硬件进行初始化和管理,并向上层软件提供良好的访问接口
  • 对于不同的硬件设备来说,它们的功能是不一样的,所以它们的设备驱动程序也是不一样的。但是一般来说,大多数的设备驱动程序都会具备以下的一些基本功能。
    硬件启动:在开机上电或系统重启的时候,对硬件进行初始化。
    硬件关闭:将硬件设置为关机状态。
    硬件停用:暂停使用这个硬件。
    硬件启用重新启用这个硬件。
    读操作:从硬件中读取数据。
    写操作:往硬件中写入数据。

嵌入式系统的组成

 一般嵌入式系统由嵌入式处理器、相关支撑硬件、嵌入式操作系统、支撑软件以及应用软件组成
(1)嵌入式处理器。由于嵌入式系统一般是在恶劣的环境条件下工作,与一般处理器相比,嵌入式处理器应可抵抗恶劣环境的影响,比如高温、寒冷、电磁、加速度等环境因素。为适应恶劣环境,嵌入式处理器芯片除满足低功耗、体积小等需求外,根据不同环境需求,其工艺可分为民用、工业和军用等三个档次。
(2)相关支撑硬件。相关支撑硬件是指除嵌入式处理器以外的构成系统的其他硬件,包括存储器、定时器、总线、10接口以及相关专用硬件。
(3)嵌入式操作系统。嵌入式操作系统是指运行在嵌入式系统中的基础软件,主要用于管理计算机资源和应用软件。与通用操作系统不同,嵌入式操作系统应具备实时性、可剪裁性和安全性等特征。
(4)支撑软件。支撑软件是指为应用软件开发与运行提供公共服务、软件开发、调试能力的软件,支撑软件的公共服务通常运行在操作系统之上,以库的方式被应用软件所引用。
(5)应用软件。应用软件是指为完成嵌入式系统的某一特定目标所开发的软件。

嵌入式系统应具备的特性:

(1)专用性强。嵌入式系统面向特定应用需求,能够把通用CPU中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统的小型化。
(2)技术融合。嵌入式系统将先进的计算机技术、通信技术、半导体技术和电子技术与各个行业的具体应用相结合,是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。
(3)软硬一体软件为主。软件是嵌入式系统的主体,有IP核。嵌入式系统的硬件和软件都可以高效地设计,量体裁衣,去除冗余,可以在同样的硅片面积上实现更高的性能。
(4)比通用计算机资源少。由于嵌入式系统通常只完成少数几个任务。设计时考虑到其经济性,不能使用通用CPU,这就意味着管理的资源少,成本低,结构更简单。
(5)程序代码固化在非易失存储器中。为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存在磁盘中。
(6)需专门开发工具和环境。嵌入式系统本身不具备开发能力,即使设计完成以后,用户通常也不能对其中的程序功能进行修改,必须有套开发工具和环境才能进行开发。
(7)体积小、价格低、工艺先进、性能价格比高、系统配置要求低、实时性强
(8)对安全性和可靠性的要求高。

嵌入式系统分类

 根据不同用途可将嵌入式系统划分为嵌入式实时系统和嵌入式非实时系统两种,而实时系统又可分为强实时系统和弱实时系统。如果从安全性要求看,嵌入式系统还可=分为安全攸关系统和非安全攸关系统
 嵌入式系统分为硬件层、抽象层、操作系统层、中间件层和应用层等5层。
(1)硬件层。硬件层主要是为嵌入式系统提供运行支撑的硬件环境,其核心是微处理器、存储器(ROM、
SDRAM、Flash等)、I/0接口(A/D、D/A、I/0等)和通用设备以及总线、电源、时钟等。
(2)抽象层。在硬件层和软件层之间为抽象层,主要实现对硬件层的硬件进行抽象,为上层应用(操作
系统〉提供虚拟的硬件资源:板级支持包(BSP)是一种硬件驱动软件,它是面向硬件层的硬件芯片或电路
进行驱动,为上层操作系统提供对硬件进行管理的支持。
(3)操作系统层。操作系统层主要由嵌入式操作系统、文件系统、图形用户接口、网络系统和通用组件
等可配置模块组成。
(4)中间件层。中间件层一般位于操作系统之上,管理计算机资源和网络通信,中间件层是连接两个独
立应用的桥梁。
(5)应用层。应用层是指嵌入式系统的具体应用,主要包括不同的应用软件。

嵌入式数据库系统EDBMS

  1. 使用环境的特点:
    (1)设备随时移动性。嵌入式数据库主要用在移动信息设备上,设备的位置经常随使用者一起移动。
    (2)网络频繁断接。移动设备或移动终端在使用的过程中,位置经常发生变化,同时也受到使用方式、电源、无线通信和网络条件等因素的影响。所以,一般并不持续保持网络连接,而是经常主动或被动地间歇性断接和连接。
    (3)网络条件多样化。由于移动信息设备位置的经常变化,导致它们与数据库服务器在不同的时间可能通过不同的网络系统连接,这些网络在带宽、通信代价、网络延迟和QoS等方面可能有所差异。
    (4)通信能力不对称。由于受到移动设备资的源限制,移动设备与服务器之间的网络通信能力是非对称的。移动设备的发送能力都非常有限,使得数据库服务器到移动设备的下行通信带宽和移动设备到数据库服务器之间的上行带宽相差很大。
  2. 系统组成
    一个完整的EDBMS由若干子系统组成,包括主数据库、同步服务器、嵌入式数据库和连接网络等几个子系统:
    嵌入式移动数据库在实际应用中必须解决好数据的一致性(复制性)、高效的事务处理和数据的安全性等关键问题。在这里插入图片描述

嵌入式操作系统EOS

与通用操作系统相比,EOS主要有以下特点:
(1)微型化。EOS的运行平台不是通用计算机,而是嵌入式系统。这类系统一般没有大容量的内存,几乎没有外存,因此,EOS必须做得小巧,以占用尽量少的系统资源。
(2)代码质量高。在大多数嵌入式应用中,存储空间依然是宝贵的资源,这就要求程序代码的质量要高,代码要尽量精简。
(3)专业化。嵌入式系统的硬件平台多种多样,处理器的更新速度快,每种处理器都是针对不同的应用领域而专门设计的。因此,EOS要有很好适应性和移植性,还要支持多种开发平台。
(4)实时性强。嵌入式系统广泛应用于过程控制、数据采集、通信、多媒体信息处理等要求实时响应的场合,因此,实时性成为EOS的又一特点。
(5)可裁减和可配置。应用的多样性要求EOS具有较强的适应能力,能够根据应用的特点和具体要求进行灵活配置和合理裁减,以适应微型化和专业化的要求

嵌入式实时系统

  • 嵌入式实时系统是一种完全嵌入受控器件内部,为特定应用而设计的专用计算机系统。在嵌入式实时系统中,要求系统在投入运行前即具有确定性和可预测性。
  • 可预测性是指系统在运行之前,其功能、响应特性和执行结果是可预测的;
  • 确定性是指系统在给定的初始状态和输入条件下,在确定的时间内给出确定的结果。

实时操作系统(RTOS)的特点

  • 当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应,并控制所有实时任务协调一致运行。
  • 因而,提供及时响应和高可靠性是其主要特点。
  • 实时操作系统有硬实时和软实时之分,硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时保证的;软实时则只要按照任务的优先级,尽可能快地完成操作即可。

实时操作系统的特征

(1)高精度计时系统
 计时精度是影响实时性的一个重要因素。在实时应用系统中,经常需要精确确定实时地操作某个设备或执行某个任务,或精确的计算一个时间函数。这些不仅依赖于一些硬件提供的时钟精度,也依赖于实时操作系统实现的高精度计时功能。
(2)多级中断机制
 一个实时应用系统通常需要处理多种外部信息或事件,但处理的紧迫程度有轻重缓急之分。有的必须立即作出反应,有的则可以延后处理。因此,需要建立多级中断嵌套处理机制,以确保对紧迫程度较高的实时事件进行及时响应和处理。
(3)实时调度机制
 实时操作系统不仅要及时响应实时事件中断,同时也要及时调度运行实时任务。但是,处理机调度并不能随心所欲的进行,因为涉及到两个进程之间的切换,只能在确保“安全切换”的时间点上进行,实时调度机制包括两个方面,一是在调度策略和算法上保证优先调度实时任务;二是建立更多“安全切换”时间点,保证及时调度实时任务。

嵌入式软件设计

  • 交叉编译:嵌入式软件开发所采用的编译为交叉编译。所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。编译的最主要的工作就在将程序转化成运行该程序的CPU所能识别的机器代码,由于不同的体系结构有不同的指令系统。因此,不同的CPU需要有相应的编译器,而交叉编译就如同翻译一样,把相同的程序代码翻译成不同CPU的对应可执行二进制文件。
    嵌入式系统的开发需要借助宿主机(通用计算机)来编译出目标机的可执行代码。
  • 交叉调试:嵌入式软件经过编译和链接后即进入调试阶段,调试是软件开发过程中必不可少的一个环节,嵌入式软件开发过程中的交叉调试与通用软件开发过程中的调试方式有很大的差别。
    在嵌入式软件开发中,调试时采用的是在宿主机和目标机之间进行的交叉调试调试器仍然运行在宿主机的通用操作系统之上,但被调试的进程却是运行在基于特定硬件平台的嵌入式操作系统中,调试器和被调试进程通过串口或者网络进行通信,调试器可以控制、访问被调试进程,读取被调试进程的当前状态,并能够改变被调试进程的运行状态。

软件开发工具

  • 嵌入式软件的开发可以分为几个阶段:编码、交叉编译、交叉调试。
  • 编辑器:用于编写嵌入式源代码程序,从理论上来说,任何一个文本编辑器都可以用来编写源代码。各种集成开发环境会提供功能强大的编辑器,如VS系列、eclipse、keil、CSs等。常见的独立编辑器:UE、Source Insight、vim等。
  • 编译器gcc:编译阶段的工作是用交叉编译工具处理源代码,生成可执行的目标文件,在嵌入式系统中,由于宿主机和目标机系统不一样,需要使用交叉编译,GNU C/C++(gcc)是目前常用的一种交叉编译器,支持非常多的宿主机/目标机组合。
  • 调试器gdb
    在开发嵌入式软件时,交叉调试是必不可少的一步。嵌入式软件调试特点:
    调试器运行在宿主机上,被调试程序运行在目标机上。
    调试器通过某种通信方式与目标机建立联系,如串口、并口、网络、TAG等。在目标机上一般有调试器的某种代理,能配合调试器一起完成对目标机上运行程序的调试,可以是软件或支持调试的硬件。
    gdb是GNU开源组织发布的一个强大的程序调试工具。

五 计算机网络

网络功能和分类

 计算机网络是计算机技术与通信技术相结合的产物,它实现了远程通信、远程信息处理和资源共享
 计算机网络的功能:数据通信、资源共享、管理集中化、实现分布式处理、负载均衡
 网络性能指标:速率、带宽(频带宽度或传送线路速率〉、吞吐量、时延、往返时间、利用率。
 网络非性能指标:费用、质量、标准化、可靠性、可扩展性、可升级性、易管理性和可维护性。
计算机网络的分类:

  1. 局域网(LAN):传输速率 4Mbps~1Gbps
  2. 城域网(MAN):传输速率 50Kbps~100Mbps
  3. 广域网(WAN):传输速率 9.6Kbps~45Mbps
网络的拓扑结构

总线型(利用率低,干扰大,价格低)
星型(交换机形成的局域网,中央单元负荷大)
环型(流动方向固定,效率低扩展难)
树型(总线型的扩充 ,分级结构)
分布式(任意节点连接,管理难成本高)
在这里插入图片描述

通信技术

 计算机网络是利用通信技术将数据从一个结点传送到另一结点的过程。通信技术是计算机网络的基础。信道可分为物理信道和逻辑信道。物理信道由传输介质和设备组成,根据传输介质的不同,分为无线信道和有线信道。逻辑信道是指在数据发送端和接收端之间存在的一条虚拟线路,可以是有连接的或无连接的。逻辑信道以物理信道为载体。
发信机进行的信号处理包括信源编码、信道编码、交织、脉冲成形和调制。相反地,收信机进行的信号处理包括解调、采样判决、去交织、信道译码和信源译码。
如果同时传递多路数据就需要复用技术和多址技术。复用技术是指在一条信道上同时传输多路数据的技术,如TDM时分复用、FDM频分复用和CDM码分复用等。多址技术是指在一条线上同时传输多个用户数据的技术,在接收端把多个用户的数据分离(TDMA时分多址、FDMA频分多址和CDMA码分多址)。
 作为新一代的移动通信技术,5G特征体现在以下方面。
(1)基于OFDM优化的波形和多址接入。
(2)OFDM加窗提高多路传输效率
(3)灵活框架设计
(4)实现可扩展的OFDM 间隔参数配直
(5)大规模MIM0:最多256根天线
(6)毫米波:频率大于24GHz以上的频段
(7)频谱共享
(8)先进的信道编码设计
5G网络的主要特征:服务化架构、网络切片。

OSI七层模型

功能单位协议设备
1.物理层在链路上透明地传输位。需要完成的工作包括线路配置、确定数据传输模式、确定信号形式、对信号进行编码、连接传输介质。为此定义了建立、维护和拆除物理链路所具备的机械特性、电气特性、功能特性以及规程特性。比特EIA/TIA, RS-232, RJ-45,RS-449,FDDI中继器,集线器
2.数据链路层把不可靠的信道变为可靠的信道。为此将比特组成帧,在链路上提供点到点的帧传输,并进行差错控制、流量控制等。SDLC,HDLC,LAPB,PPP,帧中继交换器,网桥
3. 网络层在源节点一目的节点之间进行路由选择、拥塞控制、顺序控制、传送包,保证报文的正确性。网络层控制着通信子网的运行因而它又称为通信子网层。IP分组IP,ICMP,IGMP,ARP,RARP路由器
4.传输层提供端-端间可靠的、透明的数据传输,保证报文顺序的正确性、数据的完整性。报文段TCP,UDP网关
5.会话层建立通信进程的逻辑名字与物理名字之间的联系,提供进程之间建立、管理和终止会话的方法,处理同步与恢复问题。RPC,SQL,NFS网关
6.表示层实现数据转换(包括格式转换、压缩、加密等),提供标准的应用接口、公用的通信服务、公共数据表示方法。JPEG,ASCLL,GIF,DES网关
7.应用层对用户不透明的提供各种服务,如E-mail比特Telnet,FTP,HTTP,SMTP,POP3,DNS网关

局域网和广域网协议

IEEE802.3 :标准以太网 速度为10Mb/s,传输介质是同轴电缆。
IEEE802.3u: 快速以太网 速度为100Mb/s 传输介质是双绞线。
IEEE802.3z:千兆以太网 速度为1000Mb/s 传输介质是光纤或双绞线。
IEEE802.3ae:万兆以太网 速度为10Gb/s 传输介质是光纤

TCP/IP协议

在这里插入图片描述

网络层协议:
  • IP:网络层最重要的核心协议,在源地址和目的地址之间传送数据报,无连接、不可靠。
  • ICMP:因特网控制报文协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
  • ARP和RARP:地址解析协议,ARP是将IP地址转换为物理地址,RARP是将物理地址转换为IP地址。
  • IGMP:网络组管理协议,允许因特网中的计算机参加多播,是计算机用做向相邻多目路由器报告多目组成员的协议,支持组播。
传输层协议:
  • TCP:整个TCP/IP协议族中最重要的协议之一,在IP协议提供的不可靠数据数据基础上,采用了重发技术,为应用程序提供了一个可靠的、面向连接的、全双工的数据传输服务。一般用于传输数据量比较少,且对可靠性要求高的场合。
  • UDP:是一种不可靠、无连接的协议,有助于提高传输速率,一般用于传输数据量大,对可靠性要求不高,但要求速度快的场合。
应用层协议:

 基于TCP的FTP、HTTP等都是可靠传输。基于UDP的DHCP、DNS等都是不可靠传输。

  • FTP:可靠的文件传输协议,用于因特网上的控制文件的双向传输。
  • HTTP:超文本传输协议,用于从WWW服务器传输超文本到本地浏览器的传输协议。使用SSL加密后的安全网页协议为HTTPS。
  • SMTP和POP3:简单邮件传输协议,是一组用于由源地址到目的地址传送邮件的规则,邮件报文采用ASCII格式表示。
  • Telnet:远程连接协议,是因特网远程登录服务的标准协议和主要方式。
  • TFTP:不可靠的、开销不大的小文件传输协议。
  • SNMP:简单网络管理协议,由一组网络管理的标准协议,包含一个应用层协议、数据库模型和一组资源对象。该协议能够支持网络管理系统,监测连接到网络上的设备是否有任何引起管理师行关注的情况。
  • DHCP:动态主机配置协议,1基于UDP,基于C/S模型,为主机动态分配IP地址,有三种方式:固定分配、动态分配、自动分配。
  • DNS:域名解析协议,通过域名解析出IP地址。
协议端口对照表

在这里插入图片描述

交换技术

 数据在网络中转发通常离不开交换机。人们日常使用的计算机通常就是通过交换机接入网络的。
交换机功能包括:
 集线功能。提供大量可供线缆连接的端口达到部署星状拓扑网络的目的。
 中继功能。在转发帧时重新产生不失真的电信号。
 桥接功能。在内置的端口上使用相同的转发和过滤逻辑。
 隔离冲突域功能。将部署好的局域网分为多个冲突域,而每个冲突域都有自己独立的带宽,以提高交换机整体宽带利用效率。
 交换机需要实现的功能如下所述。
(1)转发路径学习。根据收到数据帧中的源MAC地址建立该地址同交换机端口的映射,写入MAC地址表中。
(2)数据转发。如果交换机根据数据帧中的目的MAC地址在建立好的MAC地址表中查询到了,就向对应端口进行转发。
(3)数据泛洪。如果数据帧中的目的MAC地址不在MAC地址表中,则向所有端口转发,也就是泛洪。广播帧和组播帧向所有端口(不包括源端口)进行转发。
(4)链路地址更新。MAC地址表会每隔一定时间(如300s)更新一次。

路由技术

路由功能由路由器来提供,具体包括:
(1)异种网络互连,比如具有异种子网协议的网络互连:
(2)子网协议转换,不同子网间包括局域网和广域网之间的协议转换:
(3)数据路由,即将数据从一个网络依据路由规则转发到另一个网络:
(4)速率适配,利用缓存和流控协议进行适配:
(5)隔离网络,防止广播风暴,实现防火墙;
(6)报文分片和重组,超过接口的MTU报文被分片,到达目的地之后的报文被重组:
(7)备份、流量控制,如主备线路的切换和复杂流量控制等。
路由器工作在0S1七层协议中的第3层,即网络层。其主要任务是接收来源于一个网络接口的数据包,通常根据此数据包的目地址决定待转发的下一个地址(即下一跳地址)。路由器中维持着数据转发所需的路由表,所有数据包的发送或转发都通过查找路由表来实现。这个路由表可以静态配置,也可以通过动态路由协议自动生成。
 一般来说,路由协议可分为内部网关协议(IGP)和外部网关协议(EGP)两类。
 网络建设工程可分为网络规划、网络设计和网络实施三个环节。

传输介质

  • 双绞线:将多根铜线按规则缠绕在一起,能够减少干扰;分为无屏蔽双绞线UTP和屏蔽双绞线STP,都是由一对铜线簇组成。也即我们常说的网线;双绞线的传输距离在100m以内。
  • 无屏蔽双绞线UTP:价格低,安装简单,但可靠性相对较低,分为CAT3(3类UTP,速率为10Mbps)、CAT4(4类UTP,与3类差不多,无应用)、CAT5(5类UTP,速率为100Mbps,用于快速以太网)、CAT5E(超5类UTP,速率为1000Mbps)、CAT6(6类UTP,用来替代CAT5E,速率也是1000Mbps)。
  • 屏蔽双绞线STP:比之UTP增加了一层屏蔽层,可以有效的提高可靠性,但对应的价格高,安装麻烦,一般用于对传输可靠性要求很高的场合。
  • 光纤:由纤芯和包层组成,传输的光信号在纤芯中传输,然而从PC端出来的信号都是电信号,要经过光纤传输的话,就必须将电信号转换为光信号。
  • 多模光纤MMF:纤芯半径较大,因此可以同时传输多种不同的信号,光信号在光纤中以全反射的形式传输,采用发光二极管LED为光源,成本低,但是传输的效率和可靠性都较低,适合于短距离传输,其传输距离与传输速率相关,速率为100Mbps时为2KM,速率为1000Mbps时为550m。
  • 单模光纤SMF:纤芯半径很小,一般只能传输一种信号,采用激光二极管LD作为光源,并且只支持激光信号的传播,同样是以全反射形式传播,只不过反射角很大,看起来像一条直线,成本高,但是传输距离远,可靠性高。传输距离可达5KM。

通信方式和交换方式

通信方向:数据通信是指发送方发送数据到接收方,这个传输过程可以分类如下:
单工:只能由设备A发给设备B,即数据流只能单向流动。
半双工:设备A和设备B可以互相通信,但是同一时刻数据流只能单向流动。
全双工:设备A和设备B在任意时刻都能互相通信。

同步方式
  • 异步传输:发送方每发送一个字符,需要约定一个起始位和停止位插入到字符的起始和结尾处,这样当接收方接收到该字符时能够识别,但是这样会造成资源浪费,传输效率降低。
  • 同步传输:以数据块为单位进行传输,当发送方要发送数据时,先发送一个同步帧,接收方收到后做好接收准备,开始接收数据块,结束后又会有结束帧确认,这样一次传输一个数据块,效率高。
  • 串行传输:只有一根数据线,数据只能1bit挨个排队传送,适合低速设备、远距离的传送,一般用于广域网中。
  • 并行传输:有多根数据线,可以同时传输多个bit数据,适合高速设备的传送,常用语计算机内部各硬件模块之间。
交换方式
  • 电路交换:通信一方进行呼叫,另一方接收后,在二者之间会建立一个专用电路,特点为面向连接、实时性高、链路利用率低,一般用于语音视频通信。
  • 报文交换:以报文为单位,存储转发模式,接收到数据后先存储,进行差错校验,没有错误则转发,有错误则丢弃,因此会有延时,但可靠性高,是面向无连接的。
  • 分组交换:以分组为单位,也是存储转发模式,因为分组的长度比报文小,所以时延小于报文交换,又可分为三种方式:
    (1)数据报:是现在主流的交换方式,各个分组携带地址信息,自由的选择不同的路由路径传送到接收方,接收方接收到分组后再根据地址信息重新组装成原数据,是面向无连接的,但是不可靠的。
    (2)虚电路:发送方发送一个分组,接收方收到后二者之间就建立了一个虚拟的通信线路,二者之
    间的分组数据交互都通过这条线路传送,在空闲的时候这条线路也可以传输其他数据,是面向连接的,可靠的。
    (3)信元交换异步传输模式ATM采用的交换方式,本质是按照虚电路方式进行转发,只不过信元是固定长度的分组,共53B,其中5B为头部,48B为数据域,也是面向连接的,可靠的。

IP地址

 机器中存放的IP地址是32位的二进制代码,每隔8位插入一个空格,可提高可读性,为了便于理解和设置,一般会采用点分十进制方法来表示:将32位二进制代码每8位二进制转换成十进制,就变成了4个十进制数,而后在每个十进制数间隔中插入.,如下所示,最终为128.11.3.31:
在这里插入图片描述
 因为每个十进制数都是由8个二进制数转换而来,因此每个十进制数的取值范围为0-255(掌握二进制转十进制的快速计算方法,牢记2的幂指数值,实现快速转换)

IP地址分类

 分类IP地址:IP地址分四段,每段八位,共32位二进制数组成。
 在逻辑上,这32位IP地址分为网络号和主机号,依据网络号位数的不同,可以将IP地址分为以下几类:
在这里插入图片描述

子网划分

子网划分:一般公司在申请网络时,会直接获得一个范围很大的网络,如一个B类地址,因为主机数之间相差的太大了,不利于分配,我们一般采用子网划分的方法来划分网络,即自定义网络号位数,就能自定义主机号位数,就能根据主机个数来划分出最适合的方案,不会造成资源的浪费
 因此就有子网的概念,一般的IP地址按标准划分为ABC类后,可以进行再一步的划分,将主机号拿出几位作为子网号,就可以划分出多个子网,此时IP地址组成为:网络号+子网号+主机号
网络号和子网号都为1,主机号都为0,这样的地址为子网掩码
 要注意的是:子网号可以为全0和全1,主机号不能为全0或全1,因此,主机数需要-2,而子网数不用。
 还可以聚合网络为超网,就是划分子网的逆过程,将网络号取出几位作为主机号,此时,这个网络内的主机数量就变多了,成为一个更大的网络。

IPV6

 主要是为了解决IPv4地址数不够用的情况而提出的设计方案,IPv6具有以下特性:

  • Pv6地址长度为128位,地址空间增大了2^96倍;
  • 灵活的IP报文头部格式,使用一系列固定格式的扩展头部取代了IPv4中可变长度的选项字段。IPv6中选项部分的出现方式也有所变化,使路由器可以简单撸过选项而不做任何处理,加快了报文处理速度;
  • IPv6简化了报文头部格式,加快报文转发,提高了吞吐量;
  • 提高安全性,身份认证和隐私权是IPv6的关键特性;
  • 支持更多的服务类型;
  • 允许协议继续演变,增加新的功能,使之适应未来技术的发展。
     IPv4和IPv6的过渡期间,主要采用三种基本技术:
    (1)双协议栈:主机同时运行IPv4和IPv6两套协议栈,同时支持两套协议,一般来说IPv4和IPv6地址之间存在某种转换关系,如IPv6的低32位可以直接转换为IPv4地址,实现互相通信。
    (2)隧道技术:这种机制用来在IPv4网络之上建立一条能够传输IPv6数据报的隧道,例如可以将IPv6数据报当做IPv4数据报的数据部分加以封装,只需要加一个IPv4的首部,就能在IPv4网络中传输IPv6报
    文。
    (3)翻译技术:利用一台专门的翻译设备(如转换网关),在纯IPv4和纯IPv6网络之间转换IP报头的地址,同时根据协议不同对分组做相应的语义翻译,从而使纯IPv4和纯IPv6站点之间能够透明通信。

其他考点

  • 网络地址翻译NAT:公司内有很多电脑,在公司局域网内可以互联通信,但是要访问外部因特网时,只提供固定的少量IP地址能够访问因特网,将公司所有电脑这个大的地址集合映射到能够访问因特网的少量IP地址集合的过程就称为NAT。很明显,使用了NAT后,一个公司只有少量固定IP地址可以上网,大大减少了IP地址的使用量。
  • 默认网关:一台主机可以有多个网关。默认网关的意思是一台主机如果找不到可用的网关,就把数据包发给默认指定的网关,由这个网关来处理数据包。现在主机使用的网关,一般指的是默认网关。默认网关的IP地址必须与本机IP地址在同一个网段内,即同网络号。
  • 虚拟局域网VLAN:是一组逻辑上的设备和用户,这些设备和用户并不受物理位置的限制,可以根据功能、部门及应用等因素将它们组织起来,相互之间的通信就好像它们在同一个网段中一样。VLAN工作在OSI参考模型的第2层和第3层,一个VLAN就是一个广播域,VLAN之间的通信是通过第3层的路由器来完成的。
  • 与传统的局域网技术相比较,VLAN技术更加灵活,它具有以下优点:网络设备的移动、添加和修改的管理开销减少;可以控制广播活动;可提高网络的安全性。
  • 虚拟专用网VPN:是在公用网络上建立专用网络的技术。其之所以称为虚拟网,主要是因为整个VPN网络的任意两个节点之间的连接并没有传统专网所需的端到端的物理链路,而是架构在公用网络服务商所提供的网络平台,如Internet、ATM(异步传输模式〉FrameRelay(帧中继)等之上的逻辑网络,用户数据在逻辑链路中传输。
  • PPP:安全认证介绍:PPP的NCP可以承载多种协议的三层数据包。PPP使用LCP控制多种链路的参数(建立、认证、压缩、回拨)。
  • PPP的认证类型:pap认证是通过二次握手建立认证(明文不加密),chap挑战握手认证协议,通过三次握手建立认证(密文采用MD5加密)。PPP的双向验证,采用的是chap的主验证风格。PPP的加固验证,采用的是两种(pap,chap)验证同时使用
  • 冲突域和广播域:路由器可以阻断广播域和冲突域,交换机只能阻断冲突域,因此一个路由器下可以划分多个广播域和多个冲突域;一个交换机下整体是一个广播域,但可以划分多个冲突域;而物理层设备集线器下整体作为一个冲突域和一个广播域。

六 系统安全

信息安全基础知识

信息安全包括5个基本要素:机密性、完整性、可用性、可控性与可审查性
(1)机密性:确保信息不暴露给未授权的实体或进程。
(2)完整性:只有得到允许的人才能修改数据,井且能够判别出数据是否己被篡改
(3)可用性:得到授权的实体在需要时可访问数据,即攻击者不能占用所有的资源而阻碍授权
者的工作。
(4)可控性:可以控制授权范围内的信息流向及行为方式
(5)可审查性:对出现的信息安全问题提供调查的依据和手段

信息安全的范围包括:设备安全、数据安全、内容安全和行为安全
(1)信息系统设备的安全是信息系统安全的首要问题,是信息系统安全的物质基础,它包括3个方面:设备的稳定性、可靠性、可用性。
(2)数据安全即采取措施确保数据免受未授权的泄露、篡改和毁坏,包括3个方面:数据的秘密性、完整性、可用性。
(3)内容安全是信息安全在政治、法律、道德层次上的要求,包括3个方面:信息内容政治上健康、符合国家法律法规、符合道德规范。
(4)信息系统的服务功能是指最终通过行为提供给用户,确保信息系统的行为安全,才能最终确保系统的信息安全。行为安全的特性包括:行为的秘密性、完整性、可控性。

信息的存储安全包括信息使用的安全、系统安全监控、计算机病毒防治、数据的加密和防止非法
的攻击
等。
(1)信息使用的安全。包括用户的标识与验证、用户存取权限限制。
(2)系统安全监控。系统必须建立一套安全监控系统,全面监控系统的活动,并随时检查系统的使用情况,一旦有非法入侵者进入系统,能及时发现并采取相应措施,确定和填补安全及保密的漏洞。还应当建立完善的审计系统和日志管理系统,利用日志和审计功能对系统进行安全监控。
(3)计算机网络服务器必须加装网络病毒自动检测系统,以保护网络系统的安全,防范计算机病毒的侵袭,并且必须定期更新网络病毒检测系统。

网络安全
(1)网络安全隐患体现在:物理安全性、软件安全漏洞、不兼容使用安全漏洞、选择合适的安全哲理。
(2)网络安全威胁:非授权的访问、信息泄露或丢失、破坏数据完整性、拒绝服务攻击、利用网络传播病毒。
(3)安全措施的目标:访问控制、认证、完整性、审计、保密。

信息安全系统的组成框架

技术体系:从实现技术上来看,信息安全系统涉及以下技术:
(1)基础安全设备包括密码芯片、加密卡、身份识别卡等,此外还涵盖运用到物理安全的物理环境保障技术,建筑物、机房条件及硬件设备条件满足信息系统的机械防护安全,通过对电力供应设备以及信息系统组件的抗电磁干扰和电磁泄漏性能的选择性措施达到相应的安全目的。
(2)计算机网络安全信息在网络传输过程中的安全防范,用于防止和监控未经授权破坏、更改和盗取数据的行为。通常涉及物理隔离,防火墙及访问控制,,加密传输、认证、数字签名、摘要,隧道及VPN技术,病毒防范及上网行为管理,安全审计等实现技术。
(3)操作系统安全是指操作系统的无错误配置、无漏洞、无后门、无特洛伊木马等,能防止非法用户对计算机资源的非法存取,一般用来表达对操作系统的安全需求。操作系统的安全机制包括标识与鉴别机制、访问控制机制、最小特权管理、可信通路机制、运行保障机制、存储保护机制、文件保护机制、安全审计机制,等等。
(4)数据库安全可粗略划分为数据库管理系统安全和数据库应用系统安全两个部分,主要涉及物理数据库的完整性、逻辑数据库的完整性、元素安全性、可审计性、访问控制、身份认证、可用性、推理控制、多级保护以及消除隐通道等相关技术。
(5)终端安全设备从电信网终端设备的角度分为电话密码机、传真密码机、异步数据密码机等。

信息安全技术

加密技术

一个密码系统,通常简称为密码体制(Cryptosystem),由五部分组成:
(1)明文空间M,它是全体明文的集合。
(2)密文空间c,它是全体密文的集合。
(3)密钥空间K,它是全体密钥的集合。其中每一个密钥K均由加密密钥Ke和解密密钥Kd 组成,即K=< Ke,Kd>。
(4)加密算法E,它是一组由M至C的加密变换。
(5)解密算法D,它是一组由C到M的解密变换。
对于明文空间M中的每一个明文M,加密算法E在密钥Ke的控制下将明文M 加密成密文C:C=E (M, Ke)
而解密算法D在密钥Kd的控制下将密文C解密出同一明文M:M=D (C, Kd) =D (E (M, Ke),Kd)
在这里插入图片描述

对称加密技术

数据的加密和解密的密钥(密码)是相同的,属于不公开密钥加密算法。其缺点是加密强度不高(因为密钥位数少),且密钥分发困难(因为密钥还需要传输给接收方,也要考虑保密性等问题)。优点是加密速度快,适合加密大数据。
 常见的对称密钥加密算法如下:
DES:替换+移位、56位密钥、64位数据块、速度快,密钥易产生。
3DES:三重DES,两个56位密钥K1、K2。
 加密:K1加密->K2解密->K1加密。
 解密:K1解密->K2加密->K1解密
AES:是美国联邦政府采用的一种区块加密标准,这个标准用来替代原先的DES。
对其的要求是“至少像3DES一样安全”。
RC-5:RSA数据安全公司的很多产品都使用了RC-5。
IDEA:128位密钥,64位数据块,比DES的加密性好,对计算机功能要求相对低。

非对称加密技术

 数据的加密和解密的密钥是不同的,分为公钥和私钥。是公开密钥加密算法。其缺点是加密速度慢。优点是安全性高,不容易破解
 非对称技术的原理是:发送者发送数据时,使用接收者的公钥作加密密钥,私钥作解密密钥,这样只有接收者才能解密密文得到明文。安全性更高,因为无需传输密钥。但无法保证完整性
 常见的非对称加密算法如下:
RSA:512位(或1024位)密钥,计算机量极大,难破解。
Elgamal、ECC(椭圆曲线算法)、背包算法、Rabin、D-H等。

数字信封

 相比较可知,对称加密算法密钥一般只有56位,因此加密过程简单,适合加密大数据,也因此加密强度不高;而非对称加密算法密钥有1024位,相应的解密计算量庞大,难以破解,却不适合加密大数据,一般用来加密对称算法的密钥,这样,就将两个技术组合使用了,这也是数字信封的原理
数字信封原理信是对称加密的密钥,数字信封就是对此密钥进行非对称加密,具体过程:发送方将数据用对称密钥加密传输,而将对称密钥用接收方公钥加密发送给对方。接收方收到数字信封,用自己的私钥解密信封,取出对称密钥解密得原文。
 数字信封运用了对称加密技术和非对称加密技术,本质是使用对称密钥加密数据,非对称密钥加密对称密钥,解决了对称密钥的传输问题

信息摘要

 所谓信息摘要,就是一段数据的特征信息,当数据发生了改变,信息摘要也会发生改变,发送方会将数据和信息摘要一起传给接收方,接收方会根据接收到的数据重新生成一个信息摘要,若此摘要和接收到的摘要相同,则说明数据正确。信息摘要是由哈希函数生成的
 信息摘要的特点:不算数据多长,都会产生固定长度的信息摘要;任何不同的输入数据,都会产生不同的信息摘要;单向性,即只能由数据生成信息摘要,不能由信息摘要还原数据。
 信息摘要算法:MD5(产生128位的输出)、SHA-1(安全散列算法,产生160位的输出,安全性更高)。

数字签名

 数字签名:唯一标识一个发送方
发送者发送数据时,使用发送者的私钥进行加密,接收者收到数据后,只能使用发送者的公钥进行解密,这样就能唯一确定发送方,这也是数字签名的过程。但无法保证机密性。
公钥基础设施PKI:是以不对称密钥加密技术为基础,以数据机密性、完整性、身份认证和行为不可抵赖性为安全目的,来实施和提供安全服务的具有普适性的安全基础设施。

  1. 数字证书:一个数据结构,是一种由一个可信任的权威机构签署的信息集合。在不同的应用中有不同的证书。如X.509证书必须包含下列信息:(1)版本号(2)序列号(3)签名算法标识符(4)认证机构(5)有效期限(6)主题信息(7)认证机构的数字签名(8)公钥信息。
    公钥证书主要用于确保公钥及其与用户绑定关系的安全。这个公钥就是证书所标识的那个主体的合法的公钥。任何一个用户只要知道签证机构的公钥,就能检查对证书的签名的合法性。如果检查正确,那么用户就可以相信那个证书所携带的公钥是真实的,而且这个公钥就是证书所标识的那个主体的合法的公钥。例如驾照。
  2. 签证机构CA:负责签发证书、管理和撤销证书。是所有注册用户所信赖的权威机构,CA在给用户签发证书时要加上自己的数字签名,以保证证书信息的真实性。任何机构可以用CA的公钥来验证该证书的合法性

信息安全的抗攻击技术

 为对抗攻击者的攻击,密钥生成需要考虑3个方面的因素:增大密钥空间、选择强钥(复杂的)、密钥
的随机性(使用随机数)

 拒绝服务攻击有许多种,网络的内外部用户都可以发动这种攻击。内部用户可以通过长时间占用系统的内存、CPU处理时间使其他用户不能及时得到这些资源,而引起拒绝服务攻击;外部黑客也可以通过占用网络连接使其他用户得不到网络服务。
 外部用户针对网络连接发动拒绝服务攻击主要有以下几种模式:消耗资源、破坏或更改配置信息、物理破坏或改变网络部件、利用服务程序中的处理错误使服务失效
 分布式拒绝服务DDoS攻击是传统DoS攻击的发展,攻击者首先侵入并控制一些计算机,然后控制这些计算机同时向一个特定的目标发起拒绝服务攻击。克服了传统DOS受网络资源的限制和隐蔽性两大缺点。
 拒绝服务攻击的防御方式
(1)加强对数据包的特征识别,攻击者发送的数据包中是有一些特征字符串。通过搜寻这些特征字符串,就可以确定攻击服务器和攻击者的位置。
(2)设置防火墙监视本地主机端口的使用情况。如果发现端口处于监听状态,则系统很可能受到攻击。
(3)对通信数据量进行统计也可获得有关攻击系统的位置和数量信息。在攻击时,攻击数据的来源地址会发出超出正常极限的数据量。
(4)尽可能的修正己经发现的问题和系统漏洞
 ARP欺骗
 正常ARP原理:如图所示,主机A想知道局域网内主机B的MAC地址,那么主机A就广播发送ARP请求分组,局域网内主机都会收到,但只有B收到解析后知道是请求自己的MAC地址,所以只有B会返回单播的响应分组,告诉A自己的MAC地址。A收到响应分组后,会建立一个B的IP地址和MAC地址映射,这个映射是动态存在的,如果一定时间AB不再通信,那么就会清空这个地址映射,下次如果还要通信,则重复这个过程。
 ARP欺骗原理:上述过程主机A是不管其有没有发送过请求广播分组的,而是只要收到了返回的分组信息,就会刷新IP地址和MAC地址的映射关系,这样就存在安全隐患,假设有主机C,模拟返回分组格式,构造正确的IP地址和自己的MAC地址映射,A收到后也会刷新映射关系,那么当A再次向B发送信息时,实际就发送到了C的MAC地址,数据就被C监听到了。
 ARP欺骗的防范措施:
(1)在winxp下输入命令:arp-s gate-way-ip gate-way-mac 固化arp表,阻止arp 欺骗。
(2)使用ARP服务器。通过该服务器查找自己的ARP转换表来响应其他机器的ARP广播。确保这台ARP服务器不被黑。
(3)采用双向绑定的方法解决并且防止ARP欺骗。
(4)ARP防护软件一一ARPGuard。通过系统底层核心驱动,无须安装其他任何第三方软件(如WinPcap),以服务及进程并存的形式随系统启动并运行,不占用计算机系统资源。无需对计算机进行IP地址及MAC地址绑定,从而避免了大量且无效的工作量。也不用担心计算机会在重启后新建ARP缓存列表,因为此软件是以服务与进程相结合的形式存在于计算机中,当计算机重启后软件的防护功能也会随操作系统自动启动并工作。
 DNS欺骗首先是冒充域名服务器,然后把查询的IP地址设为攻击者的IP地址,这样的话,用户上网就只能看到攻击者的主页,而不是用户想要取得的网站的主页了,这就是DNS欺骗的基本原理。也即改掉了域名和IP地址的对应关系。黑客是通过冒充DNS服务器回复查询IP的,如下图所示:
在这里插入图片描述

(1)被动监听检测:通过旁路监听的方式,捕获所有DNS请求和应答数据包,并为其建立一个请求应答映射表。如果在一定的时间间隔内,一个请求对应两个或两个以上结果不同的应答包,则怀疑受到了DNS欺骗攻击。
(2)虚假报文探测:采用主动发送探测包的手段来检测网络内是否存在DNS欺骗攻击者。如果向一个非DNS服务器发送请求包,正常来说不会收到任何应答,如果收到了应答包,则说明受到了攻击。
(3)交叉检查查询:在客户端收到DNS应答包之后,向DNS服务器反向查询应答包中返回的IP地址所对应的DNS名字,如果二者一致说明没有受到攻击,否则说明被欺骗。

网络安全技术

 防火墙是在内部网络和外部因特网之间增加的一道安全防护措施,分为网络级防火墙和应用级防火墙。
网络级防火墙层次低,但是效率高,因为其使用包过滤和状态监测手段,一般只检验网络包外在(起始地址、状态)属性是否异常,若异常,则过滤掉,不与内网通信,因此对应用和用户是透明的。
 但是这样的问题是,如果遇到伪装的危险数据包就没办法过滤,此时,就要依靠应用级防火墙层次高,效率低,因为应用级防火墙会将网络包拆开,具体检查里面的数据是否有问题,会消耗大量时间,造成效率低下,但是安全强度高。

网络攻击和威胁

在这里插入图片描述

网络安全协议

 物理层主要使用物理手段,隔离、屏蔽物理设备等,其它层都是靠协议来保证传输的安全,具体如下图所示:
在这里插入图片描述

  • SSL协议:安全套接字协议,被设计为加强Web安全传输(HTTP/HTTPS/)的协议,安全性高,和HTTP结合之后,形成HTTPS安全协议,端口号为443.
  • SSH协议:安全外壳协议,被设计为加强TeInet/FTP安全的传输协议
  • SET协议:安全电子交易协议主要应用于B2C模式(电子商务)中保障支付信息的安全性。SET协议本身比较复杂,设计比较严格,安全性高,它能保证信息传输的机密性、真实性,完整性和不可否认性。SET协议是PKI框架下的一个典型实现,同时也在不断升级和完善,如SET2.0将支持借记卡电子交易。
  • Kerberos协议:是一种网络身份认证协议,该协议的基础是基于信任第三方,它提供了在开放型网络中进行身份认证的方法,认证实体可以是用户也可以是用户服务。这种认证不依赖宿主机的操作系统或计算机的IP地址,不需要保证网络上所有计算机的物理安全性,并且假定数据包在传输中可被随机窃取和篡改。
  • PGP协议:使用RSA公钥证书进行身份认证,使用==IDEA(128位密钥)==进行数据加密,使用MD5进行数据完性验证。
    发送方A有三个密钥:A的私钥、B的公钥、A生成的一次性对称密钥;
    接收方B有两个密钥:B的私钥、A的公钥。

七 软件工程

软件工程概述

软件开发生命周期
软件定义时期:包括可行性研究和详细需求分析过程,任务是确定软件开发工程必须完成的总目标,具体可分成问题定义、可行性研究、需求分析等。
软件开发时期:就是软件的设计与实现,可分成概要设计、详细设计、编码、测试等。
软件运行和维护:就是把软件产品移交给用户使用。

 软件系统的文档可以分为用户文档和系统文档两类,用户文档主要描述系统功能和使用方法,并不关
系这些功能是怎样实现的;系统文档描述系统设计、实现和测试等各方面的内容。

软件工程过程是指为获得软件产品包括以下4个方面活动:
 (1)P(Plan)一一软件规格说明。规定软件的功能及其运行时的限制。
 (2)D(Do)一一软件开发。开发出满足规格说明的软件。
 (3)C(Check)一一软件确认。确认开发的软件能够满足用户的需求。
 (4)A(Action)一一软件演进。软件在运行过程中不断改进以满足客户新的需求。
软件系统工具通常可以按软件过程活动将软件工具分为:
软件开发工具:需求分析工具、设计工具、编码与排错工具、测试工具等。
软件维护工具:版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再工程工具。
软件管理和软件支持工具:项目管理工具、配置管理工具、软件评价工具、软件开发工具的评价和选择。

软件设计四个活动:数据设计、架构(体系结构)设计、人机界面(接口)设计和过程设计

能力成熟度模型CMM

能力等级特点关键过程区域
初始级(Initial)软件过程的特点是杂乱无章有时甚至很混乱,几乎没有明确定义的步骤,项目的成功完全依赖个人的努力和英雄式核心人物的作用。
可重复级(Repeatable)建立了基本的项目管理过程和实践来跟踪项目费用、进度和功能特性,有必要的过程准则来重复以前在同类项目中的成功。软件配置管理,软件质量保证,软件项目策划,软件需求管理
已定义级(Defined)管理和工程两方面的软件过程已经文档化、标准化,并综合成整个软件开发组织的标准软件过程。所有项目都采用根据实际情况修改后得到的标准软件过程来发和维护软件。同行评审,组间协调,软件产品工程,集成软件管理
已管理级(Managed)制定了软件过程和产品质量的详细度量标准。对软件过程和产品质量有定量的理解和控制。软件质量管理和定量过程管理
优化级(Optimized)加强了定量分析,通过来自过程质量反馈和来自新观念、新技术的反馈使过程能不断持续地改进。过程更改管理,技术改革管理和缺陷预防

能力成熟度模型集成CMMI

 是若干过程模型的综合和改进,不仅仅软件,而是支持多个工程学科和领域的、系统的、一致的过程改进框架,能适应现代工程的特点和需要,能提高过程的质量和工作效率。
CMMI两种表示方法:
(1)阶段式模型:类似于CMM,它关注组织的成熟度,五个成熟度模型如下:

能力等级特点关键过程区域
初始级过程不可预测且缺乏控制
已管理级过程为项目服务需求管理、项目计划、配置管理、项目监督与控制、供应商合同管理、度量和分析、过程和产品质量保证
已定义级过程为组织服务需求开发、技术解决方案、产品集成、验证、确认组织级过程焦点、组织级过程定义、组织级培训、集成项目管理、风险管理、集成化的团队、决策分析和解决方案、组织级集成环境
定量管理过程已度量和控制组织过程性能,定量项目管理
优化级集中于过程改进和优化组织及改革与实施,因果分析和解决方案

(2)连续式模型:关注每个过程域的能力,一个组织对不同的过程域可以达到不同的过程域能力等级。

软件过程模型

瀑布模型

 瀑布模型(SDLC):瀑布模型是一个经典的软件生命周期模型,一般将软件开发分为:可行性分析(计划)、需求分析、软件设计(概要设计、详细设计)、编码(含单元测试)、测试、运行维护等几个阶段。
 瀑布模型特点
(1)从上一项开发活动接受该项活动的工作对象作为输入
(2)利用这一输入,实施该项活动应完成的工作内容
(3)给出该项活动的工作成果,作为输出传给下一项开发活动。
(4)对该项活动的实施工作成果进行评审。若其工作成果得到确认,则继续进行下一项开发活动;否则返回前一项,甚至更前项的活动。尽量减少多个阶段间的反复。以相对来说较小的费用来开发软件

螺旋模型

 螺旋模型是一个演化软件过程模型将原型实现的迭代特征与线性顺序瀑布)模型中控制的和系统化的方面结合起来。在螺旋模型中,软件开发是一系列的增量发布
 开发过程具有周期性重复的螺旋线状。四个象限分别标志每个周期所划分的四阶段:制订计划、风险分析、实施工程和客户评估。螺旋模型强调了风险分析,特别适用于庞大而复杂的、高风险的系统

原型模型

 原型化模型第一步就是创建一个快速原型,能够满足项目干系人与未来的用户可以与原型进行交互,再通过与相关千系人进行充分的讨论和分析,最终弄清楚当前系统的需求,进行了充分的了解之后,在原型的基础上开发出用户满意的产品。
 原型法认为在很难一下子全面准确地提出用户需求的情况下,原型应当具备的特点如下。
(1)实际可行
(2)具有最终系统的基本特征
(3)构造方便、快速,造价低。原型法的特点在于原型法对用户的需求是动态响应、逐步纳入的。

增量模型

 增量模型:首先开发核心模块功能,而后与用户确认,之后再开发次核心模块的功能,即每次开发一部分功能,并与用户需求确认,最终完成项目开发,优先级最高的服务最先交付
 特点:但由于并不是从系统整体角度规划各个模块,因此不利于模块划分。难点在于如何将客户需求划分为多个增量。与原型不用的是增量模型的每一次增量版本都可作为独立可操作的作品,而原型的构造一般是为了演示。
在这里插入图片描述

喷泉模型

 喷泉模型:是一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。使开发过程具有迭代性和无间隙性。
 基于构件的开发模型CBSD:利用预先包装的构件来构造应用系统。构件可以是组织内部开发的构件,也可以是商品化成品软件构件。特点是增强了复用性,在系统开发过程中,会构建一个构件库,供其他系统复用,因此可以提高可靠性,节省时间和成本。
 形式化方法模型:建立在严格数学基础上的一种软件开发方法,主要活动是生成计算机软件形式化的数学规格说明。

敏捷模型

 开发宣言:个体和交互胜过过程和工具、可以工作的软件胜过面面俱到的文档、客户合作胜过合同谈判、响应变化胜过遵循计划
在这里插入图片描述
敏捷方法区别于其他方法的两个特点:
(1)是“适应性”而非“预设性”。
(2)是"面向人的”而非”面向过程的”。
敏捷方法的核心思想:
(1)敏捷方法是适应型,而非可预测型。拥抱变化,适应变化。
(2)敏捷方法是以人为本,而非以过程为本。发挥人的特性。
(3)迭代增量式的开发过程。以原型开发思想为基础,采用法代增量式开发,发行版本小型化。

主要敏捷方法

(1)极限编程(XP)。基础和价值观是交流、朴素、反馈和勇气,即任何一个软件项目都可以从4个方面入手进行改善:加强交流,从简单做起,寻求反馈勇于实事求是
 XP是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的小周期;通过积极的交流、反馈以及其他一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程。
 XP提倡测试先行,为了将以后出现bug的几率降到最低。
(2)水晶系列方法。与XP方法一样,都有以人为中心的理念,但在实践上有所不同。其目的是发展一种提倡“机动性的”方法,包含具有共性的核心元素,每个都含有独特的角色、过程模式、工作产品和实践
(3)并列争球法(Scrum)。是一种迭代的增量化过程,把=每段时间(如30天)一次的迭代称为一个”冲刺”(Sprint),并按需求的优先级别来实现产品,多个自组织和自治的小组并行地递增实现产品。
(4)特性驱动开发方法(FDD)。是一个迭代的开发模型。认为有效的软件开发需要3个要素:人、过程和技术。有5个核心过程:开发整体对象模型、构造特征列表、计划特征开发、特征设计和特征构建

统一过程模型(RUP)

 RUP描述了如何有效地利用商业的、可靠的方法开发和部署软件,是一种重量级过程。RUP类似一个在线的指导者,它可以为所有方面和层次的程序开发提供指导方针、模版以及事例支持
RUP软件开发生命周期是一个二维的软件开发模型,RUP中有9个核心工作流,如下:
(1)业务建模:理解待开发系统所在的机构及其商业运作,确保所有参与人员对待开发系统所在的机构有共同的认识,评估待开发系统对所在机构的影响。
(2)需求:定义系统功能及用户界面,使客户知道系统的功能,使开发人员理解系统的需求,为项目预算及计划提供基础。
(3)分析与设计:把需求分析的结果转化为分析与设计模型。
(4)实现:把设计模型转换为实现结果,对开发的代码做单元测试,将不同实现人员开发的模块集成为可执行系统。
(5)测试:检查各子系统之间的交互、集成,验证所有需求是否均被正确实现,对发现的软件质量上的缺陷进行归档,对软件质量提出改进建议。
(6)部署:打包、分发、安装软件,升级旧系统;培训用户及销售人员,并提供技术支持。
(7)配置与变更管理:跟踪并维护系统开发过程中产生的所有制品的完整性和一致性。
(8)项目管理:为软件开发项目提供计划、人员分配、执行、监控等方面的指导,为风险管理提供框架。
(9)环境:为软件开发机构提供软件开发环境,即提供过程管理和工具的支持。

RUP把软件开发生命周期划分为多个循环,每个循环生成产品的一个新的版本,每个循环依次由4个连续的阶段组成,每个阶段完成确定的任务。这4个阶段如下。
初始阶段:定义最终产品视图和业务模型,并确定系统范围。
细化阶段:设计及确定系统的体系结构,制订工作计划及资源要求。
构造阶段:构造产品并继续演进需求、体系结构、计划直至产品提交。
移交阶段:把产品提交给用户使用。
RUP中定义了如下一些核心概念,理解这些概念对于理解RUP很有帮助。
 角色:Who的问题。角色描述某个人或一个小组的行为与职责。RUP预先定义了很多角色,如体系结构师、设计人员、实现人员、测试员和配置管理人员等,并对每一个角色的工作和职责都做了详尽的说明。
 活动:How的问题。活动是一个有明确目的的独立工作单元。
 制品:What的问题。制品是活动生成、创建或修改的一段信息。
 工作流:When的问题。工作流描述了一个有意义的连续的活动序列,每个工作流产生一些有价值的产品,并显示了角色之间的关系。

逆向工程

 软件复用是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费。软件复用是提高软件生产力和质量的一种重要技术。早期的软件复用主要是代码级复用,被复用的知识专指程序,后来扩大到包括领域知识、开发经验、设计决定、体系结构、需求、设计、代码和文档等一切有关方面。
 逆向工程:软件的逆向工程是分析程序,力图在比源代码更高抽象层次上建立程序的表示过程,逆向工程是设计的恢复过程。逆向工程的四个级别:
  实现级:包括程序的抽象语法树、符号表、过程的设计表示。
  结构级:包括反映程序分量之间相互依赖关系的信息,例如调用图、结构图、程序和数据结构。
  功能级:包括反映程序段功能及程序段之间关系的信息,例如数据和控制流模型。
  领域级:包括反映程序分量或程序诸实体与应用领域概念之间对应关系的信息,
例如E-R模型。
 其中,领域级抽象级别最高,完备性最低,实现级抽象级别最低,完备性最高。

 与逆向工程相关的概念有重构、设计恢复、再工程和正向工程
(1)重构是指在同一抽象级别上转换系统描述形式。
(2)设计恢复是指借助工具从已有程序中抽象出有关数据设计、总体结构设计和过程设计等方面的信息。
(3)再工程是指在逆向工程所获得信息的基础上,修改或重构已有的系统,产生系统的一个新版本。再工程是对现有系统的重新开发过程,包括逆向工程、新需求的考虑过程和正向工程三个步骤。它不仅能从已存在的程序中重新获得设计信息,而且还能使用这些信息来重构现有系统,以改进它的综合质量。在利用再工程重构现有系统的同时,一般会增加新的需求,包括增加新的功能和改善系统的性能。
(4)正向工程是指不仅从现有系统中恢复设计信息,而且使用该信息去改变或重构现有系统,以改善其整体质量。

软件需求

软件需求:是指用户对系统在功能、行为、性能、设计约束等方面的期望。是指用户解决问题或达到目标所需的条件或能力,是系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或能力,以及反映这些条件或能力的文档说明。
 分为需求开发需求管理两大过程,如下所示:
在这里插入图片描述
业务需求:反映企业或客户对系统高层次的目标要求,通常来自项目投资人、客户、市场营销部门或产品策划部门。通过业务需求可以确定项目视图和范围。
用户需求:描述的是用户的具体目标,或用户要求系统必须能完成的任务。即描述了用户能使用系统来做什么。通常采取用户访谈和问卷调查等方式,对用户使用的场景进行整理,从而建立用户需求。
系统需求:从系统的角度来说明软件的需求,包括功能需求、非功能需求和设计约束等。
(1)功能需求:也称为行为需求,规定了开发人员必须在系统中实现的软件功能,用户利用这些功能来完成任务,满足业务需要。
(2)非功能需求:指系统必须具备的属性或品质,又可以细分为软件质量属性(如可维护性、可靠性、效率等)和其他非功能需求。
(3)设计约束:也称为限制条件或补充规约,通常是对系统的一些约束说明,例如必须采用国有自主知识产权的数据库系统,必须运行在UNIX操作系统之下等。

需求分析

 需求分析:一个好的需求应该具有无二义性、完整性、一致性、可测试性、确定性、可跟踪性、正确性、必要性等特性,因此,需要分析人员把杂乱无章的用户要求和期望转化为用户需求,这就是需求分析的工作。
 需求分析的任务
(1)绘制系统上下文范围关系图
(2)创建用户界面原型
(3)分析需求的可行性
(4)确定需求的优先级
(5)为需求建立模型
(6)创建数据字典
(7)使用QFD(质量功能部署)

结构化的需求分析

 结构化特点:自顶向下,逐步分解,面向数据
 三大模型:功能模型(数据流图)、行为模型(状态转换图)、数据模型(E-R图)以及数据字典
在这里插入图片描述

数据流图DFD

基本图形元素:外部实体,加工,数据存储,数据流
在这里插入图片描述
(1)数据流:由一组固定成分的数据组成,表示数据的流向。在DFD中,数据流的流向必须经过加工
(2)加工;描述了输入数据流到输出数据流之间的变换,数据流图中常见的三种错误如图所示:
  加工3.1.2有输入但是没有输出,称之为“黑洞”。
  加工3.1.3有输出但没有输入。称之为“奇迹”。
  加工3.1.1中输入不足以产生输出,我们称之为“灰洞”。
(3)数据存储:用来存储数据。
(4)外部实体(外部主体):是指存在于软件系统之外的人员或组织,它指出系统所需数据的发源地(源)和系统所产生的数据的归宿地(宿)。
在这里插入图片描述

需求定义

需求定义(软件需求规格说明书SRS)是需求开发活动的产物,编制该文档的目的是使项目干系人与开发团队对系统的初始规定有一个共同的理解,使之成为整个开发工作的基础。SRS是软件开发过程中最重要的文档之一,对于任何规模和性质的软件项目都不应该缺少。
 需求定义方法
(1)严格定义也称为预先定义,需求的严格定义建立在以下的基本假设之上:所有需求都能够被预先定义。开发人员与用户之间能够准确而清晰地交流。采用图形(或文字)可以充分体现最终系统。
(2)原型方法,迭代的循环型开发方式,需要注意的问题:并非所有的需求都能在系统开发前被准确地说明。项目干系人之间通常都存在交流上的困难,原型提供了克该服困难的一个手段。特点:需要实际的、可供用户参与的系统模型。有合适的系统开发环境。反复是完全需要和值得提倡的,需求一旦确定,就应遵从严格的方法。

需求验证

 需求验证:也称为需求确认,目的是与用户一起确认需求无误,对需求规格
 说明书SAS进行评审和测试,包括两个步骤:
  需求评审:正式评审和非正式评审。
  需求测试:设计概念测试用例。
 需求验证通过后,要请用户签字确认,作为验收标准之一,此时,这个需求规格说明书就是需求基线,不可以再随意更新,如果需要更改必须走需求变更流程。

需求管理

 定义需求基线:通过了评审的需求说明书就是需求基线,下次如果需要变更需求,就需要按照流程来一步步进行。需求的流程及状态如下图所示:
在这里插入图片描述

需求变更和风险

 主要关心需求变更过程中的需求风险管理,带有风险的做法有:无足够用户参与、忽略了用户分类、用户需求的不断增加、模棱两可的需求、不必要的特性、过于精简的SRS、不准确的估算
 变更产生的原因:外部环境的变化、需求和设计做的不够完整、新技术的出现、公司机构重组造成业务流程的变化
 变更控制委员会CCB:也称为配置控制委员会,其任务时对建议的配置项变更做出评价、审批,以及监督已经批准变更的实施。

处理流程设计

流程表示工具
程序流程图(Program FlowDiagram,PFD)用一些图框表示各种操作,它独立于任何一种程序设计语言,比较直观、清晰,易于学习掌握。任何复杂的程序流程图都应该由顺序、选择和循环结构组合或嵌套而成。
IPO图也是流程描述工具,用来描述构成软件系统的每个模块的输入、输出和数据加工
N-S图容易表示嵌套和层次关系,并具有强烈的结构化特征。但是当问题很复杂时,N-S图可能很大,因此不适合于复杂程序的设计
问题分析图(PAD)是一种支持结构化程序设计的图形工具。PAD具有清晰的逻辑结构、标准化的图形等优点,更重要的是,它引导设计人员使用结构化程序设计方法,从而提高程序的质量。

系统设计

 系统设计主要目的:为系统制定蓝图,在各种技术和实施方法中权衡利弊,精心设计,合理地使用各种资源,最终勾画出新系统的详细设计方法
 系统设计方法:结构化设计方法,面向对象设计方法
 系统设计的主要内容:概要设计、详细设计
 概要设计基本任务:又称为系统总体结构设计,是将系统的功能需求分配给软件模块,确定每个模块的功能和调用关系,形成软件的模块结构图,即系统结构图
 详细设计的基本任务:模块内详细算法设计、模块内数据结构设计、数据库的物理设计、其他设计(代码、输入/输出格式、用户界面)、编写详细设计说明书、评审。

 系统设计原则:保持模块的大小适中;尽可能减少调用的深度;多扇入,少扇出;单入口,单出口;模块的作用域应该在模块之内;功能应该是可预测的。

 系统设计基本原理:抽象化;自顶而下,逐步求精;信息隐蔽;模块独立(高内聚,低耦合)
衡量模块独立的标准有两个:耦合性和内聚性。内聚程度从低到高如下图所示
在这里插入图片描述
耦合程度从低到高如下图所示
在这里插入图片描述

软件测试

测试原则和方法

系统测试是为了发现错误而执行程序的过程,成功的测试是发现了至今尚未发现的错误的测试
测试原则:
(1)应尽早并不断的进行测试;
(2)测试工作应该避免由原开发软件的人或小组承担;
(3)在设计测试方案时,不仅要确定输入数据,而且要根据系统功能确定预期的输出结果;
(4)既包含有效、合理的测试用例,也包含不合理、失效的用例;
(5)检验程序是否做了该做的事,且是否做了不该做的事;
(6)严格按照测试计划进行;
(7)妥善保存测试计划和测试用例;
(8)测试用例可以重复使用或追加测试。

软件测试方法可分为静态测试和动态测试

  • 静态测试:指被测试程序不在机器上运行,而采用人工检测和计算机辅助静态分析的手段对程序进行检测,包括对文档的静态测试和对代码的静态测试。对文档的静态测试主要以检查单的形式进行,而对代码的静态测试,包括桌前检查、代码审查、代码走查的方式。使用这种方法能够有效地发现30%-70%的逻辑设计和编码错误。
  • 动态测试:指在计算机上实际运行程序进行软件测试,一般采用白盒测试和黑盒测试方法。
    黑盒测试法:功能性测试,不了解软件代码结构,根据功能设计用例,测试软件功能。
    白盒测试法:结构性测试,明确代码流程,根据代码逻辑设计用例,进行用例覆盖。
测试阶段

(1)单元测试:也称为模块测试,测试的对象是可独立编译或汇编的程序模块、软件构件或00软件中的类(统称为模块),测试依据是软件详细设计说明书
(2)集成测试:目的是检查模块之间,以及模块和已集成的软件之间的接口关系,并验证已集成的软件是否符合设计要求。测试依据是软件概要设计文档
(3)确认测试:主要用于验证软件的功能、性能和其他特性是否与用户需求一致。根据用户的参与程度,通常包括以下类型:
 内部确认测试:主要由软件开发组织内部按照SRS进行测试。
 Alpha测试:用户在开发环境下进行测试。
 Beta测试:用户在实际使用环境下进行测试,通过改测试后,产品才能交付用户。
 验收测试:针对SRS,在交付前以用户为主进行的测试。其测试对象为完整的、集成的计算机系统。验收测试的目的是,在真实的用户工作环境下,检验软件系统是否满足开发技术合同或SRS。验收测试的结论是用户确定是否接收该软件的主要依据。除应满足一般测试的准入条件外,在进行验收测试之前,应确认被测软件系统已通过系统测试。
(4)系统测试:测试对象是完整的、集成的计算机系统;测试的目的是在真实系统工作环境下,验证完成的软件配置项能否和系统正确连接,并满足系统/子系统设计文档和软件开发合同规定的要求。测试依据是用户需求或开发合同。主要内容包括功能测试、健壮性测试、性能测试、用户界面测试、安全性测试、安装与反安装测试等,其中,最重要的工作是进行功能测试与性能测试。功能测试主要采用黑盒测试方法;性能测试主要指标有响应时间、吞吐量、并发用户数和资源利用率等。
(5)配置项测试:测试对象是软件配置项,测试目的是检验软件配置项与SRS的一致性。测试的依据是SRS。在此之间,应确认被测软件配置项已通过单元测试和集成测试。
(6)回归测试:测试目的是测试软件变更之后,变更部分的正确性和对变更需求的符合性,以及软件原有的、正确的功能、性能和其他规定的要求的不损害性

测试用例的设计

黑盒测试用例:将程序看做一个黑盒子,只知道输入输出,不知道内部代码,由此设计出测试用例,分为下面几类:
等价类划分:把所有的数据按照某种特性进行归类,而后在每类的数据里选取一个即可。等价类测试用例的设计原则:设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止;设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。
边界值划分:将每类的边界值作为测试用例,边界值一般为范围的两端值以及在此范围之外的与此范围间隔最小的两个值,如年龄范围为0-150,边界值为0,150,-1,151四个。
 错误推测:没有固定的方法,凭经验而言,来推测有可能产生问题的地方,作为测试用例进行测试。
 因果图:由一个结果来反推原因的方法,具体结果具体分析,没有固定方法。

白盒测试用例:知道程序的代码逻辑,按照程序的代码语句,来设计覆盖代码分支的测试用例,覆盖级别从低至高分为下面几种:
语句覆盖SC:逻辑代码中的所有语句都要被执行一遍,覆盖层级最低,因为执行了所有的语句,不代表执行了所有的条件判断。
判定覆盖DC:逻辑代码中的所有判断语句的条件的真假分支都要覆盖一次
条件覆盖CC:针对每一个判断条件内的每一个独立条件都要执行一遍真和假
条件判定组合覆盖CDC同时满足判定覆盖和条件覆盖
路径覆盖:逻辑代码中的所有可行已经都覆盖了,覆盖层级更高

调试

 测试是发现错误,调试是找出错误的代码和原因
 调试需要确定错误的准确位置,确定问题的原因并设法改正;改正后要进行回归测试
 调试的方法有:蛮力法回溯法(从出错的地方开始,向回找)、原因排除法(找出所有可能的原因,逐一进行排除,具体包括演绎法、归纳法、二分法)。

软件度量

 软件的两种属性:外部属性指面向管理者和用户的属性,可直接测量,一般为性能指标。内部属性指软件产品本身的的属性,如可靠性等,只能间接测量。
McCabe度量法:又称为环路复杂度,假设有向图中有向边数为m,节点数为n,则此有向图的环路复杂度为m-n+2.
 注意m和n代表的含义不能混淆,可以用一个最简单的环路来做特殊值记忆此公式,另外,针对一个程序流程图,每一个分支边(连线)就是一条有向边,每一条语句(语句框)就是一个顶点。

系统转换

 系统转换是指新系统开发完毕,投入运行,取代现有系统的过程,需要考虑多方面的问题,以实现与老系统的交接,有以下三种转换计划:
直接转换:现有系统被新系统直接取代了,风险很大,适用于新系统不复杂,或者现有系统已经不能使用的情况。优点是节省成本。
并行转换:新系统和老系统并行工作一段时间,新系统经过试运行后再取代,若新系统在试运行过程中有问题,也不影响现有系统的运行,风险极小,在试运行过程中还可以比较新老系统的性能,适用于大型系统。缺点是耗费人力和时间资源,难以控制两个系统间的数据转换。
分段转换:分期分批逐步转换,是直接和并行转换的集合,将大型系统分为多个子系统,依次试运行每个子系统,成熟一个子系统,就转换一个子系统。同样适用于大型项目,只是更耗时,而且现有系统和新系统间混合使用,需要协调好接口等问题。
数据转换与迁移:将数据从旧数据库迁移到新数据库中。有三种方法:系统切换前通过工具迁移、系统切换前采用手工录入、系统切换后通过新系统生成。

系统维护

 系统的可维护性可以定义为维护人员理解、改正、改动和改进这个软件的难易程度,其评价指标如下:
(1)易分析性。软件产品诊断软件中的缺陷或失效原因或识别待修改部分的能力。
(2)易改变性。软件产品使指定的修改可以被实现的能力,实现包括编码、设计和文档的更改。
(3)稳定性。软件产品避免由于软件修改而造成意外结果的能力。
(4)易测试性。软件产品使已修改软件能被确认的能力。
(5)维护性的依从性。软件产品遵循与维护性相关的标准或约定的能力。
 系统维护包括硬件维护、软件维护和数据维护,其中软件维护类型如下:
正确性维护:·发现了bug而进行的修改。
适应性维护:由于外部环境发生了改变,被动进行的对软件的修改和升级。
完善性维护:基于用户主动对软件提出更多的需求,修改软件,增加更多的功能,使其比之前的软件功能、性能更高,更加完善。
预防性维护:对未来可能发生的bug进行预防性的修改。

净室软件工程

 净室软件工程是一种应用数学与统计学理论以经济的方式生产高质量软件的工程技术,力图通过严格的工程化的软件过程达到开发中的零缺陷或接近零缺陷。净室方法不是先制作一个产品,再去消除缺陷,而是要求在规约和设计中消除错误,然后以“净”的方式制作,可以降低软件开发中的风险,以合理的成本开发出高质量的软件。
 在净室软件工程背后的哲学是:通过在第1次正确地书写代码增量,并在测试前验证它们的正确性,来避免对成本很高的错误消除过程的依赖。它的过程模型是在代码增量积聚到系统的过程的同时,进行代码增量的统计质量验证。它甚至提倡开发者不需要进行单元测试,而是进行正确性验证和统计质量控制。
净室软件工程(CSE)的理论基础主要是函数理论和抽样理论
净室软件工程应用技术手段
1.统计过程控制下的增量式开发。
2.基于函数的规范与设计。
3. 正确性验证。CSE的核心
4.统计测试和软件认证。
净室软件工程在使用过程的一些缺点:
(1)CSE太理论化,需要更多的数学知识。其正确性验证的步骤比较困难且比较耗时。
(2)CSE开发小组不进行传统的模块测试,这是不现实的。
(3)CSE也会带有传统软件工程的一些弊端。

基于构件的软件工程

 基于构件的软件工程(CBSE)是一种基于分布对象技术、强调通过可复用构件设计与构造软件系统的软件复用途径。CBSE体现了“购买而不是重新构造”的哲学,将软件开发的重点从程序编写转移到了基于己有构件的组装。用于CBSE的构件应该具备以下特征。
(1)可组装型:对于可组装的构件,所有外部交互必须通过公开定义的接口进行。同时它还必须对自身信息的外访问。
(2)可部署性:软件必须是自包含的,必须能作为一个独立实体在提供其构件模型实现的构件平台上运行。构件总二进制形式,无须在部署前编译。
(3)文档化:构件必须是完全文档化的,用户根据文档来判断构件是否满足需求。
(4)独立性:构件应该是独立的,应该可以在无其他特殊构件的情况下进行组装和部署,如确实需要其他构件提供务,则应显示声明。
(5)标准化:构件标准化意味着在CBSE过程中使用的构件必须符合某种标准化的构件模型。构件模型定义了构实现、文档化以及开发的标准,其包含的模型要素为:
接口。构件通过构件接口来定义,构件模型规定应如何定义构件接口以及在接口定义中应该包含的要素,如操作名、参数以及异常等。
使用信息。为使构件远程分布和访问,必须给构件一个特定的、全局唯一的名字或句柄。构件元数据是构件本身相关的数据,比如构件的接口和属性信息。
部署。构件模型包括一个规格说明,指出应该如何打包构件使其部署成为一个独立的可执行实体。部署信息中包含有关包中内容的信息和它的二进制构成的信息。

 构件模型提供了一组被构件使用的通用服务,这种服务包括以下两种。
  平台服务,允许构件在分布式环境下通信和互操作。
  支持服务,这是很多构件需要的共性服务。例如,构件都需要的身份认证服务。
  中间件实现共性的构件服务,并提供这些服务的接口。
 CBSE过程是支持基于构件组装的软件开发过程,过程中的6个主要活动:系统需求概览、识别候选构件、根据发现的构件修改需求、体系结构设计、构件定制与适配、组装构件创建系统
 CBSE过程与传统软件开发过程不同点:
(1)CBSE早期需要完整的需求,以便尽可能多地识别出可复用的构件。
(2)在过程早期阶段根据可利用的构件来细化和修改需求。如果可利用的构件不能满足用户需求,就应该考虑由复用构件支持的相关需求。
(3)在系统体系结构设计完成后,会有一个进一步的对构件搜索及设计精化的活动。可能需要为某些构件寻找备用构件,或者修改构件以适合功能和架构的要求。
(4)开发就是将已经找到的构件集成在一起的组装过程。

八 系统架构设计

软件架构概述

 从需求分析到软件设计之间的过渡过程称为软件架构。只要软件架构设计好了,整个软件就不会出现坍塌性的错误,即不会崩溃。
 架构设计就是需求分配,将满足需求的职责分配到组件上
 软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由构件的描述、构件的相互作用(连接件)、指导构件集成的模式以及这些模式的约束组成
 软件架构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构件之间的对应关系,提供了一些设计决策的基本原理。
 解决好软件的复用、质量和维护问题,是研究软件架构的根本目的
 软件架构设计包括提出架构模型,产生架构设计和进行设计评审等活动,是一个选代的过程。架构设计主要关注软件组件的结构、属性和交互作用,并通过多种视图全面描述特定系统的架构。
 软件架构能够在设计变更相对容易的阶段,考虑系统结构的可选方案,便于技术人员与非技术人员就软件设计进行交互,能够展现软件的结构、属性与内部交互关系
 软件架构是项目干系人进行交流的手段,明确了对系统实现的约束条件,决定了开发和维护组织的组织结构,制约着系统的质量属性。
 软件架构使推理和控制的更改更加简单,有助于循序渐进的原型设计,可以作为培训的基础。
 软件架构是可传递和可复用的模型,通过研究软件架构可能预测软件的质量

软件架构设计与生命周期

  1. 需求分析阶段。需求分析和SA设计面临的是不同的对象:一个是问题空间;另一个是解空间。从软件需求模型向SA模型的转换主要关注两个问题:如何根据需求模型构建SA模型。如何保证模型转换的可追踪性
  2. 设计阶段。是SA研究关注的最早和最多的阶段,这一阶段的SA研究主要包括:SA模型的描述SA模型的设计与分析方法,以及对SA设计经验的总结与复用等。有关SA模型描述的研究分为3个层次:SA的基本概念(构件和连接子)、体系结构描述语言ADL、SA模型的多视图表示。
  3. 实现阶段。最初SA研究往往只关注较高层次的系统设计、描述和验证。为了有效实现SA设计向实现的转换,实现阶段的体系结构研究表现在以下几个方面。
    (1)研究基于SA的开发过程支持,如项目组织结构、配置管理等。
    (2)寻求从SA向实现过渡的途径,如将程序设计语言元素引I入SA阶段、模型映射、构件组装、复用中间件平台等。
    (3)研究基于SA的测试技术
  4. 构件组装阶段。在SA设计模型的指导下,可复用构件的组装可以在较高层次上实现系统,并能够提高系统实现的效率。在构件组装的过程中,SA设计模型起到了系统蓝图的作用。研究内容包括如下两个方面。
    (1)如何支持可复用构件的互联,即对SA设计模型中规约的连接子的实现提供支持。
    (2)在组装过程中,如何检测并消除体系结构失配问题
     在构件组装阶段的失配问题主要包括:由构件引起的失配、由连接子引起的失配、由于系统成分对全局体系结构的假设存在冲突引起的失配等。
  5. 部署阶段。SA对软件部署作用如下。
    (1)提供高层的体系结构视图来描述部署阶段的软硬件模型。
    (2)基于SA模型可以分析部署方案的质量属性,从而选择合理的部署方案。
  6. 后开发阶段。是指软件部署安装之后的阶段。这一阶段的SA研究主要围绕维护、演化、复用等方面来进行。典型的研究方向包括动态软件体系结构、体系结构恢复与重建等。
    (1)动态软件体系结构。现实中的软件具有动态性,体系结构会在运行时发生改变。运行时变化包括两类:软件内部执行所导致的体系结构改变;软件系统外部的请求对软件进行的重配置。包括两个部分的研究:体系结构设计阶段的支持、运行时刻基础设施的支持。
    (2)体系结构恢复与重建。对于现有系统在开发时候没有考虑SA的情况,从这些系统中恢复或重购体系结构。从已有的系统中获取体系结构的重建方法分为4类:手工体系结构重建、工具支持的手工重建、通过查询语言来自动建立聚集、使用其他技术(如数据挖掘等)。

构件

 构件是一个独立可交付的功能单元,外界通过接口访问其提供的服务
 构件由一组通常需要同时部署的原子构件组成。一个原子构件是一个模块和一组资源。原子构件是部署、版本控制和替换的基本单位。原子构件通常成组地部署,但是它也能够被单独部署。
 构件和原子构件之间的区别在于,大多数原子构件永远都不会被单独部署尽管它们可以被单独部署。相反,大多数原子构件都属于一个构件家族,一次部署往往涉及整个家族
一个模块是不带单独资源的原子构件
一个单独的包被编译成多个单独的类文件一一每个公共类都有一个。
模块是一组类和可能的非面向对象的结构体,比如过程或者函数。
构件的特性是:
(1)独立部署单元;
(2)作为第三方的组装单元;
(3)没有(外部的)可见状态。
一个构件可以包含多个类元素,但是一个类元素只能属于一个构件。
将一个类拆分进行部署通常没什么意义。
对象的特性是:
(1)一个实例单元,具有唯一的标志。
(2)可能具有状态,此状态外部可见。
(3)封装了自己的状态和行为

构件接口

 接口标准化是对接口中消息的格式、模式和协议的标准化。它不是要将接口格式化为参数化操作的集合,而是关注输入输出的消息的标准化,它强调当机器在网络中互连时,标准的消息模式、格式、协议的重要性。
面向构件的编程(COP)
 关注于如何支持建立面向构件的解决方案。面向构件的编程需要下列基本的支持:
(1)多态性(可替代性);
(2)模块封装性(高层次信息的隐藏);
(3)后期的绑定和装载(部署独立性);
(4)安全性(类型和模块安全性)。

构件技术

 构件技术就是利用某种编程手段,将一些人们所关心的,但又不便于让最终用户去直接操作的细节进行了封装,同时对各种业务逻辑规则进行了实现,用于处理用户的内部操作细节。目前国际上常用的构件标准主要有三大流派:
 EJB(EnterpriseJava Bean)规范由Sun公司制定,有三种类型的EJB,分别是会话Bean(Session Bean)、实体Bean(EntityBean)和消息驱动Bean(Message-driven Bean)。EJB实现应用中关键的业务逻辑,创建基于构件的企业级应用程序。
COM、DCOM、COM+COM是微软公司的。DCOM是COM的进一步扩展,具有位置独立性和语言无关性。COM+并不是COM的新版本,是COM的新发展或是更高层次的应用。
 COBRA标准主要分为三个层次:对象请求代理、公共对象服务和公共设施最底层是对象请求代理ORB,规定了分布对象的定义(接口)和语言映射,实现对象间的通讯和互操作,是分布对象系统中的“软总线”
在ORB之上定义了很多公共服务,可以提供诸如并发服务、名字服务、事务(交易)服务、安全服务等各种各样的服务;
最上层的公共设施则定义了组件框架,提供可直接为业务对象使用的服务,规定业务对象有效协作所需的协定规则。

软件架构风格

 软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。架构风格定义一个系统家族,即一个架构定义、一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。
 架构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。对软件架构风格的研究和实践促进对设计的重用,一些经过实践证实的解决方案也可以可靠地用于解决新的问题。
 架构设计的一个核心问题是能否达到架构级的软件复用
 架构风格定义了用于描述系统的术语表和一组指导构建系统的规则
 数据流风格:面向数据流,按照一定的顺序从前向后执行程序,代表的风格有批处理序列、管道-过滤器。
 调用/返回风格:构件之间存在互相调用的关系,一般是显式的调用,代表的风格有主程序/子程序、面向对象、层次结构
 独立构件风格:构件之间是互相独立的,不存在显式的调用关系,而是通过某个事件触发、异步的方式来执行,代表的风格有进程通信、事件驱动系统(隐式调用)
 虚拟机风格:自定义了一套规则供使用者使用,使用者基于这个规则来开发构件,能够跨平台适配,代表的风格有解释器、基于规则的系统
 仓库风格:以数据为中心,所有的操作都是围绕建立的数据中心进行的,代表的风格有数据库系统、超文本系统、黑板系统

数据流风格

 批处理序列:构件为一系列固定顺序的计算单元,构件之间只通过数据传递交互。每个处理步骤是一个独立的程序,每一步必须在其前一步结束后才能开始,数据必须是完整的,以整体的方式传递。
 管道-过滤器:每个构件都有一组输入和输出,构件读取输入的数据流,经过内部处理,产生输出数据流。前一个构件的输出作为后一个构件的输入,前后数据流关联。过滤器就是构件,连接件就是管道。
早期编译器就是采用的这种架构,要一步一步处理的,均可考虑此架构风格。
 二者区别在于批处理前后构件不一定有关联,并且是作为整体传递,即必须前一个执行完才能执行下一个。管道-过滤器是前一个输出作为后一个输入,前面执行到部分可以开始下一个的执行

调用/返回风格

 主程序/子程序:单线程控制,把问题划分为若干个处理步骤,构件即为主程序和子程序,子程序通常可合成为模块。过程调用作为交互机制,充当连接件的角色
 面向对象:构件是对象,对象是抽象数据类型的实例。连接件即使对象间交互的方式对象是通过函数和过程的调用来交互的。
 层次结构:构件组成一个层次结构,连接件通过决定层间如何交互的协议来定义。每层为上一层提供服务,使用下一层的服务,只能见到与自己邻接的层。修改某一层,最多影响其相邻的两层(通常只能影响上层)
 层次结构优点:
 1、支持基于可增加抽象层的设计,允许将一个复杂问题分解成一个增量步骤序列的实现
 2、不同的层次处于不同的抽象级别,越靠近底层,抽象级别越高
 3、由于每层最多只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同的方法实现,同样为软件复用提供了强大的支持
 缺点
 1、并不是每个系统都可以很容易的划分为分层的模式。
 2、很难找到一个合适的、正确的层次抽象方法。

独立构件风格

 进程通信:构件是独立的进程,连接件是消息传递。构件通常是命名过程,消息传递的方式可以是点对点、异步或同步方式,以及远程过程(方法)调用等
 事件驱动系统(隐式调用):构件不直接调用一个过程,而是触发或广播一个或多个事件。构件中的过程在一个或多个事件中注册,当某个事件被触发时,系统自动调用在这个事件中注册的所有过程。一个事件的触发就导致了另一个模块中的过程调用。这种风格中的构件是匿名的过程,它们之间交互的连接件往往是以过程之间的隐式调用来实现的。
 主要优点是为软件复用提供了强大的支持,为构件的维护和演化带来了方便;缺点是构件放弃了对系统计算的控制。

虚拟机风格

 解释器:通常包括一个完成解释工作的解释引擎、一个包含将被解释的代码的存储区、一个记录解释引擎当前工作状态的数据结构,以及一个记录源代码被解释执行的进度的数据结构。具有解释器风格的软件中含有一个虚拟机,可以仿真硬件的执行过程和一些关键应用,缺点是执行效率低
 基于规则的系统:包括规则集、规则解释器、规则/数据选择器和工作内存,一般用在人工智能领域和DSS中。

仓库(数据共享)风格

 数据库系统:构件主要有两大类,一类是中央共享数据源,保存当前系统的数据状态;另一类是多个独立处理单元,处理单元对数据元素进行操作
 黑板系统:包括知识源、黑板和控制三部分。知识源包括若干独立计算的不同单元,提供解决问题的知识。知识源响应黑板的变化,也只修改黑板;黑板是一个全局数据库,包含问题域解空间的全部状态,是知识源相互作用的唯一媒介;知识源响应是通过黑板状态的变化来控制的。黑板系统通常应用在对于解决问题没有确定性算法的软件中(信号处理、问题规划和编译器优化等)。
 超文本系统:构件以网状链接方式相互连接,用户可以在构件之间进行按照人类的联想思维方式任意跳转到相关构件。是一种非线性的网状信息组织方法它以节点为基本单位,链作为节点之间的联想式关联。通常应用在互联网领域。
现代编译器的集成开发环境一般采用数据仓库(即以数据为中心的架构风格)架构风格进行开发,其中心数据就是程序的语法树。

闭环控制

 当软件被用来操作一个物理系统时,软件与硬件之间可以粗略的表示为一个反馈循环,这个反馈循环通过接受一定的输入,确定一系列的输出,最终使环境达到一个新的状态,适合于嵌入式系统,涉及连续的动作与状态。
在这里插入图片描述

C2体系结构风格

C2体系结构风格可以概括为:通过连接件绑定在一起的按照一组规则运作的并行构件网络。C2风格中的系统组织规则如下:
(1)系统中的构件和连接件都有一个顶部和一个底部
(2)构件的顶部应连接到某连接件的底部,构件的底部则应连接到某连接件的顶部,而构件与构件之间的直接连接是不允许的;
(3)一个连接件可以和任意数目的其它构件和连接件连接;
(4)当两个连接件进行直接连接时,必须由其中一个的底部到另一个的顶部。
在这里插入图片描述

层次架构风格

两层C/S架构

 两层C/S架构:客户端和服务器都有处理功能,现在已经不常用,原因有:开发成本较高、客户端程序设计复杂、信息内容和形式单一、用户界面风格不一、软件移植困难、软件维护和升级困难、新技术不能轻易应用、安全性问题、服务器端压力大难以复用。
在这里插入图片描述

三层C/S架构

 三层C/S架构:将处理功能独立出来,表示层和数据层都变得简单。表示层在客户机上,功能层在应用服务器上,数据层在数据库服务器上。即将两层C/S架构中的数据从服务器中独立出来了。其优点下面四点:
各层在逻辑上保持相对独立,整个系统的逻辑结构更为清晰,能提高系统和软件的可维护性和可扩展性;
 允许灵活有效的选用相应的平台和硬件系统,具有良好的可升级性和开放性;
 各层可以并行开发,各层也可以选择各自最适合的开发语言。
 功能层有效的隔离表示层与数据层,为严格的安全管理奠定了坚实的基础,整个系统的管理层次也更加合理可控制
 三层C/S架构设计的关键在于各层之间的通信效率,要慎重考虑三层间的通信方法、通信频度和数据量,否则即使分配给各层的硬件能力很强,性能也不高。
在这里插入图片描述

三层B/S架构

 是三层C/S架构的变种,将客户端变为用户客户端上的浏览器,将应用服务器变为网络上的WEB服务器,又称为O客户端架构,虽然不用开发客户端,但有很多缺点:
  B/S架构缺乏对动态页面的支持能力,没有集成有效的数据库处理功能;
  安全性难以控制;
  在数据查询等响应速度上,要远远低于C/S架构;
  数据提交一般以页面为单位,数据的动态交互性不强,不利于OLTP应用。
 混合架构风格
  内外有别模型:企业内部使用C/S,外部人员访问使用B/S。
  查改有别模型:采用B/S查询,采用C/S修改。
  混合架构实现困难,且成本高。

MVC架构

(1)控制器(Controller):是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
(2)模型(Model):是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。模型表示业务数据和业务逻辑。
(3)视图(View):是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。是用户看到并与之交互的界面。视图向用户显示相关的数据,并能接收用户的输入数据,但是它并不进行任何实际的业务处理。

MVP架构

 MVP:MVP是把MVC中的Controller换成了Presenter(呈现),目的就是为了完全切断View跟Model之间的联系,由Presenter充当桥梁,做到View-Model之间通信的完全隔离。
MVP特点:
1、M、V、P之间双向通信。
2、View与Model不通信,都通过Presenter传递。Presenter完全把Model和View进行了分离,主要的程序逻辑在Presenter里实现。
3、View非常薄,不部署任何业务逻辑,称为”被动视图”(Passive View),即没有任何主动性,而Presenter非常厚,所有逻辑都部署在那里。
4、Presenter与具体的View是没有直接关联的,而是通过定义好的接口进行交互,从而使得在变更View时候可以保持Presenter的不变,这样就可以重用。

面向服务的架构风格

 SOA是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通信,不涉及底层编程接口和通信模型。
 在SOA中,服务是一种为了满足某项业务需求的操作、规则等的逻辑组合,它包含一系列有序活动的交互,为实现用户目标提供支持。
 SOA并不仅仅是一种开发方法,还具有管理上的优点,管理员可直接管理开发人员所构建的相同服务。多个服务通过企业服务总线提出服务请求,由应用管理来进行处理。
 实施SOA的关键目标是实现企业IT资产重用的最大化,在实施SOA过程中要牢记以下特征:可从企业外部访问、随时可用(服务请求能被及时响应)、粗粒度接口(粗粒度提供一项特定的业务功能,而细粒度服务代表了技术构件方法)、服务分级、松散耦合(服务提供者和服务使用者分离)、可重用的服务及服务接口设计管理、标准化的接口(WSDL、SOAP、XML是核心)、支持各种消息模式、精确定义的服务接口
 从基于对象到基于构件再到基于服务,架构越来越松散耦合,粒度越来越粗,接口越来越标准
 基于服务的构件与传统构件的区别有四点:
(1)服务构件粗粒度,传统构件细粒度居多;
(2)服务构件的接口是标准的,主要是WSDL接口,而传统构件常以具体API形式出现;
(3)服务构件的实现与语言是无关的,而传统构件常绑定某种特定的语言;
(4)服务构件可以通过构件容器提供QoS的服务,而传统构件完全由程序代码直接控制。
 SOA应用的关键技术:

功能协议
发现服务UDDI,DISCO
描述服务WSDL,XML Schema
消息格式层SOAP,REST
编码格式层XML(DOM,SAX)
传输协议层HTTP,TCP/IP,SMTP

 UDDI:是一套基于WEB的、分布式的、为WebService提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的webService注册,以使别的企业能够发现的访问协议的实现标准,用于WEB服务注册统一描述、发现及集成
 WSDL(WebService描述语言):将Web服务描述定义为一组服务访问点,客户端可以通过这些服务访问点对包含面向文档信息或面向过程调用的服务进行访问(类似远程调用)用于描述服务
 SOAP(简单对象访问协议):是用于交换XML编码信息的轻量级协议,用于传递信息
 XML(可扩展标记语言):是WebService平台中表示数据的基本格式,用于数据交换

WEB Service

 服务提供者、服务注册中心(中介,提供交易平台,可有可无)、服务请求者。服务提供者将服务描述发布到服务注册中心,供服务请求者查找,查找到后,服务请求者将绑定查找结果。如图
在这里插入图片描述
服务注册表
(1)服务注册:应用开发者(服务提供者)在注册表中公布服务的功能。
(2)服务位置:服务使用者(服务应用开发者),帮助他们查询注册服务,寻找符合自身要求的服务。
(3)服务绑定:服务使用者利用检索到的服务接口来编写代码,所编写的代码将与注册的服务绑定,调用注册的服务,以及与它们实现互动。

企业服务总线ESB

 企业服务总线ESB:简单来说是一根管道,用来连接各个服务节点。ESB的存在是为了集成基于不同协议的不同服务,ESB做了消息的转化、解释以及路由的工作,以此来让不同的服务互联互通。包括:客户端(服务请求者)、基础架构服务(中间件)、核心集成服务(提供服务)
ESB特点:
1、SOA的一种实现方式/ESB在面向服务的架构中起到的是总线作用,将各种服务进行连接与整合;
2、描述服务的元数据和服务注册管理
3、在服务请求者和提供者之间传递数据,以及对这些数据进行转换的能力,并支持由实践中总结出来的一些模式如同步模式、异步模式等;
4、发现、路由、匹配和选择的能力,以支持服务之间的动态交互,解耦服务请求者和服务提供者。高级一些的能力,包括对安全的支持、服务质量保证、可管理性和负载平衡等。

软件架构的复用

 软件产品线是指一组软件密集型系统,它们共享一个公共的、可管理的特性集,满足某个特定市场或任务的具体需要,是以规定的方式用公共的核心资产集成开发出来的。即围绕核心资产库进行管理、复用、集成新的系统。
 软件架构复用的类型包括机会复用和系统复用。机会复用是指开发过程中,只要发现有可复用的资产,就对其进行复用。系统复用是指在开发之前,就要进行规划,以决定哪些需要复用。
 可复用的资产包括:需求、架构设计、元素、建模与分析、测试、项目规划、过程方法和工具、人员、样本系统、缺陷消除。
 复用的基本过程主要包括3个阶段:首先构造/获取可复用的软件资产,其次管理这些资产(构件库),最后针对特定的需求,从这些资产中选择可复用的部分,以开发满足需求的应用系统

特定领域软件架构

 DSSA就是专用于一类特定类型的任务(领域)的、在整个领域中能有效地使用的、为成功构造应用系统限定了标准的组合结构的软件构件的集合。
 DSSA就是一个特定的问题领域中支持一组应用的领域模型、参考需求、参考架构等组成的开发基础,其目标就是支持在一个特定领域中多个应用的生成。
 垂直域:在一个特定领域中的通用的软件架构,是一个完整的架构
 水平域:在多个不同的特定领域之间的相同的部分的小工具(如购物和教育都有收费系统,收费系统即是水平域)。

DSSA三个基本活动

领域分析:这个阶段的主要目标是获得领域模型(领域需求)。识别信息源,即整个领域工程过程中信息的来源,可能的信息源包括现存系统、技术文献、问题域和系统开发的专家、用户调查和市场分析、领域演化的历史记录等,在此基础上就可以分析领域中系统的需求,确定哪些需求是领域中的系统广泛共享的,从而建立领域模型。
领域设计:这个阶段的目标是获得DSSA。DSSA描述在领域模型中表示的需求的解决方案,它不是单个系统的表示,而是能够适应领域中多个系统的需求的一个高层次的设计。建立了领域模型之后,就可以派生出满足这些被建模的领域需求DSSA。
领域实现:这个阶段的主要目标是依据领域模型和DSSA开发和组织可重用信息。这些可重用信息可能是从现有系统中提取得到,也可能需要通过新的开发得到。

参与DSSA的四种角色人员

领域专家包括该领域中系统的有经验的用户、从事该领域中系统的需求分析、设计、实现以及项目管理的有经验的软件工程师等。提供关于领域中系统的需求规约和实现的知识,帮助组织规范的、一致的领域字典,帮助选择样本系统作为领域工程的依据,复审领域模型、DSSA等领域工程产品,等等。
领域分析人员:由具有知识工程背景的有经验的系统分析员来担任。控制整个领域分析过程,进行知识获取,将获取的知识组织到领域模型中。
领域设计人员:由有经验的软件设计人员来担任。根据领域模型和现有系统开发出DSSA,并对DSSA的准确性和一致性进行验证。
领域实现人员:由有经验的程序设计人员来担任。根据领域模型和DSSA,开发构件。

建立DSSA的过程

定义领域范围:领域中的应用要满足用户一系列的需求。
定义领域特定的元素:建立领域的字典,归纳领域中的术语,识别出领域中相同和不相同的元素。
定义领域特定的设计和实现需求的约束:识别领域中的所有约束,这些约束对领域的设计和实现会造成什么后果。
定义领域模型和架构:产生一般的架构,并描述其构件说明。
产生、搜集可复用的产品单元:为DSSA增加复用构件,使可用于新的系统。
以上过程是并发的、递归的、反复的、螺旋型的。

三层次模型

领域开发环境:领域架构师决定核心架构,产出参考结构、参考需求、架构、领域模型、开发工具
领域特定的应用开发环境:应用工程师根据具体环境来将核心架构实例化。
应用执行环境:操作员实现实例化后的架构。
在这里插入图片描述

基于构件的软件开发

 ABSD方法是架构驱动,强调由业务、质量和功能需求的组合驱动架构设计。它强调采用视角和视图来描述软件架构,采用用例和质量属性场景来描述需求。进一步来说,用例描述的是功能需求,质量属性场景描述的是质量需求(或侧重于非功能需求)。
 使用ABSD方法,设计活动可以从项目总体功能框架明确就开始,这意味着需求获取和分析还没有完成,就开始了软件设计。
 ABSD方法有三个基础。第一个基础是功能的分解,使用已有的基于模块的内聚和耦合技术;第二个基础是通过选择架构风格来实现质量和业务需求第三个基础是软件模板的使用,软件模板利用了一些软件系统的结构。
 ABSD方法是递归的,且迭代的每一个步骤都是清晰定义的。因此,不管设计是否完成,架构总是清晰的,有助于降低架构设计的随意性。
基于架构的软件开发过程可以分为以下六步:
在这里插入图片描述
(1)架构需求:重在掌握标识构件的三步
(2)架构设计:将需求阶段的标识构件映射成构件,进行分析。
(3)架构(体系结构)文档化:主要产出两种文档,即架构(体系结构)规格说明,测试架构(体系结构)需求的质量设计说明书。文档是至关重要的,是所有人员通信的手段,关系开发的成败。
(4)架构复审:由外部人员(独立于开发组织之外的人,如用户代表和领域专家等)参加的复审,复审架构是否满足需求,质量问题,构件划分合理性等。若复审不过,则返回架构设计阶段进行重新设计、文档化,再复审。
(5)架构实现:用实体来显示出架构。实现构件,构件组装成系统
(6)架构演化:对架构进行改变,按需求增删构件,使架构可复用

软件系统的质量属性

可以将软件系统的质量属性分为开发期质量属性和运行期质量属性2个部分。

  1. 开发期质量属性主要指在软件开发阶段所关注的质量属性,主要包含6个方面。
    (1)易理解性:指设计被开发人员理解的难易程度。
    (2)可扩展性:软件因适应新需求或需求变化而增加新功能的能力,也称为灵活性。
    (3)可重用性:指重用软件系统或某一部分的难易程度。
    (4)可测试性:对软件测试以证明其满足需求规范的难易程度。
    (5)可维护性:当需要修改缺陷、增加功能、提高质量属性时,识别修改点并实施修改的难易程度。
    (6)可移植性:将软件系统从一个运行环境转移到另一个不同的运行环境的难易程度。
  2. 运行期质量属性主要指在软件运行阶段所关注的质量属性,主要包含7个方面。
    (1)性能:性能是指软件系统及时提供相应服务的能力,如速度、吞吐量和容量等的要求。
    (2)安全性:指软件系统同时兼顾向合法用户提供服务,以及阻止非授权使用的能力。
    (3)可伸缩性:指当用户数和数据量增加时,软件系统维持高服务质量的能力。例如,通过增加服务器来提高能力。
    (4)互操作性:指本软件系统与其他系统交换数据和相互调用服务的难易程度。
    (5)可靠性:软件系统在一定的时间内持续无故障运行的能力。
    (6)可用性:指系统在一定时间内正常工作的时间所占的比例。可用性会受到系统错误,恶意攻击,高负载等问题的影响。
    (7)鲁棒性:是指软件系统在非正常情况(如用户进行了非法操作、相关的软硬件系统发生了故障等)下仍能够正常运行的能力,也称健壮性或容错性。
质量属性场景

质量属性场景是一种面向特定质量属性的需求。它由6部分组成:

  • 刺激源(Source):这是某个生成该刺激的实体(人、计算机系统或者任何其他刺激器)。
  • 刺激(Stimulus):该刺激是当刺激到达系统时需要考虑的条件
  • 环境(Environment):该刺激在某些条件内发生。当激励发生时,系统可能处于过载、运行或者其他情况。
  • 制品(Artifact):某个制品被激励。这可能是整个系统,也可能是系统的一部分。
  • 响应(Response):该响应是在激励到达后所采取的行动
  • 响应度量(Measurement):当响应发生时,应当能够以某种方式对其进行度量,以对需求进行测试。

软件架构评估

质量属性
1、性能:指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件的个数。如响应时间、吞吐量
设计策略:优先级队列、增加计算资源、减少计算开销、引入并发机制、采用资源调度等。
2、可靠性:是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。如MTTF、MTBF、MTTR。
设计策略:心跳、Ping/Echo、冗余、选举。
3、可用性:是系统能够正常运行的时间比例,经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示。如故障间隔时间。
设计策略心跳、Ping/Echo、冗余、选举。
4、安全性:是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。如保密性、完整性、不可抵赖性、可控性。
设计策略:入侵检测、用户认证、用户授权、追踪审计。
5、可修改性:指能够快速的以较高的性能价格比对系统进行变更的能力。通常以某些具体的变更为基准,通过考察这些变更的代价衡量。
设计策略:接口-实现分类、抽象、信息隐藏。
6、功能性:是系统所能完成所期望的工作的能力。一项任务的完成需要系统中许多或大多数构件的相互协作。
7、可变性:指体系结构经扩充或变更而成为新体系结构的能力。这种新体系结构应该符合预先定义的规则,在某些具体方面不同于原有的体系结构。当要将某个体系结构作为一系列相关产品的基础时,可变性是很重要的。
8、互操作性:作为系统组成部分的软件不是独立存在的,经常与其他系统或自身环境相互作用。为了支持互操作性,软件体系结构必须为外部可视的功能特性和数据结构提供精心设计的软件入口。程序和用其他编程语言编写的软件系统的交互作用就是互操作性的问题,也影响应用的软件体系结构。

  • 敏感点:是指为了实现某种特定的质量属性,一个或多个构件所具有的特性。
  • 权衡点:是影响多个质量属性的特性,是多个质量属性的敏感点。
  • 风险点与非风险点不是以标准专业术语形式出现的,只是一个常规概念,即可能==引起风险的因素,可称为风险点。==某个做法如果有隐患,有可能导致一些问题,则为风险点;而如果某件事是可行的可接受的,则为非风险点。
  • 软件架构评估在架构设计之后,系统设计之前,因此与设计、实现、测试都没有关系。评估的目的是为了评估所采用的架构是否能解决软件系统需求,但不是单纯的确定是否满足需求。
三种常用的评估方式
  • 基于调查问卷(检查表)的方式:类似于需求获取中的问卷调查方式,只不过是架构方面的问卷,要求评估人员对领域熟悉。
  • 基于度量的方式:制定一些定量指标来度量架构,如代码行数等。要制定质量属性和度量结果之间的映射要求评估人员对架构熟悉。
  • 基于场景的方式:主要方法。首先要确定应用领域的功能和软件架构的结构之间的映射,然后要设计用于体现待评估质量属性的场景(即4+1视图中的场景),最后分析软件架构对场景的支持程度。要求评估人员即对领域熟悉,也对架构熟悉。从三个方面对场景进行设计:刺激(事件);环境(事件发生的环境);响应(架构响应刺激的过程)。
基于场景的架构分析方法SAAM

SAAM是一种非功能质量属性的架构分析方法,是最早形成文档并得到广泛应用的软件架构分析方法。
 特定目标。SAAM的目标是对描述应用程序属性的文档,验证基本的架构假设和原则
 质量属性。这一方法的基本特点是把任何形式的质量属性都具体化为场景,但可修改性是SAAM分析的主要质量属性。
 架构描述。SAAM用于架构的最后版本,但早于详细设计。架构的描述形式应当被所有参与者理解。
 功能、结构和分配被定义为描述架构的3个主要方面。
 方法活动。SAAM的主要输入是问题描述、需求声明和架构描述。下图描绘了SAAM分析活动的相关输入及评估过程。包括5个步骤,即场景开发、架构描述、单个场景评估、场景交互和总体评估
在这里插入图片描述

权衡分析法ATAM

 架构权衡分析法ATAM,让架构师明确如何权衡多个质量目标,参与者有评估小组、项目决策者和其他项目相关人。
 ATAM被分为四个主要的活动领域,分别是场景和需求收集、体系结构视图和场景实现、属性模型构造和分析、折中。整个评估过程强调以属性作为架构评估的核心概念。主要针对性能、可用性、安全性和可修改性,在系统开发之前,对这些质量属性进行评价和折中。

成本效益分析法CBAM

 成本效益分析法CBAM,用来对架构建立的成本来进行设计和建模,让决策者根据投资收益率来选择合适的架构,可以看做对ATAM的补充,在ATAM确定质量合理的基础上,再对效益进行分析。有下列步骤:
 整理场景(确定场景,并确定优先级,选择三分之一优先级最高的场景进行分析);
 对场景进行细化(对每个场景详细分析,确定最好、最坏的情况);确定场景的优先级(项目干系人对场景投票,根据投票结果确定优先级);
 分配效用(对场景响应级别确定效用表,建立策略、场景、响应级别的表格);
 形成“策略-场景-响应级别的对应关系”;
 确定期望的质量属性响应级别的效用(根据效用表确定所对应的具体场景的效用表)
 计算各架构策略的总收益;
 根据受成本限制影响的投资报酬率选择架构策略(估算成本,用上一步的收益减去成本,得出收益,并选择收益最高的架构策略)。

中间件技术

 中间件:在一个分布式系统环境中处于操作系统和应用程序之间的软件,可以在不同的技术之间共享资源,将不同的操作系统、数据库、异构的网络环境以及若干应用结合成一个有机的协同工作整体
 中间件位于客户机/服务器的操作系统之上,管理计算机资源和网络通信,有如下特点
(1)中间件是一类软件,而非一种软件;
(2)中间件不仅仅实现互连,还要实现应用之间的互操作;
(3)中间件是基于分布式处理的软件,最突出的特点是其网络通信功能。
 中间件的任务是使应用程序开发变得更容易,通过提供统一的程序抽象,隐藏异构系统和分布式系统下低级别编程的复杂度。

主要的中间件

主要的中间件有五类:

  • 数据库访问中间件通过一个抽象层访问数据库,从而允许使用相同或相似的代码访问不同的数据库资源典型的技术如Windows平台的ODBC和Java平台的JDBC等
  • 远程过程调用(RPC):是一种广泛使用的分布式应用程序处理方法。一个应用程序使用RPC来“远程”执行大个位于不同地址空间内的过程,从效果上看和执行本地调用相同。
  • 面向消息中间件(MOM):利用高效可靠的消息传递机制进行平台无关的数据交流,并可基于数据通信进行分布系统的集成。通过提供消息传递和消息排队模型,可在分布环境下扩展进程间的通信,并支持多种通信协议、语言、应用程序、硬件和软件平台。典型的产品如IBM的MQSeries
  • 分布式对象中间件:随着对象技术与分布式计算技术的发展,两者相互结合形成了分布式对象技术,并发展成为当今软件技术的主流方向。典型的产品如OMG的CORBA、Sun的RMI/EJB、Microsoft的DCOM等。
  • 事务中间件:也称事务处理监控器(TPM)最早出现在大型机上。事务处理监控程序位于客户和服务器之间,完成事务管理与协调、负载平衡、失效恢复等任务,提高系统的整体性能。

典型应用架构

J2EE平台采用了多层分布式应用程序模型,实现不同逻辑功能的应用程序被封装到不同的构件中,处于不同层次的构件被分别部署到不同的机器中。四层结构:
在这里插入图片描述

  • 客户层组件:J2EE应用程序可以是基于web方式的,也可以是基于传统方式的静态的HTML(标准通用标记语言下的一个应用)页面和Applets是客户层组件
  • web层组件:J2EEweb层组件可以是JSP页面或Servlet。
  • 业务层组件:业务层代码的逻辑用来满足特定领域的业务逻辑处理。
  • 信息系统层:企业信息系统层处理企业信息系统软件包括企业基础建设系统例如企业资源计划(ERP),大型机事务处理,数据库系统,和其它的遗留信息系统.例如,J2EE应用组件可能为了数据库连接需要访问企业信息系统。

JSP+Servlet+JavaBean+DAO

  • JSP:用于显示、收集数据的部分。作为MVC中的视图V
  • Servlet:作为业务逻辑层,用于处理复杂的业务逻辑,如验证数据、实例化JavaBean、调用DAO连接数据库等。作为MVC中的控制器C。在其中会调用Service方法处理服务。
  • JavaBean:用于数据的封装,方便将查询结果在servlet与jsp页面之间进行传递等。
  • DAO:用于连接数据库及进行数据库的操作如:查询、删除、更改等。
    DAO与JavaBean合在一起为MVC中的模型M
  • 基本流程:JSP发一个数据到servlet,servlet收到后做下解析再根据数据调用相应的service去服务,service如果有要调用数据库就通过DAO跟数据库交互,使用javaBean完成封装,返回结果给servlet,servlet再返回给JSP。
### 关于面包板电源模块 MB102 的 USB 供电规格及兼容性 #### 1. **MB102 基本功能** 面包板电源模块 MB102 是一种常见的实验工具,主要用于为基于面包板的小型电子项目提供稳定的电压输出。它通常具有两路独立的稳压输出:一路为 5V 和另一路可调电压(一般范围为 3V 至 12V)。这种设计使得它可以满足多种芯片和传感器的不同工作电压需求。 #### 2. **USB 供电方式** MB102 支持通过 USB 接口供电,输入电压通常是标准的 5V DC[^1]。由于其内部集成了 LM7805 稳压器以及可调节电位器控制的直流-直流变换电路,因此即使输入来自电脑或其他低功率 USB 设备,也能稳定地向负载供应电力。不过需要注意的是,如果项目的功耗较高,则可能超出某些 USB 端口的最大电流能力(一般是 500mA),从而引起不稳定现象或者保护机制启动断开连接的情况发生。 #### 3. **兼容性分析** 该型号广泛适用于各种微控制器单元 (MCU),特别是那些像 Wemos D1 R32 这样可以通过杜邦线轻松接入并共享相同逻辑级别的系统[^2]。另外,在提到 Arduino Uno 板时也表明了良好的互操作性,因为两者均采用相似的标准接口定义与电气特性参数设置[^4]: - 对于需要 3.3V 工作环境下的组件来说,只需调整好对应跳线帽位置即可实现精准匹配; - 当涉及到更多外围扩展应用场合下,例如带有多重模拟信号采集任务的情形里,利用 MB102 提供干净无干扰的基础能源供给就显得尤为重要了[^3]。 综上所述,对于打算构建以单片机为核心的原型验证平台而言,选用具备良好声誉记录且易于获取配件支持服务链路上下游资源丰富的品牌产品——如这里讨论过的这款特定类型的配电装置不失为明智之举之一。 ```python # 示例 Python 代码展示如何检测硬件状态 import machine pin = machine.Pin(2, machine.Pin.IN) if pin.value() == 1: print("Power supply is stable.") else: print("Check your connections and power source.") ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萨达大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值