第一章 计算机系统基础 1-7
考点:
- 计算机组成原理与体系结构:磁盘管理 0-2分
- 系统配置与性能评价:基准程序测试、计算机性能优化/性能评价、计算机性能指标 0-2分
- 操作系统:概念、前趋图与PV操作、死锁与银行家算法、段页式存储、页面置换算法、索引文件、位示图 1-3分
1.1 计算机系统
计算机系统:
- 硬件:处理器、存储器、总线、接口和外部设备等
- 软件:
- 系统软件:操作系统、编译工具等
- 应用软件:办公软件、娱乐软件、信息系统软件等

指令系统类型 | 指令 | 寻址方式 | 实现方式 | 其他 | 代表 |
---|---|---|---|---|---|
CISC(复杂) | 数量多,使用频率差别大,可变长格式 | 支持多种 | 微程序控制技术(微码) | 研制周期长 | Intel、AMD的x86CPU |
RISC(精简) | 数量少,使用频率接近,定长格式,大部分为单周期指令,操作寄存器,只有Load/Store操作内存 | 支持方式少,多寄存器寻址 | 增加了通用寄存器;硬布线逻辑控制为主;适合采用流水线 | 优化编译,有效支持高级语言 | ARM和Power |
分级存储:
解决存储的容量、价格和速度之间的矛盾
存取数据速度由快到慢为:
- CPU 寄存器
- Cache 按内存存取(相联存储器) SRAM 静态
- 内存(主存) DRAM 周期性刷新
- 外存(辅存) 硬盘、光盘、U盘等
RAM(随机访问存储器) 内存:掉电数据会丢失
ROM(只读存储器) 内存:掉电数据不丢失
- 时间局部性:指程序中的某条指令一旦执行,不久以后该指令可能再次执行,典型原因是由于程序中存在着大量的循环操作
- 空间局部性:指一旦程序访问了某个存储单元,不久以后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址可能集中在一定的范围内,其典型情况是程序顺序执行
IO数据传输控制方式: 由上到下效率越来越高
- 程序控制(查询)方式:分为无条件传送和程序查询方式两种,方法简单,硬件开销小,但I/O能力不高,严重影响CPU的利用率
- 程序中断方式:与程序控制方式相比,中断方式因为CPU无需等待而提高了传输请求的响应速度【CPU与I/O传输可并行】
- DMA方式:DMA方式是为了在主存与外设之间实现高速、批量数据交换而设置的。DMA方式比程序控制方式和中断方式都高效【CPU与I/O传输可并行】
- 通道方式
- I/O处理机
1.2 操作系统概述
分类 | 特点 |
---|---|
批处理操作系统 | 单道批:一次一个作业入内存,作业由程序、数据、作业说明书组成 多道批:一次多个作业入内存,特点:多道、宏观上并行微观上串行 |
分时操作系统 | 采用时间片轮转的方式为多个用户提供服务,每个用户感觉独占系统 特点:多路性、独立性、交互性和及时性 |
实时操作系统 | 实时控制系统和实时信息系统 交互能力要求不高,可靠性要求高**(规定时间内响应并处理)** |
网络操作系统 | 方便有效共享网络资源,提供服务软件和有关协议的集合 主要的网络操作系统有:Unix、Linux和Windows Server系统 |
分布式操作系统 | 任意两台计算机可以通过通信交换信息 是网络操作系统的更高级形式,具有透明性、可靠性和高性能等特性 |
微机操作系统 | Windows:Microsoft开发的图形用户界面、多任务、多线程操作系统 Linux:免费使用和自由传播的类Unix操作系统,多用户、多任务、多线程和多CPU的操作系统 |
嵌入式操作系统 | 运行在智能芯片环境中 特点:微型化,可定制(针对硬件变化配置)、实时性、可靠性、易移植性(HAL和BSP支持) |
1.3 进程管理
进程是程序在一个数据集合上运行的过程,它是系统进行自由分配和调度的一个独立单位,它由程序块、进程控制块(PCB)和数据块三部分组成
- PCB:PCB时进程存在的唯一标志、内容包含进程标识符、状态、位置信息、队列指针(链接同一状态的进程)、优先级、现场保护区等
一个进程之中存在多个线程,线程之间
- 可共享:内存地址空间、代码、数据、文件等
- 不可共享:程序计数器、寄存器、栈
进程状态
- 运行:当一个进程在CPU上运行时(单处理机处于运行态的进程只有一个,多进程在CPU上交替运行)
- 就绪:一个进程获得了除CPU外的一切所需资源,一旦得到处理机即可运行
- 阻塞:阻塞也称等待或睡眠状态,一个进程正在等待某一事件发生(例如请求I/O、等待I/O完成等)而暂时停止运行,此时即使把CPU分配给进程也无法运行,故称进程处于阻塞状态
进程的同步与互斥
临界资源:诸进程间需要互斥方式对其进行共享的资源(进程中访问临界资源的那段代码称为临界区)
- 互斥:间接制约关系
- 同步:直接制约关系
1.3.1 PV操作
信号量:是一种特殊的变量
- 信号量可以表示资源数量
- 信号量为负数时还可以表示排队进程数
信号量表示资源数量:信号量初值(最大),表示没有任何操作时,资源的总数
P(S):获取资源
- S = S - 1:申请/锁定资源
- S < 0:检查资源是否足够 —— true 进入阻塞进程对列
V(S):释放资源
- S = S + 1:释放/解锁资源
- S <= 0:检查时都有进程排队 —— true 进入阻塞进程对列
n个资源,m个进程互斥获取资源,整个pv过程,信号量S初始值为多少,取值范围是多少
- 初始值为n,取值范围是 - (m - n) ~ 2
用P、V操作管理临界区时,一个任务在进入临界区前应对信号量执行P操作,退出临界区时应对信号量执行V操作
1.3.2 前趋图
- 1个箭头表示1个前趋关系
- A有箭头指向D,则记录为(A, D)
- 没有前趋进程的结点是起始进程,没有后继进程的结点是终结进程
- 某活动有后继就有V操作释放资源并通知后继活动,有前趋就有P操作检查资源是否足够
- 实现并发的信号量初值一般为0,有几个箭头就有几个信号量
1.3.3 死锁与银行家算法
两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程
有n个进程,每个进程需要m个系统资源,至少有多少个资源,不可能发生死锁
- 如果资源数 < m,必定死锁
- 如果资源数 >= m 且 <= n * (m - 1),可能死锁,可能不死锁
- 如果资源数 > n * (m - 1),不可能发生死锁
银行家算法:分配资源的原则
- 当一个进程对资源的最大需求量不超过系统中的资源数时可以接纳该进程
- 进程可以分期请求资源,但请求的总数不能超过最大需求值
- 当系统现有的资源不能满足进程尚需资源数时,对进程的请求可以推迟分配,但总能使进程在有限的时间里得到资源
1.4 存储管理
1.4.1 页式存储
将程序与内存均划分为同样大小的块,以页为单位将程序调入内存
- 优点:利用率高,碎片小,分配及管理简单
- 缺点:增加了系统开销;可能产生抖动现象
高级程序语言使用逻辑地址
运行状态,内存中使用物理地址
- 逻辑地址 = 页号 + 页内地址
- 物理地址 = 页帧号 + 页内地址
例如,页式存储系统中,每个页的大小为4kb
逻辑地址:10 1100 1101 1110 低12位为页内地址 那么10为页号,查表得到对应的页帧号(如 6)
对应的物理地址为?
页内地址:需要12位二进制 即 4 x 1024 = 2的12次方
物理地址:页帧号的二进制 + 1100 1101 1110 例如:110 1100 1101 1110

- 存在访问位为0,修改位为1的情况
- 根据局部性原理,访问位为1的页面,尽量保留
- 淘汰的页面必定已在内存
- 优先淘汰访问位为0的页面
- 如果有多个可选,则考虑修改位为0
1.4.2 段式存储
按用户作业中的自然段来划分逻辑空间,然后调入内存,段段长度可以不一样

合法段地址:(0, 25k)
非法段地址:(0, 35k)
- 优点:多道程序共享内存,各段程序修改互不影响
- 缺点:内存利用率低,内存碎片浪费大
1.4.3 段页式存储
段式与页式的综合体。先分段,再分页,1个程序有若干个段,每个段中可以有若干页,每个页的大小相同,但每个段段大小不同

- 优点:空间浪费小、存储共享容易、存储保护容易、能动态连接
- 缺点:由于管理软件的增加,复杂性和开销也随之增加,需要的硬件以及占用的内存也有所增加,使得执行速度大大下降
页内地址:[0, 8] 2的9次方,每个页最多512字节
页号:[9 ,13] 2的5次方,每个段最多32个页
段号:[14, 15] 2的平方,最多4个段
1.5 磁盘管理
存取时间 = 寻道时间 + 等待时间,寻道时间是指磁头移动到磁道所需的时间,等待时间为等待读写的扇区转到磁头下方所用的时间
读取磁盘数据的时间应包括以下三个部分
- 找磁道的时间
- 找块(扇区)的时间,即旋转延迟时间
- 传输时间:磁头在对应扇区上移动的时间,也就是数据读取的时间
某磁盘磁头从一个磁道移至另一个磁道需要10ms。文件在磁盘上非连续存放,逻辑上相邻数据块的平均移动距离为10个磁道,每块的旋转延迟时间及传输时间分别为100ms和2ms,则读取一个100块的文件需要多少ms的时间
( (10 * 10) + 100 + 2) * 100 = 20,200ms
旋转周期为33ms,11个物理块,每个分区读取时间为3ms,记录处理时间为3ms
初始:R0:读取时间 + 记录时间 = 3 + 3
这是磁头位于R2,要读取R1
R1:旋转等待时间 + 读取时间 + 记录时间 = 3 * 10 + 3 + 3 = 36
这是磁头位于R4,要读取R3
R3:旋转等待时间 + 读取时间 + 记录时间 = 3 * 10 + 3 + 3 = 36
……
最长时间 = 36 * 10 + 6 = 366ms,选C
优化分布 R0 R6 R1 R7 R2 R8 R3 R9 R4 R10 R5,环形,时间 (3 + 3) * 11 = 66,选B
1.5.1 移臂调度算法
- 先来先服务(FCFS)
- 最短寻道时间有限(SSTF)
- 扫描算法(SCAN):电梯算法:内 —> 外 再 外 —> 内
- 循环扫描(CSCAN)算法:单向 内 —> 外



不考虑磁头号,找离20号柱面最近的,如果有多个请求,扇区号从小到大排列
选C
1.6 文件系统
1.6.1 索引文件结构

默认13个节点
- 地址项 4B
- 前10个节点都是直接指向具体逻辑块
- 直接索引 0-9号页
- 假设数据块/逻辑块大小为1kb,一级间接索引 [10, 265] 256个逻辑页
- 二级间接索引,65536个逻辑页
- 三级间接索引,256的三次方个逻辑页
1.6.2 位示图

- 0 —> 空闲
- 1 —> 占用
- 按字长分组,每个磁盘块的情况由1个bit进行记录
字长16bit 字的编号、位的编号、磁盘块的编号都是从0开始的
第65号磁盘块放在几号字?几号bit位
第65号磁盘块是第66个:4号字,第5行,1号bit位
- 若系统在将目录文件修改的结果写回磁盘时发生崩溃,则对系统的影响相对较大
1.7 系统性能
1.7.1 性能指标
分类 | 指标 | |
---|---|---|
计算机 | 时钟频率(主频),运算速度和精度,内存的存储容量,存储器的存取周期,数据处理速度PDR,吞吐率,各种响应时间,各种利用率,RASIS特性,平均故障时间,兼容性,可扩充性,性能价格比 | |
硬件 | 路由器 | 设备吞吐量、端口吞吐量,全双工线速转发能力,丢包率,时延,时延抖动,VPN支持能力,端口硬件队列数,基于Web的管理,网管类型等 |
交换机 | 交换机类型,配置,支持的网络类型,最大ATM端口数,支持协议和标准等 | |
网络 | 设备级性能指标,网络级性能指标,应用级性能指标,用户级性能指标,吞吐量 | |
操作系统 | 系统的可靠性、系统的吞吐率(量)、系统响应时间、系统资源利用率、可移植性 | |
软件 | 数据块管理系统 | 衡量数据库管理系统的主要性能指标包括数据库本身和管理系统两部分,有:数据库的大小、数据库中表的数量、单个表的大小、表中允许的记录(行)数量、单个记录(行)的大小、表上允许的索引数量、数据库允许的索引数量、最大并发事物处理能力、负载均衡能力、最大连接数等 |
WEB服务器 | 最大并发连接数、响应延迟、吞吐量等 |

1.7.2 性能设计
当系统性能降到最基本的水平时,性能调整由查找和消除瓶颈组成
- 对于数据库系统:性能调整主要包括CPU/内存使用状况、优化数据库设计、优化数据库管理以及进程/线程状态、硬盘剩余空间、日志文件大小等
- 对于应用系统:性能调整主要包括应用系统等可用性、响应时间、并发用户数以及特定应用的系统资源占用等
Amdahl(阿姆达尔)定律


B
1.7.3 性能评估
方法 | 描述 | 特点 |
---|---|---|
时钟频率法 | 以时钟频率高低衡量速度 | 仅考虑CPU |
指令执行速度法 | 表示机器运算速度的单位是MIPS | 仅考虑CPU |
等效指令速度法(吉普森混合法) | 通过各类指令在程序中所占的比例(Wi)进行计算得到的 | 仅考虑CPU,综合考虑指令比例不同的问题 |
数据处理速率法(PDR) | PDR值的方法来衡量机器性能,PDR值越大,机器性能越好 | PDR = L / R 仅考虑CPU + 内存 |
综合理论性能法(CTP) | CTP用MTOPS表示,CTP的估算方法是:首先 算出处部件每个计算单元的有效计算率, 再按不同字长加以调整,得出该计算单元 的理论性能,所有组成该处理部件的计算单元 的理论性能之和即为CTP |
仅考虑CPU + 内存 |
基准程序法 | 把应用程序中用的最多、最频繁的那部分核心程序 作为评估计算机系统性能的标准程序, 称为基准测试程序(benchmark) |
综合考虑多部分,基准程序法 是目前一致承认的测试系统性能的较好方法 |
【测试精确度】真实的程序 > 核心程序 > 小型基准程序 > 合成基准程序
- Dhrystone基准程序:一个综合性的整数基准测试程序,是为了测试编译器和CPU处理整数指令和控制功能的有效性,人为地选择一些典型指令综合起来形成的测试程序
- Linpack基准程序:国际上最流行的用于测试高性能计算机系统浮点性能的测试
- Whetstone基准程序:用Fortran语言编写的综合性测试程序,主要由执行浮点运算、功能调用、数组变址、条件转移和超越函数的程序组成
- SPEC基准程序:一种是测试计算机完成单向任务有多快,称为速度测试,另一种是测试计算机在一定时间内能完成多少项任务,称为吞吐率测试
- TPC基础程序:TPC基准程序用以测评计算机在事务处理、数据库处理、企业管理与决策支持系统等方面的性能,该基准程序的测评结果用每秒完成的事物处理数TPC来表示
- TPC-A基准程序规范用于评价在OLTP环境下的数据库和硬件的性能
- TPC-B测试的是不包括网络的纯事务处理量,用于模拟企业计算环境
- TPC-C测试的是联机订货系统(在线事务处理)
- TPC-D、TCP-H和TPC-R测试的都是决策支持系统,其中TCP-R允许有附加的优化选项
- TPC-E测试的是大型企业信息服务系统
- TPC-W是基于Web应用的基准程序,用来测试一些通过Internet进行市场服务和销售的商业行为,所以TPC-W可以看作是一个服务器的测试标准
Web服务器的性能评估
- 在Web服务器的测试中,反映其性能的指标主要有:最大并发连接数、响应延迟和吞吐量等
- 常见的Web服务器性能评测方法有基准性能测试、压力测试和可靠性测试
系统监视
进行系统监视通常有3种方式:一是通过系统本身提供的命令,如UNIX/Linux系统中的W、ps、last、Windows中的netstart等,二是通过系统记录文件查阅系统在特定时间内的运行状态,三是集成命令、文件记录和可视化技术的监控工具、如Windows的Perfmon程序
第二章 嵌入式系统 2-5
考点:
- 嵌入式硬件、总线、嵌入式系统、嵌入式操作系统、微内核、多核CPU、嵌入式系统开发设计
2.1 嵌入式系统概述
- 嵌入式系统是以应用为中心,以计算机技术为基础,并将可配置与可裁剪的软、硬件集成于一体的专用计算机系统,需要满足应用对功能、可靠性、成本、体积和功耗等方面的严格要求
- 从计算机角度看,嵌入式系统是指嵌入各种设备及应用产品内部的计算机系统,它主要完成信号控制的功能,体积小、结构紧凑,可作为一个部件埋藏于所控制的装置中
- 一般嵌入式系统由嵌入式处理器、相关支撑硬件、嵌入式操作系统、支撑软件以及应用软件组成
从传统意义上讲,嵌入式系统主要由以下部件组成
- 嵌入式微处理器(控制器(MCU))
- 存储器(RAM/ROM)
- 内(外)总线逻辑
- 定时/计数器
- 看门狗电路:定时器溢出则中断,系统复位处理
- I/O接口(串口、网络、USB、JTAG接口–用来进行CPU调试的常用接口)
- 外部设备(UART、LED等)
- 其他部件
2.2 嵌入式系统设计
2.2.1 交叉开发环境
嵌入式软件等开发与传统的软件开发方法存在比较大的差异,主要表现在以下方面:
- 嵌入式软件开发是在宿主机(PC机或工作站)上使用专门的嵌入式工具开发,生成二进制代码后,需要使用工具卸载到目标机或固化在目标机存储器上运行
- 嵌入式软件开发时更强调软/硬件协同工作的效率和稳定性
- 嵌入式软件开发的结果通常需要固化在目标系统的储存器或处理器内部储存器资源中
- 嵌入式软件的开发一般需要专门的开发工具、目标系统和测试设备
- 嵌入式软件对实时性的要求更高
- 嵌入式软件对安全性和可靠性的要求较高
- 嵌入式软件开发是要充分考虑代码规模
- 在安全攸关系统中的嵌入式软件,其开发还应满足某些领域对设计和代码审定
- 模块化设计即将一个较大的程序按功能划分成若干程序模块,每个模块实现特定的功能
嵌入式软件设计层面的功耗控制主要可以从以下方面展开:
- 软硬件协同设计,即软件的设计要与硬件的匹配,考虑硬件因素
- 编译优化,采用低功耗优化的编译技术
- 减少系统的持续运行时间,可从算法角度进行优化
- 用”中断”代替”查询”
- 进行电源的有效管理
2.3 嵌入式硬件
嵌入式系统的发展大致经历了五个阶段:
- 第一阶段:单片微型计算机(SCM)阶段,即单片机时代
- 第二阶段:微控制器(MCU)阶段
- 第三阶段:片上系统(SoC)
- 第四阶段:以Internet为基础的嵌入式系统
- 第五阶段:在智能化、云技术推动下的嵌入式系统
2.3.1 嵌入式微处理器分类
通常嵌入式处理器需要根据不同的使用场景选择不同类型的处理器,从处理器分类看,大致可分为MPU、MCU、DSP、GPU、SoC
- 微处理器(MPU):将微处理器装配在专门设计的电路板上,只保留与嵌入式应用有关的母板功能。微处理器一般以某一种微处理内核为核心,每一种衍生产品的处理器内核都是一样的,不同的是存储器和外设的配置及封装
- 微控制器(MCU):又称单片机。与MPU相比MCU的最大优点在于单片化,体积大大减小,从而使功耗和成本下降,可靠性提高
- **信号处理器(DSP)**:DSP处理器对系统结构和指令进行了特殊设计(通常,DSP采用一种哈佛结构),使其适合于执行DSP算法,编译效率较高,指令执行速度也较高
- **图形处理器(GPU)**:
- GPU是图形处理单元的缩写,是一种可执行3D图形渲染等图像等半导体芯片(处理器)
- GPU可用于个人电脑、工作站、游戏机和一些移动设备上做图像和图形相关运算工作的微处理器
- 它可以减少对CPU的依赖,并执行部分原本属于CPU的工作,尤其是在3D图形处理中,GPU采用了核心技术(如:硬件T&L、纹理压缩等)保证了3D快速渲染的能力
- GPU目前已广泛应用于各行各业,GPU中集成了同时运行在GHz的频率上的成千上万个core,可以高速处理图像数据。最新的GPU峰值性能可高达100TFlops以上
- **片上系统(SoC)**:
- 追求产品系统最大包容的集成器件
- 它是一个产品,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容
- 同时它又是一种技术,用以实现从确定系统功能开始,到软/硬件划分,并完成设计的整个过程
- 成功实现了软硬件的无缝结合,直接在微处理器片内嵌入操作系统的代码模块
- 减小了系统的体积和功耗、提高了可靠性和设计生产效率
- 狭义角度:信息系统核心的芯片集成,是将系统关键部件集成在一块芯片上
- 广义角度:SoC是一个微小型系统,如果说中央处理器(CPU)是大脑,那么SoC就是包括大脑、心脏、眼睛和手的系统
- 国内外学术界一般倾向将SoC定义为将微处理器、模拟IP内核、数字IP核核存储器(或片外存储控制接口)集成在单一芯片上,它通常是客户定制的,或是面向特定用途的标准产品
2.3.2 AI芯片
人工智能芯片的定义:从广义上讲只要能够运行人工智能算法的芯片都叫作AI芯片。但是通常意义上的AI芯片指的是针对人工智能算法做了特殊加速设计的芯片,现阶段,这些人工智能算法一般以深度学习算法为主,也可以包括其他机器学习算法
人工智能芯片四大类(按技术架构分类)
- GPU
- FPGA(现场可编程门阵列)
- ASIC(专用集成电路)
- 类脑芯片
AI芯片的关键特征:
- 新型的计算范式:AI计算既不脱离传统计算,也具有新的计算特质
- 训练和推断:AI系统通常涉及训练和推断过程
- 大数据处理能力:满足高效能机器学习的数据处理要求
- 数据精度:降低精度的设计
- 可重构的能力:针对特定领域而不针对特定应用的设计,可以通过重新配置,适应新的AI算法、架构和任务
- 开发工具:AI芯片需要软件工具链的支持
2.3.3 嵌入式微处理器体系结构
体系结构分类 | 定义 | 特点 | 典型应用 |
---|---|---|---|
冯·诺伊曼结构 | 冯·诺伊曼结构也称 普林斯顿结构,是一种将 程序指令存储器和数据 存储器合并在一起的存储器结构 |
指令与数据存储器合并在一起 指令与数据都通过相同的数据总线传输 |
一般用于PC处理器, 如I3,I5,I7处理器 注:常规计算机 属于冯·诺伊曼结构 |
哈佛结构 | 哈佛结构是一种并行体系结构, 它的主要特点是将程序和 数据存储在不同的存储空间中, 即程序存储器和数据存储器 是两个独立的存储器, 每个存储器独立编址、独立访问 |
指令与数据分开存储, 可以并行读取,有较高的数据吞吐率 有4条总线:指令和数据 的数据总线与地址总线 |
一般用于嵌入式系统处理器 注:DSP属于哈佛结构 |
2.3.4 总线
基本概念:
总线是一组能为多个部件实时共享的信息传送线,用来连接多个部件并为之提供信息交换通路【总线通常是半双工的】
半双工:同一时刻,只允许1个设备发送,但是允许多个设备接收
特点:
- 挂接在总线上的多个部件只能分时向总线发送数据,但可同时从总线接收数据
- 通过总线复用方式可以减少总线中信号线的数量,以较少的信号线传输更多的信息
总线通常分为以下几类:
芯片内总线:用于集成电路芯片内部各部分的连接元件级总线,用于一块电路板内各元器件的连接
系统总线,又称内总线:用于计算机各组成部分(CPU、内存和接口等)等连接
外总线:又称通信总线,用于计算机与外设或计算机与计算机之间的连接或通信
从功能上将总线划分为数据总线、地址总线和控制总线
从数据传输的方式将总线划分为并行总线和串行总线
并行总线:将数据字节的各位用多条数据线同时进行传送【短距离】
串行总线:数据是一位一位地进行传输的,在传输中每一位数据都占据一个固定的时间长度【长距离,传输波特率可调整,正确性依赖于校验码,数据传输方式可以使用多种】
海明码可以纠正1个比特位的错误,90%以上只有1个bit错误
2.4 嵌入式操作系统
嵌入式操作系统(EOS)是指用于嵌入式系统的操作系统。嵌入式操作系统是一种用途广泛的系统软件,负责嵌入式系统的全部软、硬件资源分配、任务调度、控制、协调并行活动等工作,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等
根据系统对时间的敏感程度可以将嵌入式系统划分为:
- 嵌入式非实时系统
- 嵌入式实时系统:能够在指定或确定的时间内完成系统功能和外部或内部、同步或异步时间做出响应的系统
2.4.1 嵌入式实时操作系统
嵌入式实时操作系统兼具嵌入式操作系统的特点和实时操作系统的特点
嵌入式操作系统主要有以下特点:
- 微型化
- 代码质量高
- 专业化
- 实时性强
- 可裁剪、可配置
实时操作系统的最核心特点是实时性强
嵌入式实时操作系统实时性的评价指标
- 中断响应和延迟时间
- 任务切换时间
- 信号量混洗时间
嵌入式实时操作系统调度算法
- 优先级调度算法:系统为每个任务分配一个相对固定的优先顺序
- 抢占式优先级调度算法:根据任务的紧急程度确认该任务的优先级,大多数RTOS调度算法都是抢占方式(可剥夺方式)
- 最早截止期调度算法(EDF算法):根据任务的截止时间头端来确定其优先级,对于时间期限最近的任务。分配最高的优先级
- 最晚截止期调度算法:根据任务的截止时间末端来确定其优先级,对于时间期限最近的任务,分配最高的优先级
2.4.2 操作系统内核架构
内核是操作系统的核心部分,它管理着系统的各种资源,内核可以看成连接应用程序和硬件的一座桥梁,是直接运行在硬件上的最基础的软件实体
目前从内核架构来划分,可以分为宏内核(Monolithic Kernel)和微内核(Micro Kernel)
实质 | 优点 | 缺点 | |
---|---|---|---|
单体内核 | 将图形、设备驱动及文件 系统等功能全部在内核 中实现,运行在内核状态 和同一地址空间 |
减少进程间通信和状态切换 的系统开销,获得较高的运行效率 |
内核庞大,占用资源较多 且不易剪裁 系统稳定性和安全性不好 |
微内核【鸿蒙操作系统】 | 只实现基本功能,将图形系统 文件系统、设备驱动及 通信功能放在内核之外 |
微内核系统结构相当清晰, 有利于协作开发。内核精炼, 便于剪裁和移植(灵活性 可扩展性),系统服务程序 运行在用户地址空间,系统 的可靠性、稳定性和安全性 较高,可用于分布式系统 |
用户状态和内核状态需要 频繁切换,从而导致系统频率 不如单体内核,性能偏低 |
鸿蒙(Harmony OS)整体采用分层的层次化设计,从下向上依次为:内核层、系统服务层、框架层和应用层
系统功能按照”系统” - “子系统” - “功能/模块”逐级展开,在多设备部署场景下、支持根据实际需求裁剪某些非必要的子系统或功能/模块
鸿蒙操作系统架构具有4个技术特性:
分布式架构首次用于终端OS,实现跨终端无缝协同体验
Harmony OS的”分布式OS 架构”具有分布式软总线、分布式数据管理、分布式任务调度和虚拟外设等4大能力,将相应分布式应用的底层技术实现难点对应用开发者屏蔽,使开发者能够聚焦自身业务逻辑,像开发同一终端一样开发跨终端分布式应用,也使最终消费者享受到强大的跨终端业务协同能力为各使用场景带来的无缝体验
确定时延引擎和高性能IPC技术实现系统天生流畅
确定时延引擎可在任务执行前分配系统中任务执行优先级及时限进行调度处理,优先级高的任务资源将优先保障调度,应用响应时延降低25.7%,鸿蒙微内核结构小巧的特性使IPC(进程间通信)性能大大提高,进程通信效率较现有系统提升5倍
基于微内核架构重塑终端设备可信安全
Harmony OS采用全新的微内核设计,拥有更强的安全特性和低时延等特点
Harmony OS架构的系统安全性主要体现在搭载Harmony OS的分布式终端上,可以保证”正确的人,通过正确的设备,正确地使用数据”。这里通过”分布式多端协同身份认证”来保证”正确的人”,通过”在分布式终端上构筑可信运行环境”来保证”正确的设备”,通过”分布式数据在跨终端流动的过程中,对数据进行分类分级管理”来保证”正确的使用数据”
通过统一IDE支撑一次开发,多端部署,实现跨终端生态共享
2.5 嵌入式数据库
与传统数据库相比,嵌入式数据库系统有以下几个主要特点:
- 嵌入式
- 实时性
- 移动性
- 伸缩性
按照数据库存储位置的不同而进行分类是目前广泛采用的分类方法,它可以分为三类
- 基于内存方式(Main Memory Database System,MMDB)
- 基于文件方式(File Database,FDB)
- 基于网络方式(Netware Database,NDB)
定义 | 特点 | |
---|---|---|
基于内存的数据库MMDB | 基于内存的数据库系统是 实时系统和数据库系统的有机结合 |
内存数据库是支持实时事务的最佳技术,其本质 特征是以其”主拷贝”或”工作版本”常驻内存,即 活动事务只与实时内存数据库的内存拷贝打交道 |
基于文件的数据库FDB | 基于文件的数据库系统就是以文件 方式存储数据库数据,即数据按照 一定格式存储在磁盘中,使用时由 应用程序通过相应的驱动程序 甚至直接对数据文件进行读写 |
这种数据库的访问方式是被动式的,只要 了解其文件格式,任何程序都可以直接读取, 因此它的安全性很低,虽然文件数据库存在 诸多弊端,但是,可以满足嵌入式系统在 空间、时间等方面的特殊要求 |
基于网络的数据库NDB | 基于网络的数据库系统是基于手机 4G/5G的移动通信基础之上的数据库 系统,在逻辑上可以把嵌入式设备 看作远程服务器的一个客户端 |
嵌入式网络数据库系统的特点是: 无需解析SQL语句,支持更多的SQL操作, 客户端小、无需支持可剪裁性,有利于代码重用 |
第三章 计算机网络 2-5
考点:
- 网络技术、TCP/IP协议簇、网络规划与设计
3.1 计算机网络技术概述
3.1.1 网络指标
计算机网络性能指标可以从速率、带宽、吞吐量和时延等不同方面来度量计算机网络的性能
【时延】
时延是指数据(一个报文、分组甚至比特)从网络(或链路)的一端传送到另一端所需的时间,时延是个很重要的性能指标,它有时也称为延迟或迟延。网络中的时延由以下几个不同部分组成:发送时延、传播时延、处理时延、排队时延等
网络延迟 = 处理延迟 + 排队延迟 + 发送延迟 + 传播延迟。如果不考虑网络环境,服务器等延迟等主要因素是队列延迟和磁盘I/O延迟
网络分类
- 局域网(LAN) 也称 园区网,是封闭的
- 城域网(MAN)
- 广域网(WAN)
- 因特网(Internet)
- 无线个人网(WPAN, 802.5, Bluetooth)
- 无线局域网(WLAN, 802.11, Wi-Fi)
- 无线城域网(WMAN, 802.16, WiMax)
- 无线广域网(WWAN, 3G/4G/5G) 移动通信网络
局域网是指在有限地理范围内将若干计算机通过传输介质互联成的计算机组(即通信网络),通过网络软件实现计算机之间的文件管理、应用软件共享、打印机共享、工作组内的日程安排、电子邮件和传真通信服务等功能。局域网是封闭型的
局域网专用性非常强,具有比较稳定和规范的拓扑结构。常见的局域网拓扑结构有星状结构、树状结构、总线结构和环形结构
特点 | 缺点 | |
---|---|---|
星状结构 | 网络中的每个结点设备都以中心结点为中心 通过连接线与中心结点相连,如果一个结点设备 需要传输数据,它首先必须通过中心结点 中心结点是控制中心,任意两个结点间的通信 最多只需两步;传输速度快、网络结构简单、 建网容易、便于控制和管理 |
可靠性低,网络共享能力差,并且 一旦中心结点出现故障则导致全网瘫痪 |
树状结构 | 被称为分级的集中式网络;网络成本低, 结构简单;在网络中,任意两结点之间 不产生回路,每个链路都支持双向传输 结点扩充方便、灵活、方便寻查链路路径 |
除叶结点及其相连的链路外,任何一个 工作站或链路产生故障都会影响 整个网络系统的正常运行 |
总线结构 | 网络是将各个结点设备和一根总线相连 网络中所有的结点设备都是通过 总线进行信息传输的 |
作为数据通信必经的总线的负载 能力是有限度的,这是由通信媒体本身的 物理性能决定的,它的故障 将影响总线上每个结点的通信 |
环形结构 | 网络中各结点通过一条首尾相连的 通信链路连接起来,形成一个闭合环形 结构网;网络中各结点设备的地位 相同,信息按照固定方向单向流动, 两个结点之间仅有一条通路,系统中 无信道选择问题 |
网络不便于扩充,系统响应延时长, 且信息传输效率相对较低, 任一结点的故障将导致物理瘫痪 |
网状结构 | 任何结点彼此之间均存在一条通信 链路,任何结点**故障不会影响其他结点 **之间的通信(可靠性高) |
网络布线较为繁琐,且建设成本高, 控制方法复杂 |
3.1.2 5G技术
5G网络的主要特征
- 服务化架构:5G核心网中引入了SBA服务化架构,实现网络功能的灵活定制和按需组合
- 网络切片:通过网络切片技术在单个独立的物理网络上切分出多个逻辑网络,从而避免了为每一个服务建设一个专用的物理网络,极大低降低了网络和运维成本
3.2 组网技术
OSI七层模型:
层次 | 名称 | 主要功能 | 主要设备及协议 |
---|---|---|---|
7 | 应用层 | 实现具体的应用功能 | POP3、FTP、HTTP、Telnet、SMTP、DHCP、TFTP、SNMP、DNS |
6 | 表示层 | 数据的格式与表达、加密、压缩 | |
5 | 会话层 | 建立、管理和终止会话 | |
4 | 传输层 | 端到端的连接 | TCP、UDP |
3 | 网络层 | 分组传输和路由选择 | 三层交换机、路由器、ARP、RARP、IP、ICMP、IGMP |
2 | 数据链路层 | 传送以帧为单位的信息,以太网帧最小长度为64字节 | 网桥、交换机(多端口网桥)、网卡、PPTP、L2TP、SLIP、PPP |
1 | 物理层 | 二进制传输 | 中继器、集线器(多端口中继器) |
3.2.1 交换技术
数据在网络中转发通常离不开交换机,交换机的功能包括:集线功能、中继功能、桥接功能、隔离冲突域功能等
基本交换原理
交换机是一种基于MAC地址识别,能完成封装转发数据包功能的网络设备,交换机可以”学习”MAC地址,并把其存放在内部地址表中,通过在数据的始发者和目标接收者之间建立临时的交换路径,使数据直接由源地址到达目的地址
交换机的所有端口属于同一个广播域,不同端口属于不同的冲突域
集线器所有端口属于同一个冲突域
交换机需要实现的功能如下所述:
- 转发路径学习:根据收到数据中的源MAC地址建立该地址同交换机端口的映射写入MAC地址表中
- 数据转发:如果交换机根据数据中的目的MAC地址在建立好的MAC地址表中查询到了,就向对应端口进行转发
- 数据泛洪:如果数据中的目的MAC地址不在MAC地址表中,则向所有端口转发也就是泛洪,广播帧和组播帧向所有端口(不包括源端口)进行转发
- 链路地址更新:MAC地址表会每隔一定时间(如300s)更新一次
3.3 TCP/IP协议族
3.3.1 常规TCP/IP协议
TCP/IP模型 | OSI七层模型 |
---|---|
应用层 | 应用层 |
表示层 | |
会话层 | |
传输层 | 传输层 |
网际层 | 网络层 |
网络接口层 | 数据链路层 |
物理层 |
网际层是整个TCP/IP体系结构的关键部分,其功能是使主机可以把分组发往任何网络并使分组独立地传向目标
TCP和UDP
TCP:可靠的传输层协议
3次握手 4次挥手, 差错校验 错误重传 顺序检查 可靠性高,性能差
UDP:不可靠的传输层协议
可靠性差,性能较好(直播)

- POP3:110端口,邮件收取
- SMTP:25端口,邮件发送
- FTP:20数据端口/21控制端口,文件传输协议
- HTTP:80端口,超文本传输协议,网页传输
- DHCP:67端口,IP地址自动分配
- SNMP:161端口,简单网络管理协议
- DNS:53端口,域名解析协议,记录域名与IP的映射关系
- TCP:可靠的传输层协议
- UDP:不可靠的传输层协议
- ICMP:因特网控制协议,PING命令来自该协议
- IGMP:组播协议
- ARP:地址解析协议,IP地址转换为MAC地址
- RARP:反向地址解析协议,MAC地址转IP地址
TCP协议可以依据端口号将报文交付给上层的某一进程,可以对应用层进程进行寻址
3.3.2 DHCP
动态主机配置协议
客户机/服务器模型(C/S)
分配方式
- 固定分配【管理员分配】
- 动态分配【有效期限的IP地址】
- 自动分配【无限长的IP地址】
无效地址:169.254.X.X 和 0.0.0.0

- DHCP发现:DISCOVER
- DHCP提供:OFFER
- DHCP请求:REQUEST
- DHCP确认:Acknowledge, ACK
- DHCP拒绝:NACK
- 客户端释放:RELEASE
- 客户端拒绝分配IP:Decline
租约默认为8天
当租约过半时,客户机需要向DHCP服务器申请续租
当租约超过87.5%时,如果仍然没有和当初提供IP的DHCP服务器联系上,则开始联系其他的DHCP服务器
3.3.3 DNS
域名系统
主机向本地域名服务器的查询采用递归查询
本地域名服务器向根域名服务器的查询通常采用迭代查询
递归查询:服务器必须回答目标IP与域名的映射关系
迭代查询:服务器收到一次迭代查询回复一次结果,这个结果不一定是目标IP与域名的映射关系,也可以是其他DNS服务器的地址
Linux系统中,DNS配置文件resolv.conf的关键字主要有四个,分别是:
- nameserver:定义DNS服务器的IP地址
- domain:定义本地域名
- search:定义域名的搜索列表
- sortlist:对返回的域名进行排序
3.4 网络规划与设计
3.4.1 网络冗余设计
在网络冗余设计中,对于通信线路常见的设计目标主要有两个:一个是备用路径,另一个是负载分担
备用路径
提高可用性,由路由器、交换机等设备之间的独立备用链路构成,一般情况下备用路径仅仅在主路径失效时投入使用,设计时主要考虑:
- 备用路径的带宽
- 切换时间
- 非对称
- 自动切换
- 测试
负载分担
是对备用路径方式的扩充,通过并行链路提供流量分担(冗余的形式)来提高性能,主要的实现方法是利用两个或多个网络接口和路径来同时传递流量,设计时注意考虑:
- 网络中存在备用路径、备用链路时,可以考虑加入负载分担设计
- 对于主路径、备用路径都相同的情况,可以实施负载分担的特例——负载均衡
- 对于主路径、备用路径不相同的情况,可以采用策略路由机制,让一部分应用的流量分摊到备用路径上
第四章 数据库系统 2-4
考点:
- 数据库设计、规范化理论、分布式数据库、关系代数、数据仓库、事务处理
4.1 数据库概述
4.1.1 数据库模式

1、三级模式
- 视图
- 表
- 文件
2、两级映射关系分别保障了数据的独立性
- 逻辑独立性
- 物理独立性
3、聚簇索引
- 影响内模式
4.1.2 分布式数据库

分布性:数据在多个物理节点存放
副本:冗余提高,可用性、数据持久性
1、可用性
当某个结点故障 其他结点可用 系统整体仍然可以用
2、性能
多副本可以读,就近
3、自治性
4、共享性
- 数据独立性:除了数据的逻辑独立性与物理独立性外,还有数据分布独立性(分布透明性)
- 集中与自治共享结合的控制结构:各局部的DBMS可以独立地管理局部数据库,具有自治的功能,同时,系统由设有集中控制机制,协调各局部DBMS的工作,执行全局应用
- 适当增加数据冗余度:在不同的场地存储同一数据的多个副本,可以提高系统的可靠性和应用性,同时也能提高系统性能(提高系统的可用性,即当系统中某个结点发生故障时,因为数据有其他副本在非故障场地上,对其他所有场地来说,数据仍然是可用的,从而保证数据的完备性)
- 全局的一致性、可串行性和可恢复性
透明性分类
- 分片透明:用户不必关心数据分片不分片,怎么分片
- 位置透明:用户不必关心数据存放在何处
- 复制透明:用户不必关心各个结点数据的复制与同步更新
- 逻辑透明(局部映像透明):用户不必关心局部DBMS支持哪种数据模型、使用哪种语言

两阶段提交协议2PC
- 2PC事务提交的两个阶段
- 表决阶段,目的是形成一个共同的决定
- 执行阶段,目的是实现这个协调者的决定
- 两条全局提交规则
- 只要有一个参与者撤销事务,协调者就必须作出全局撤销决定
- 只要所有参与者都同意提交事务,协调者才能作出全局提交决定
4.2 数据库设计阶段
4.2.1 E-R模型

2个实体集 之间的关系
1:1 班级,班长
1:* 班级,学生
*: * 学生,课程
4.2.2 概念结构设计

- 集成的方法:
- 多个局部E-R图一次集成
- 逐步集成,用累加的方式一次集成两个局部E-R
- 集成产生的冲突及解决办法:
- 属性冲突:包括属性域冲突和属性取值冲突【同一对象】
- 命名冲突:包括同名异义和异名同义【同一对象】
- 结构冲突:包括同一对象在不同应用中具有不同的抽象,以及同一实体在不同局部E-R图中所包含的属性个数和属性排列次序不完全相同
4.2.3 逻辑结构设计

E-R图向关系模式的转换
- 实体向关系模式的转换
- 联系向关系模式的转换
关系模式的规范化
确定完整性约束(确保数据的正确性)
- 实体完整性约束
- 参照完整性约束
- 用户自定义完整性约束
- 触发器
用户视图的确定(提高数据的安全性和独立性)
- 根据数据流图确定处理过程使用的视图
- 根据用户类别确定不同用户使用的视图
应用程序设计
目或度:关系模式中属性的个数
候选码(候选键)
主码(主键)
主属性与非主属性:组成候选码的属性就是主属性,其他的就是非主属性
外码(外键)
全码(ALL-KEY):关系模式的所有属性组是这个关系的候选码
简单属性与复合属性、派生属性、多值属性
候选键:唯一标识元组,且无冗余
- 是属性集合、可以有多个属性,可以只有一个属性
- 可以有一个,可以有多个
主键:任选一个
外键:其他关系的主键
4.3 关系代数

1、关系代数的运算结果
- 并交差
- 笛卡尔积
- 自然连接
2、笛卡尔积和自然连接的等价判断
3、关系代数与查询语句的关系
4、查询性能
关系模式的运算
水平:元组行/记录/实例
垂直:属性列
二元运算符
- 运算对象和运算结构是同构
4.3.1 投影和选择[一元运算符]

投影[SELECT]:选择列
- 运算结果:表结构发生变化
选择[WHERE]:选择行
- 运算结果:表结构不变
SELECT ...
投影
FROM 表名
WHERE ...
选择
4.3.2 笛卡尔积[二元运算符]
所有列保留,所有行全映射

运算对象、运算结果不要求同构
结果:列数是二者之和
同名属性列:表名.列名表示
用列序号表示属性名
4.3.3 自然连接[二元运算符]

不要求同构
结果:
- 列数:是二者之和减去重复列数
- 行值:同名属性列取值相等
运算对象尽可能先压缩
理论上自然连接的性能优于笛卡尔积
4.4 规范化理论
1、 属性集合、函数依赖
2、公理体系
3、候选键的判断、主属性、非主属性的判断
4、规范化程度 范式
5、模式分解的判断
4.4.1 规范化理论基本概念
非规范化的关系模式,可能存在的问题包括:数据冗余、更新异常、插入异常、删除异常
数据冗余
存储空间浪费
一致性问题,更新不完全
主键为空,插入异常
删除异常:删前面丢后面,删后面丢前面
设R(U, F)是属性U上的一个关系模式,X和Y是U的子集,r为R的任一关系,如果对于r中的任意两个元组u、v,只要有u[X] = v[X],就有u[Y] = V[Y],则称X函数决定Y,或称Y函数依赖于X,记为X –> Y
学号 –> 系号 系号 –> 系名
函数依赖存在于属性之间

4.4.2 Armstrong公理

4.4.3 候选键
唯一标识元组,且无冗余,通过候选键可以直接或间接推出所有属性
可以有多个,可以是单属性也可以是多属性的集合
主属性与非主属性:组成候选码的属性就是主属性,其他的就是非主属性
主键:从候选键中选择一个 — 实体完整性 主键唯一且非空
外键:其他关系的主键 — 参照完整性 引用其他关系的主键
- 将关系模式的函数依赖关系用”有向图”的方式表示
- 找入度为0的属性,并以该属性集合为起点,尝试遍历有向图,若能正常遍历图中所有结点,则该属性集即为关系模式的候选键
- 若入度为0的属性集不能遍历图中所有结点,则需要尝试性的将一些中间结点(即有入度,也有出度的结点)并入入度为0的属性集中,直至该集合能遍历所有结点,集合为候选键
4.4.4 范式

**第一范式(1NF)**:在关系模式R中,当且仅当所有域只包含原子值,即每个属性都是不可再分的数据项,则称关系模式R是第一范式
**第二范式(2NF)**:当且仅当实体E是第一范式(1NF),且每一个非主属性完全依赖主键(不存在部分依赖)时,则称实体E是第二范式
**第三范式(3NF)**:当且仅当实体E是第二范式(2NF),且E中没有非主属性传递依赖于候选码时,则称实体E是第三范式
**BC范式(BCNF)**:设R是一个关系模式,F是它的依赖集,R属于BCNF当且仅当其F中每个依赖的决定因素必定包含R的某个候选码
4.4.5 模式分解
- 保持函数依赖分解
设数据库模式ρ={R1, R2, …, Rk}是关系模式R的一个分解,F是R上的函数依赖集,ρ中每个模式Ri上的FD集是Fi,如果{F1, F2, …, Fk}与F是等价的(即相互逻辑蕴含),那么称分解ρ保持FD
- 无损分解
有损:不能还原,无损:可以还原
无损连接分解:指将一个关系模式分解成若干个关系模式后,通过自然连接和投影等运算仍能还原到原来的关系模式
如果没有同名属性列 一定有损
- 保持函数依赖分解
例一、有关系模式R(A,B,C), F = {A -> B, B -> C}, 将其拆分为: R1(A, B), R2(B, C), 是否保持函数依赖
F1 = {A -> B} F2 = {B -> C}
F1并F2与原F一致,保持了函数依赖
例二、有关系模式R(A,B,C), F = {A -> B, B -> C, A -> C}, 将其拆分为: R1(A, B), R2(B, C), 是否保持函数依赖
F1 = {A -> B} F2 = {B -> C}
F1并F2与原F不一致,但是可以推导出 A -> C,保持函数依赖
例三、有关系模式R(A,B,C), F = {A -> B, B -> C, A -> C}, 将其拆分为: R1(A, B), R2(A, C), 是否保持函数依赖
F1 = {A -> B} F2 = {A -> C}
F1并F2与原F不一致,也无法推导出 B -> C,没有保持函数依赖
例四、有关系模式R(A,B,C,D,E), F = {A -> B, D -> E}, 将其拆分为: R1(A, B, C), R2(D, E), 是否保持函数依赖
保持函数依赖但是无法还原,即有损分解

4.5 数据控制
数据控制功能包括:
- 安全性(security)
- 完整性(integrality)
- 并发控制(concurrency control)
- 故障恢复(recovery from failure)
4.5.1 安全性
措施 | 说明 |
---|---|
用户标识和鉴定 | 最外层的安全保护措施,可以使用用户账户、口令及随机数检验等方式 |
存取控制 | 对用户进行授权,包括操作类型(如查找、插入、删除、修改)等动作 和数据对象(主要是数据范围)的权限 |
密码存储和传输 | 对远程终端信息用密码传输 |
视图的保护 | 对视图进行授权 |
审计 | 使用一个专用文件或数据库,自动将用户对数据库的所有操作记录下来 |
4.5.2 完整性
- 实体完整性约束:规定基本关系的主属性不能取空值
- 参照完整性约束:关系与关系间的引用,其他关系的主键或空值
- 用户自定义完整性约束:应用环境决定
✅触发器
在某个数据对象上添加监听 出现变化 联动修改其他数据对象
4.5.3 并发控制

4.5.4 故障恢复
- 冷备份也称为静态备份,是将数据库正常关闭,在停止状态下,将数据库的文件全部备份(复制)下来
- 热备份也称为动态备份,是利用备份软件,在数据库正常运行的状态下,将数据库中的数据文件备份出来
冷备份:
- 优点:非常快速的备份方法(只需复制文件),容易归档(简单复制即可),容易恢复到某个时间点上(只需将文件再复制回去),能与归档方法相结合,做数据库”最佳状态”的恢复,低度维护,高度安全
- 缺点:单独使用时,只能提供到某一时间点上的恢复,在实施备份的全过程中,数据库必须要作备份而不能做其他工作,若磁盘空间有限,只能复制到磁带等其他外部存储设备上,速度会很慢,不能按表或按用户恢复
热备份:
- 优点:可在表空间或数据库文件级备份,备份到时间短,备份时数据库仍可使用,可达到秒级恢复(恢复到某一时间点上),可对几乎所有数据库实体作恢复,恢复是快速的
- 缺点:不能出错,否则后果严重,若热备份不成功,所得结果不可用于时间点的恢复,因难于维护,所以要特别小心,不允许”以失败告终”
完全备份:备份所有数据
差量备份:仅备份上一次完全备份之后变化的数据
增量备份:备份上一次备份之后变化的数据
增量备份恢复速度慢,差量备份,文件会越来越大
如果全用增量,周一全备份,周五恢复,需要周2到周5四天的备份数据,链太长,任意一个丢失都会影响
如果只用差量备份,每天备份都要和周一全备份进行对比,到周五,差量几乎是一次完整备份了,空间开销太大
日志文件:事务日志是针对数据库改变所作的记录,它可以记录针对数据库的任何操作,并将记录结果保存在独立的文件中
周日 | 周一 | 周二 | 周三 | 周四 | 周五 | 周六 |
---|---|---|---|---|---|---|
全备 | 增备 | 增备 | 差备 | 增备 | 差备 | 增备 |
故障关系 | 故障原因 | 解决方法 |
---|---|---|
事务本身的可预期故障 | 本身逻辑 | 在程序中预先设置Rollback语句 |
事务本身的不可预期故障 | 算术溢出、违反存储保护 | 由DBMS的恢复子系统通过日志, 撤销事务对数据库的修改, 回退到事务初始状态 |
系统故障 | 系统停止运转 | 通常使用检查点法 |
介质故障 | 外存被破坏 | 一般使用日志重做业务 |
第五章 法律法规与标准化 3
考点:
- 著作权保护期限、侵权判定、商标法、商业秘密、专利法
第六章 数学与经济管理 0-1
考点:
- 数学建模、线性规划、随机模拟函数
第七章 专业英语 5
- 软件架构风格、软件架构、信息系统设计、DFD
第八章 系统工程与信息系统基础 3-7
考点:
- 信息工程概念及方法、信息系统分类、信息系统战略规划、电子政务、企业信息化方法、电子商务、企业应用集成
8.1 系统工程概念
系统工程是一种组织管理技术
系统工程是为了最好的实现系统的目的,对系统的组成要素、组织结构、信息流、控制机构进行分析研究的科学方法
系统工程从整体出发、从系统观念出发,以求【整体最优】
系统工程利用计算机作为工具,对系统结构、元素、信息和反馈等进行分析,以达到最优规划、最优设计、最优管理和最优控制的目的
系统工程方法是一种现代的科学决策方法
系统工程方法 | 关键点 |
---|---|
霍尔三维结构 “硬科学”方法论 |
逻辑维:逻辑维即解决问题的逻辑过程 时间维:时间维即是工程进程 知识维:知识维即是专业科学知识 应用场景:组织和管理大型工程建设项目 |
切克兰方法 “软科学”方法论 |
核心不是”最优化”,而是”比较”和”探寻” 7步骤:认识问题、根底定义、建立概念模型、比较及探寻、 选择、设计与实施、评估与反馈 |
并行工程方法 | “制造过程”与”支持过程”并行 强调三个方面:产品设计开发期间,最快速度按质完成 各项工作问题协调解决,适当的信息系统工具 |
综合集成法 | 钱学森命名,【简单系统】和【巨系统】 四原则:整体论原则、相互联系原则、有序性原则、动态原则 |
WSR系统方法 | 实践准则:【懂物理】-【明事理】-【通人理】 |
系统工程生命周期阶段
探索性研究 - 概念阶段 - 开发阶段 - 生产阶段 - 使用阶段 - 保障阶段 - 退役阶段
系统工程生命周期方法
计划驱动方法:需求 -> 设计 -> 构建 -> 测试 -> 部署
渐进迭代式开发:提供连续交付以达到期望的系统
精益开发:起源于丰田,是一个动态的、知识驱动的,以客户为中心的过程·
敏捷开发:更好的灵活性
8.2 信息系统
8.2.1 信息系统生命周期
产生阶段(立项阶段):提出建设信息的初步想法、对需求进行调研和分析
开发阶段:单个系统开发
- 总体规划
- 系统分析
- 系统设计
- 系统实施
- 系统验收
运行阶段:通过验收、移交之后
消亡阶段:更新改造、功能扩展、报废重建
8.2.2 信息系统建设原则
- 高层管理人员介入原则
- 用户参与开发原则
- 自顶向下规划原则
- 工程化原则
- 其他原则
8.2.3 信息系统开发方法
原型法【需求阶段】
- 结构化法 -> 面向对象方法 -> 面向服务的方法
其他信息系统开发方法
- 形式化方法:数学模型
- 统一过程方法【UP】
- 敏捷方法
- 基于架构的开发方法【ABSD】
8.2.4 信息系统的分类
信息系统的分类 | 关键点 |
---|---|
业务处理系统【TPS】 | 早期最初级的信息系统【20世纪50-60年代】 功能:数据输入、数据处理【批处理、OLTP】、数据库维护、文件报表产生 |
管理信息系统【MIS】 | 高度集成化的人机信息系统 金字塔结构:分多个层级 |
决策支持系统【DSS】 | 由语言系统、知识系统和问题处理系统组成 用于辅助决策、支持决策 |
专家系统【ES】 | 知识 + 推理 = 专家系统,人工智能的一个重要分支 |
办公自动化系统【OAS】 | 由计算机设备、办公设备、数据通信及网络设备、软件系统组成 |
企业资源计划【ERP】 | 打通供应链,集成,整合 |
8.3 电子政务类型
电子政务主要有3类角色:政府(Government)、企事业单位(Business)及公民(Citizen)
如果有第四类 就是公务员(Employee)
类型 | 应用 |
---|---|
G2G | 基础信息的采集、处理和应用,如:人口信息、地理信息 及政府间:计划管理、财务管理、通信系统、各级政府决策支持 |
G2B | 政府给企业单位颁发【各种营业执照、许可证、合格证、质量认证】 |
B2G | 企业向政府缴税 企业向政府供应各种商品和服务【含竟/投标】 企业向政府提建议、申诉 |
G2C | 社区公安和水、火、天灾等与公共安全有关的信息 户口、各种证件和牌照的管理 |
C2G | 个人应向政府缴纳的各种税款和费用 个人向政府反馈民意【征求群众意见】 报警服务(盗贼、医疗、急救、火警等) |
G2E | 政府内部管理系统 |
8.3.1 企业信息化与电子商务
信息化的概念
- 信息化是指在国家宏观信息政策指导下, 通过信息技术开发、信息产业的发展、信息人才的配置,最大限度地利用信息资源以满足全社会的信息需求,从而加速社会各个领域的共同发展以推进信息社会的过程
- 信息化的主体是全体社会成员(政府、企业、团体和个人),时域是一个长期过程,空域是经济和社会的一切领域、手段是先进社会生产工具
信息化的目的及涉及的三项创新
企业信息化的具体目标是优化企业业务活动使之更加有效,它的根本目的在于提高企业竞争能力,使得企业具有平稳和有效的运作能力,对紧急情况和机会做出快速反应,为企业内外部用户提供有价值的信息
【技术创新】在生产工艺设计、产品设计中使用计算机辅助设计系统,并通过互联网及时了解和掌握创新的技术信息,加快技术向生产的转化,还有,生产技术与信息技术相结合,能够大幅度地提高技术水平和产品的竞争力
【管理创新】按照市场发展的要求,要对企业现有的管理流程重新整合,从作为核心的财务、资金管理、转向技术、物资、人力资源的管理,并延伸到企业技术创新、工艺设计、产品设计、生产制造过程的管理,进而还要扩展到客户关系管理、供应链的管理乃至发展到电子商务
【制度创新】那些不适应企业信息化的管理体制、管理机制和管理制度必须得到创新
信息化需求的3个层次
组织对信息化的需求是【组织信息化的原动力】
- 战略需求:目标【提升组织的竞争能力】
- 运作需求:【实现信息化战略目标】的需要、【运作策略】的需要、【人才培养】的需要
- 技术需求:信息技术层面上对【系统的完善、升级、集成】
企业信息化方法
- 业务流程重构方法:”彻底的、根本性的”重新设计流程
- 核心业务应用方法:围绕核心业务推动信息化
- 信息系统建设方法:建设信息系统作为企业信息化的重点和关键
- 主题数据库方法:建立面向企业的核心业务的数据库,消除”信息孤岛”
- 资源管理方法:切入点是为企业资源管理提供强大的能力。如: ERP、SCM
- 人力资源投资方法:人力资本理论【注意不是人力资源管理】把一部分企业的优秀员工看作是一种资本,能够取得投资收益
信息系统战略规划方法
- 第一阶段:以数据处理为核心 围绕职能部门需求
- 第二阶段:以企业内部MIS为核心 围绕企业整体需求
- 第三阶段:综合考虑企业内外环境 以集成为核心 围绕企业战略需求
企业信息化与电子商务
企业信息化工程核心技术:【信息技术】【自动化技术】【现代管理技术】【制造技术】
ERP:企业资源计划
CRM:客户关系管理-核心思想就是以客户为中心,目的是提高收入
SCM:供应链管理:理念是强强联合,整合和优化”三流”,打通企业间”信息孤岛”,严格的数据交换标准
- 信息流【核心】
- 需求信息流(需方到供方)
- 供应信息流(供方到需方)
- 资金流【辅助】
- 物理【辅助】
- 信息流【核心】
BI:商业智能
数据库 数据仓库【特点】 面向应用的:按应用组织数据 面向主题:按主题组织数据 零散的:一个应用对应一个数据库 集成的:整个企业对应一个数据仓库 CRUD:增删改查是常态 相对稳定的(非易失的):查询为主、基本无修改与删除 解决当下应用问题 反映历史变化(时变的):各个阶段信息都有,并可预测未来趋势
数据挖掘
- 关联分析:挖掘出隐藏在数据间的相互关系
- 序列模式分析:侧重点是分析数据间的前后关系(因果关系)
- 分类分析:为每一个记录赋予一个标记再按标记分类
- 聚类分析:分类分析法的逆过程
数据湖
数据湖是一个存储企业的各种各样原始数据的大型仓库,其中的数据可供存取、处理、分析和传输、
原始数据 -> 数据湖:【结构化数据】表哥数据 【非结构化数据】图片、视频、音频、文档等 -> 业务数据处理/数据分析处理
数据仓库仅支持数据分析处理,数据湖既支持数据分析处理,也支持事务处理
维度 | 数据仓库 | 数据湖 |
---|---|---|
数据 | 清洗过的数据 结构化的数据 |
原始数据 结构化、半结构化数据 |
模式 | 数据存储之前定义数据模式 数据集成之前完成大量工作 数据的价值提取明确 |
数据存储之后定义数据模式 提供敏捷、简单的数据集成 数据的价值尚未明确 |
存取方法 | 标准SQL接口 | 应用程序、类SQL的程序 |
优势 | 多数据源集成 干净、安全的数据 转换一次,多次使用 |
无限扩展性 并行执行 支持编程框架 数据经济 |
- BPR【业务流程重组】:颠覆原有流程、彻底性的再设计
- BPM【业务流程管理】:使用PDCA循环,持续改进 plan、do、check、act
8.4 企业应用集成
EAI
系统未互联互通,存在【信息孤岛】,这种架构也被称为【烟囱架构】
对于如何划分和规范EAI层次的定义,业界并没有一个统一的标准

企业门户
- 企业信息门户:使员工/合作伙伴/客户/供应商都能够访问企业内部网络和因特网存储的各种自己所需的信息【统一访问入口】
- 企业知识门户:企业网站的基础上增加知识性内容【企业知识库】
- 企业应用门户:以商业流程和企业应用为核心,把商业流程中功能不同的应用模块通过门户技术集成在一起【企业信息系统的网上集成界面】
- 垂直门户:为某一特定的行业服务的,传送的信息只属于人们感兴趣的领域
消息集成:数据量小,交互频繁,立即地,异步
共享数据库:交互频繁,立即地,同步
文件传输:数据量大,交互频度低,即时性要求低(月末、年末)
电子商务类型
电子商务主要有2类角色:企业及个人
B2B: 1688 C2C: 咸鱼 B2C: 京东、天猫 C2B: 个人给企业提供咨询服务 O2O(Online To Offline 线上对线下): 团购
数字化转型
【数字化】是新一代信息技术真正的实现推动整个【商业模式的变革】,推动产业链的重构,推动改进企业与消费者之间的关系,以及企业与合作伙伴之间的关系
- 初始级发展阶段 数码化:信息的数字化,记录、存储、传输数码化
- 单元级发展阶段 数量化:提升单项业务的运行规范性和效率
- 流程级发展阶段 数字化:关键业务流程及关键业务与设备设施、软硬件、行为活动等要素间的集成优化
- 网络级发展阶段 数模化:组织(企业)级数字化和产业互联网网格化,实现以数据为驱动的业务模式创新
- 生态级发展阶段 数用化:生态级数字化和泛在物联网级网络化,推动与生态合作伙伴间资源、业务、能力等要素的开发共享和协同合作
智能制造体系
工业化和信息化融合
第九章 软件工程 17-22
考点:
- 软件生命周期、信息系统开发方法、开发模型、逆向工程、需求工程、面向对象基础、UML、SysML、软件设计、业务流程设计、软件维护、软件测试、软件过程改进、遗留系统、软件开发环境、范围管理、配置管理、进度管理
9.1 软件过程模型
- 瀑布模型
- V模型【瀑布变种】
- 原型模型
- 螺旋模型【原型 + 瀑布】
- 构件组装模型/基于构件的开发方法
- 快速应用开发RAD【瀑布 + 构件组装】
- 统一过程/统一开发方法
- 敏捷开发方法
9.1.1 瀑布模型

【特点】
- 严格区分阶段,每个阶段因果关系紧密相连
- 只适合需求明确的项目
【缺点】
- 软件需求完整性、正确性难确定
- 严格串行化,很长时间才能看到结果
- 瀑布模型要求每个阶段一次性完成解决该阶段工作,这不现实
9.1.2 原型模型

原型模型两个阶段:
- 原型开发阶段
- 目标软件开发阶段
9.1.3 V模型

9.1.4 W模型

9.1.5 螺旋模型

9.1.6 构件组装模型

【优点】易扩展、易重用、降低成本、安排任务更灵活
【缺点】构件设计要求经验丰富的架构师、设计不好的构件难重用、强调重用可能牺牲其他指标(如性能)、第三方构件质量难控制
9.2 基于构件的软件工程【CBSE】
应该具备的特征
- 可组装性:所有外部交互必须通过公开定义的接口进行
- 可部署性:构件总是二进制形式的,能作为一个独立实体在平台上运行
- 文档性:用户根据文档来判断是否满足需求
- 独立性:可以在无其他特殊构件的情况下进行组装和部署
- 标准化:符合某种标准化的构件模型
9.2.1 构件的组装
(一般都要借助胶水代码)
1、顺序组装:按顺序调用已经存在的构件,可以用两个已经存在的构件来创造一个新的构件
2、层次组装:被调用构件的”提供”接口必须和调用构件的”请求”接口兼容
3、叠加组装:多个构件合并形成新构件,新构件整合原构件的功能,对外提供新的接口
组装可能出现3种不兼容:参数不兼容、操作不兼容、操作不完备
9.2.2 快速应用开发模型(RAD)
SDLC(瀑布) + CBSD(基于构件) -> RAD
能够快速的原因:基于构件
9.2.3 统一过程(up)
- 用例驱动
- 以架构为中心
- 迭代和增量
初始:定义最终产品视图和业务模型,确定系统范围
细化:设计及确定系统架构,制定工作计划及资源要求
构造:开发剩余构件和应用程序功能,把这些构件集成为产品,并进行详细测试
移交:确保软件对最终用户是可用的,进行β测试,制作产品发布版本

9.2.4 敏捷方法


9.3 逆向工程

与逆向工程相关的概念有重构、设计恢复、再工程和正向工程
- 重构/重组:重构是指在【同一抽象级别】上【转换系统描述形式】
- 设计恢复:设计恢复是指借助工具从已有程序中抽象出有关数据设计、总体结构设计和过程设计等方面的信息
- 逆向工程:是分析工程,力图在比源代码更高抽象层次上建立程序的表示过程,逆向工程是设计的恢复工程
- 正向工程:是指不仅从现有系统中恢复设计信息,而且使用该信息去改变或重构现有系统,以改善其整体质量
- 再工程/重构工程:是对现有系统的重新开发过程,包括逆向工程、新需求的考虑过程和正向过程三个步骤
9.4 净室软件工程
- 净室即无尘室、洁净室,也就是一个受控污染级别的环境
- 使用盒结构规约(或形式化方法)进行分析和设计建模,并且强调将正确性验证,而不是测试,作为发现和消除错误的主要机制
- 使用统计的测试来获取认证被交付的软件等可靠性所必需的出错率信息
【缺点】
- 太理论化,正确性验证的步骤比较困难且耗时
- 开发小组不进行传统的模块开发,这是不现实的
- 脱胎于传统软件工程,不可避免带有传统软件工程的一些弊端
9.5 需求工程
9.5.1 需求开发
需求工程阶段划分
软件需求是指用户对系统在功能、行为、性能、设计约束等方面的期望
- 需求开发:
- 需求获取
- 需求分析
- 形成需求规格【形成SRS】
- 需求确认与验证【形成需求基线(经过评审的SRS)】
- 需求管理:【变更控制、版本控制、需求跟踪、需求状态跟踪】
- 需求管理是对【需求基线】进行管理
需求获取
方法 | 特点 |
---|---|
用户面谈 | 1对1-3,有代表性的用户,了解主观想法,交互好 成本高,要有领域知识支撑 |
联合需求计划(JRP) | 高度组织的群体会议,各方参加,了解想法,消除分歧,交互好,成本高 |
问卷调查 | 用户多,无法一一访谈,成本低 |
现场观察 | 针对较为复杂的流程和操作 |
原型化方法 | 通过简易系统方式解决早期需求不确定问题 |
头脑风暴法 | 一群人围绕新业务,发散思维,不断产生新观点 |
需求分析

UML


需求定义(形成需求规格)
严格定义法
- 所有需求都能够部位预先定义
- 开发人员与用户之间能够准确而清晰地交流
- 采用图形/文字可以充分体现最终系统
原型法
- 并非所有的需求都能在开发前被准确的说明
- 项目参与者之间通常都存在交流上的困难
- 需要实际的、可供用户参与的系统模型
- 有合适的系统开发环境
- 反复时完全需要和值得提倡的,需求一旦确定,就应遵从严格的方法
需求确认与验证
需求验证 -> 需求评审& 需求测试 -> 正式评审 & 非正式评审
- 用户签字确认
- 验收标准之一
9.5.2 需求管理
需求跟踪

- 说明FR-M没有用例对应,它不会被开发出来,这个需求被遗漏了
- 说明UC-2是多余的,是兴奋需求
需求变更管理过程

- 明确问题
- 书面申请
- 判断变更需求类别
- 评估变更影响
- 判断变更的紧急级别
- 沟通确认
- 明确解决方案
- 审批管理
- 执行变更
- 版本控制
软件系统建模

9.6 系统分析与设计
9.6.1 界面设计
界面设计(黄金三法则)
1、置于用户控制之下
- 以不强迫用户进入不必要的或不希望的动作的方式来定义交互方式
- 提供灵活的交互
- 允许用户交互可以被中断和撤销
- 当技能级别增加时可以使交互流水化并允许定制交互
- 使用户隔离内部技术细节
- 设计应允许用户和出现在屏幕上的对象直接交互
2、减少用户的记忆负担
- 减少对短期记忆的要求
- 建立有意义的缺省
- 定义直觉性的捷径
- 界面的视觉布局应该基于真实世界的隐喻
- 以不断进展的方式揭示信息
3、保持界面的一致性
- 允许用户将当前任务放入有意义的语境
- 在应用系列内保持一致性
- 如过去的交互模型已建立起了用户期望,除非有迫不得已的理由,不要改变它
9.6.2 结构化设计
概要设计【外部设计】:功能需求分配给软件模块,确定每个模块的功能和调用关系,形成模块结构图
详细设计【内部设计】:为每个具体任务选择适当的技术手段和处理方法
结构化设计原则:
- 模块独立性原则(高内聚、低耦合)
- 保持模块的大小适中
- 多扇入,少扇出
- 深度和宽度均不宜过高
内聚
高内聚 | 内聚类型 | 描述 |
---|---|---|
功能内聚 | 完成一个单一功能,各个部分协同工作,缺一不可 | |
顺序内聚 | 处理元素相关,而且必须顺序执行 | |
通信内聚 | 所有处理元素集中在一个数据结构的区域上 | |
过程内聚 | 处理元素相关,而且必须按特定的次序执行 | |
时间内聚(瞬时内聚) | 所包含的任务必须在同一时间间隔内执行 | |
逻辑内聚 | 完成逻辑上相关的一组任务 | |
低内聚 | 偶然内聚(巧合内聚) | 完成一组没有关系或关系松散的任务 |
耦合
低耦合 | 耦合类型 | 描述 |
---|---|---|
非直接耦合 | 两个模块之间没有直接关系,他们之间的联系完全 是通过主模块的控制和调用来实现的 |
|
数据耦合 | 一组模块借助参数表传递简单数据 | |
标记耦合 | 一组模块通过参数表传递记录信息(数据结构) | |
控制耦合 | 模块之间传递的信息中包含用于控制模块内部逻辑的信息 | |
外部耦合 | 一组模块都访问同一全局简单变量,而且不是通过参数表传递该全局变量的信息 | |
公共耦合 | 多个模块都访问同一个公共数据环境 | |
高耦合 | 内容耦合 | 一个模块直接访问另一个模块的内部数据 一个模块不通过正常入口转到另一个模块的内部 两个模块有一部分程序代码重叠,一个模块有多个入口 |
模块四要素
- 输入和输出:模块的输入来源和输出去向都是同一个调用者,即一个模块
- 处理功能:
- 内部数据
- 程序代码
9.6.3 面向对象设计
类的分类:
- 边界类:API接口/用户界面
- 控制类:应用逻辑/业务逻辑/数据访问逻辑
- 实体类:数据
面向对象设计原则
- 单一职责原则:设计目的单一的类
- 开放-封闭原则:对扩展开放,对修改封闭
- 李氏(Liskov)替换原则:子类可以替换父类
- 依赖倒置原则:要依赖于抽象,而不是具体实现,针对接口编程,不要针对实现编程
- 接口隔离原则:使用多个专门的接口比使用单一的总接口要好
- 组合重用原则:要尽量使用组合,而不是集成关系到达重用目的
- 迪米特(Demeter)原则(最少知识原则):一个对象应当对其他对象有尽可能少的了解
9.7 软件测试

白盒测试与黑盒测试
白盒测试【结构测试】:主要用于单元测试阶段
控制流测试【逻辑覆盖测试(语句覆盖最弱,路径测试覆盖最强)】
数据流测试
程序变异测试【错误驱动测试】
黑盒测试【功能测试】:主要用于集成测试、确认测试盒系统测试阶段
等价类划分:不同等价类,揭示不同问题,有效等价类/无效等价类
边界值分析:1 <= x <= 10,可取x的值为0、1、10和11作为测试数据
错误推测:依靠测试人员的经验和直觉
判定表:最适合描述在多个逻辑条件取值的组合所构成的复杂情况下,分别要执行哪些不同的动作
因果图:根据输入条件与输出结果之间的因果关系来设计测试用例
软件测试阶段
单元测试:依据【详细设计】,模块测试,模块功能、性能、接口等
集成测试:依据【概要设计】,模块间的接口
系统测试:依据【需求文档】,包括功能测试、性能测试、验收测试、压力测试等
- 确认测试:依据【需求文档】,验证软件与需求的一致性,内部确认测试、Alpha测试、Beta测试、验收测试
其他测试 | 描述 |
---|---|
AB测试 | 多版本同时使用,利于收集各版本的用户反馈,评估出最好版本 故也算是一种【网页优化方法】 |
Web测试 | Web系统测试与其他系统测试测试内容基本相同,只是测试重点不同 Web代码测试包括:源代码规则分析、链接测试、框架测试、表格测试、图形测试等方面 |
链接测试 | 链接测试可分为3个方面: 1、测试所有链接是否按指示的那样确实链接到了该链接的页面 2、测试所链接的页面是否存在 3、保证Web应用系统上没有孤立的页面 |
表单测试 | 验证服务器是否能正确保存这些数据,后台运行的程序能否正确解释和使用这些信息 测试提交操作的完整性 |
回归测试 | 测试软件变更之后,变更部分的正确性和对变更需求的符合性 |
集成测试策略

软件系统测试
1、功能测试
2、性能测试
- 负载测试:各种工作负载下系统的性能
- 压力测试【测上限】:系统的瓶颈或不能接受的性能点
- 强度测试【测下限】:系统资源特别低的情况下运行
- 容量测试【并发测试】:同时在线的最大用户数
- 可靠性测试:MTTF之类的参数
3、健壮性测试
4、用户界面测试
5、安全性测试
6、安装与反安装测试
9.8 系统运行与软件维护
9.8.1 遗留系统与系统转换计划
遗留系统演化策略

新旧系统的转换策略

数据转换与迁移

9.8.2 软件维护
影响软件可维护的因素
【可理解性】是指通过阅读源代码和相关文档,了解软件的功能和如何运行的容易程度
【可修改性】是指修改软件的难易程度
【可测试性】是指验证软件程序正确的难易程度,可测试性好的软件,通常意味着软件设计简单、复杂性低,因为软件的复杂性越大,测试的难度也就越大
【可靠性】一个软件的可靠性越高,需要维护的概率就会越低
【可移植性】是指将软件从一个环境移植到新的环境下正确运行的难易程度,软件运行环境的变化是软件维护的一种常见情形,可移植性好的软件会降低维护的概率
软件维护类型
- 正确性维护【修bug】识别和纠正软件错误/缺陷,测试不可能发现所有错误
- 适应性维护【应变】指使用应用软件适应环境变化【外部环境、数据环境】而进行的修改
- 完善性维护【新需求】扩充功能和改善性能而进行的修改
- 预防性维护【针对未来】为了适应未来的软硬件环境的变化,应主动增加预防性的新的功能,以使系统适应各类变化而不被淘汰。经典实例:【专用】转【通用】
第十章 软件架构设计 17-25
考点:
- 架构4+1视图、构件技术、MVC模式、架构设计阶段、架构设计基本概念、软件架构需求、ABSD、软件架构文档、软件架构风格选择、架构模式、架构评估方法、架构与质量属性、敏感点与风险点、ADL、中间件、大数据架构、安全架构
10.1 软件架构的概念
架构的本质
1、软件架构为软件系统提供了一个结构、行为和属性的高级抽象
2、软件架构风格是特定领域的惯用模式,架构定义一个词汇表和一组约束
架构的作用
1、软件架构是项目干系人进行交流的手段
2、软件架构是可传递和可复用的模型,通过研究软件架构可能预测软件的质量
3、软件架构使推理和控制的更改更加简单,有助于循环渐进的原型设计,可以作为培训的基础
软件架构 = 软件体系结构
架构设计就是需求分配,即将满足需求的职责分配到组件上
10.1.1 软件架构设计与生命周期
- 需求分析阶段:模型转换关注两个问题:如何根据需求模型构建SA模型 + 模型转换可追溯
- 设计阶段:SA研究关注得最早和最多的阶段,ADL和4 + 1视图
- 实现阶段
- 构件组装阶段:在较高层次上实现系统,高效
- 部署阶段:SA为部署提供高层视图指导
- 后开发阶段:动态软件体系结构(内部执行和外部请求导致变化)、体系结构恢复与重建
架构描述语言ADL
ADL是这样一种形式化语言,它在底层语义模型的支持下,为软件系统的概念体系结构建模提供了具体语法和概念框架
如Aesop、MetaH、C2、Rapide、SADL、Unicon等
ADL的三个基本元素
- 构件:计算或数据存储单元
- 连接件:用于构件之间交互建模的体系结构构造块及其支配这些交互的规则
- 架构配置:描述体系结构的构件与连接件的连接图
10.1.2 4 +1 视图

10.2 基于架构的软件开发
10.2.1 概念
- ABSD方法是架构驱动,即强调由业务【商业】、质量和功能需求的组合驱动架构设计
- ABSD方法有三个基础。第一个基础是功能的分解。在功能分解中,ABSD方法使用已有的基于模块的内聚和耦合技术,第二个基础是通过选择架构风格来实现质量和业务需求,第三个基础是软件模版的使用
- 视角与视图,从不同的视角来检查,所以会有不同的视图
- 用例用来捕获功能需求、特定场景【刺激、环境、响应】用来捕获质量需求
10.2.2 开发过程
ABSD能很好的【支持软件重用】
ABSD方法是一个自顶向下,递归细化的方法
软件系统的体系结构通过该方法得到细化,直到能产生软件构件和类
flowchart TD InputData[架构需求] --> Input1Data[架构设计] Input1Data[架构设计] --> Input2Data[架构文档化] Input2Data[架构文档化] --> Input3Data[架构复审] Input3Data[架构复审] --> Input4Data[架构实现] Input4Data[架构实现] --> Input5Data[架构演化] Input5Data[架构演化] --> |0:M| InputData[架构需求] Input3Data[架构复审] --> |0:N| Input1Data[架构设计]

架构文档化过程的主要输出结果是架构规格说明和测试架构需求的质量设计说明书这两个文档
文档的完整性和质量是软件架构成功的关键因素
关于文档的三大注意事项
- 文档要从使用者的角度进行编写
- 必须分发给所有与系统有关的开发人员
- 且必须保证开发者手上的文档是最新的
架构复审【架构评估】的目的是标识潜在的风险,及早发现架构设计中的缺陷和错误

10.3 软件架构风格
架构风格定义了用于描述系统的术语表和一组指导构建系统的规则
五大架构风格 | 子风格 |
---|---|
数据流风格【Data Flow】 | 批处理【Batch Sequential】、管道-过滤器【Pipes and Filters】 |
调用/返回风格【Call/Return】 | 主程序/子程序【Main Program and Subroutine】 面向对象【Object-oriented】、分层结构【Layered System】 |
独立构件风格【Independent Components】 | 进程通信【Communicating Processes】 事件驱动系统(隐式调用)【Event system】 |
虚拟机风格【Virtual Machine】 | 解释器【Interpreter】、规则系统【Rule-based System】 |
以数据为中心【Data-centered】 | 数据库系统【Database System】、黑板系统【Blackboard System】 超文本系统【Hypertext System】 |
1、数据流风格
数据 —> 第一步处理 —> 数据 —> 第二步处理 —> 数据 —> 第N步处理 —> 数据
分步处理
前一步的处理结果是后一步的输入内容【数据驱动】
优点:
- 松耦合【高内聚-低耦合】
- 良好的重用性/可维护性
- 可扩展性【标准接口适配】
- 良好的隐蔽性
- 支持并行
缺点:
- 交互性较差
- 复杂性较高
- 性能较差(每个过滤器都需要解析与合成数据)
典型实例:
- 传统编译器
- 网络报文处理

2、调用/返回风格
主函数调用子函数,子函数返回执行结果给主函数
- 主程序/子程序:面向过程
- 面向对象:对象的方法调用
- 分层:层与层之间的方法调用
3、独立构件风格
优点:
- 松耦合
- 良好的重用性/可修改性/可扩展性
缺点:
- 构件放弃了对系统计算的控制,一个构件触发一个事件时,不能确定其他构件是否会响应它,而且即是它指导事件注册了哪些构件的过程,它也不能保证这些过程被调用的顺序
- 数据交换的问题
- 既然过程的语义必须依赖于被触发事件的上下文约束,关于正确性的推理就存在问题
特点:
- 系统由若干子系统构成且成为一个整体,系统有统一的目标,子系统有主从之分,每一子系统有自己的事件收集和处理机制

4、虚拟机风格

解释器 和 规则为中心
优点:可以灵活应对自定义场景
缺点:复杂度较高
特点:在解释器的基础上增加经验规则(规则为中心)
适合领域:
- 适用于需要”自定义规则”的场合(解释器)
- 适用于专家系统(规则为中心)

基于规则的系统构成:规则集、规则解释器、规则/数据选择及工作内存,一般用在人工智能领域和DSS(决策支持系统)中

5、以数据为中心
- 数据库系统
- 黑板系统:语音识别、知识推理
- 超文本系统

数据库系统
特点:以数据为中心
黑板系统
优点:可更改性和可维护性,可重用的知识源,容错性和健壮性
缺点:测试困难,不能保证有好的解决方案,难以建立好的控制策略,低效,开发困难,缺少并行机制
特点:在以数据为中心的基础上,使用中心数据触发业务逻辑部件
典型案例:语音识别,模式识别,图像处理,知识推理
6、闭环控制架构(过程控制)

- 适合于嵌入式系统,用于解决简单闭环控制问题
- 经典应用:空调温控,定速巡航
7、C2风格

C2架构的基本规则:
- 构件和连接件都有一个顶部和一个底部
- 构件的顶部要连接到连接件的底部,构件的底部要连接到连接件的顶部,构件之间不允许直连
- 一个连接件可以和任意数目的其他构件和连接件连接
- 当两个连接件进行直接连接时,必须由其中一个的底部到另一个的顶部
8、MDA
Model Driven Architecture
- Model?
- 客观事物的抽象表示
- Architecture?
- 构成系统的部件、连接件极其约束的规则
- Model Driven?
- 使用模型完成软件的分析、设计、构建、部署、维护等各开发活动
- MDA起源于分离系统规约和平台实现的思想
MDA的主要目标:
Portability(可移植性),Interoperability(互通性),Reusability(可重用性)
MDA的核心模型
- 计算无关模型(CIM):对某具体行业内一个项目的业务需求及其系统功能需求进行分析
- 平台独立模型(PIM):具有高抽象层次、独立于任何实现技术的模型
- 平台相关模型(PSM):为某种特定实现技术量身定做,让你用这种技术中可用的实现构造来描述系统的模型,PIM会被变成一个或多个PSM
- 代码Code:用源代码对系统的描述(规约),每个PSM都将被变换成代码

软件架构复用
【软件复用】是一种系统化的软件开发过程,通过识别、分析、分类、获取和修改软件实体,以便在不同软件开发过程中重复使用它们
软件开发过程中重复使用相同或相似【软件元素】的过程

软件架构复用类型
- 机会复用:开发过程中,只要发现有可复用资产,就对其进行复用
- 系统复用:开发之前,要进行规划,以决定哪些需要复用
10.4 特定领域软件架构
10.4.1 基本概念
特定领域软件架构以一个特定问题领域为对象,形成由领域参考、参考需求、参考架构等组成的开发基础架构,支持一个特定领域中多个应用的生成
DSSA基本活动及产出物

DSSA类型
- 垂直域:相同领域,深入
- 水平域:不同领域,平移
参与人员
- 领域专家:有经验的用户、从事该领域中系统的需求分析、设计、实现以及项目管理的有经验的软件工程师等,领域专家的主要任务包括提供关于领域中系统的需求规约和实现的知识
- 领域分析人员:领域分析人员应由具有知识工程背景的有经验的系统分析员来担任
- 领域设计人员:领域设计人员应由有经验的软件设计人员来担任
- 领域实现人员:领域实现人员应由有经验的程序设计人员来担任
建立过程

三层次模型

10.5 软件架构评估
10.6.1 质量属性
- 性能
- 可靠性
- 容错
- 健壮性
- 可用性
- 安全性
- 可修改性
- 可维护性
- 可扩展性
- 结构重组
- 可移植性
- 功能性
- 可变性
- 互操作性
1、性能
性能是指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件的个数
例如:
- 同时支持1000并发
- 响应时间小于1s
- 显示分辨率达到4k
性能战术
- 资源需求
- 提高计算效率
- 减少计算开销
- 管理事件率
- 控制采样频率
- 资源管理
- 引入并发
- 维持多个副本
- 增加可用资源
- 资源仲裁
- 资源调度策略
- 先进/先出
- 固定优先级
- 动态优先级
- 静态调用
- 资源调度策略
2、可用性
可用性是系统能够正常运行的时间比例,经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示
例如:
- 主服务器故障,1分钟内切换至备用服务器
- 系统故障,1小时内修复
- 系统支持7 x 24小时工作
可用性战术
- 错误检测
- 命令/响应
- 【Ping/Echo】
- 心跳
- 异常
- 错误恢复
- 表决
- 冗余【主动/被动】
- 备件
- 错误预防
- 进程监视器
- 事务
- 从服务器删除
3、安全性
安全性是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。安全性又可划分为机密性【信息不泄露给未授权的用户】、完整性【防止信息被篡改】、不可否认性【不可抵赖】及可控性【对信息的传播及内容具有控制的能力】等特性
例如:
- 可抵御SQL注入攻击
- 对计算机对操作都有完整记录
- 用户信息数据库授权必须保证99.9可用
安全性战术
- 抵抗攻击
- 身份验证
- 用户授权
- 数据加密
- 数据完整性
- 限制暴露
- 限制访问
- 检测攻击
- 入侵检测
- 从攻击中恢复
- 识别:审计追踪
- 恢复:冗余【与可用性重叠】
4、可修改性
可修改性是指能够快速地以较高的性能价格比对系统进行变更的能力。通常以某些具体的变更为基准,通过考察这些变更的代价衡量可修改性
可修改性包含4个方面:可维护性、可扩展性、结构重组、可移植性
例如:
- 更改系统报表模块,必须在2人周内完成
- 对Web界面风格进行修改,修改必须在4人月内完成
可修改性战术
- 局部化修改
- 维持语文一致性
- 预期期望的变更
- 泛化模块
- 限制可能的选择
- 抽象通用服务
- 防止连锁反应
- 隐藏信息
- 维持现有接口
- 限制通信路径
- 使用仲裁者
- 推迟绑定时间
- 运行时注册
- 配置文件
- 多态
- 组件更换
- 遵守已定义的协议
5、易用性
易用性关注的是对用户来说完成某个期望任务的容易程度和系统所提供的用户支持的种类
例如:
- 界面友好
- 新用户学习使用系统时间不超过2小时
6、可测试性
软件可测试性是指通过测试揭示软件缺陷的容易程度
例如:
- 提供远程调试接口,支持远程调试
敏感点:是一个或多个构件(和/或构件之间的关系)的特性,它能影响系统的某个质量属性
权衡点:是影响多个质量属性的特性,是多个质量属性的敏感点
风险点:是指架构设计中潜在的、存在问题的架构决策所带来的隐患
非风险点:是指不会带来隐患,一般以”XXX要求是可以实现(或接受)的”方式表达
10.6.2 架构评估方法
1、基于调查问卷(检查表)的方式
2、基于度量的方式
3、基于场景的方式

【场景】是从风险承担者的角度与系统交互的简短描述
场景可从六个方面进行描述:刺激源、刺激、制品、环境、响应、响应变量
质量属性场景六个构成部分
【刺激源(Source)】这是某个生成该刺激的实体(人、计算机系统或者任何其他刺激器)
【刺激(Stimulus)】该刺激是当刺激到达系统时需要考虑的条件
【环境(Environment)】该刺激在某些条件内发生。当激励发生时,系统可能处于过载、运行或者其他情况
【制品(Artifact)】某个制品被激励,这可能是整个系统(或系统的一部分)
【响应(Response)】该响应是在激励到达后所采取的行动
【响应度量(Measurement)】当响应发生时,应当能够以某种方式对其进行度量,以对需求进行测试
【软件架构分析法(SAAM)】最初关注可修改性,后扩充到可移植性、可扩充性等。
【架构权衡分析法(ATAM)】由SAAM发展而来,主要针对:性能、实用性、安全性、可修改性。
【成本效益分析法(CBAM)】在ATAM基础上建立的,软件的”经济”模型。
10.6 软件产品线

10.7 构件与中间件技术
10.7.1 概念
构件的定义
1、软件构件是一种组装单元,它具有规范的接口规约和显式的语境依赖,软件构件可以被独立地部署并由第三方任意地组装
2、构件是某系统中有价值的、几乎独立的并可替换的一个部分,它在良好定义的体系结构语境内满足某清晰的功能
3、构件是一个独立发布的功能部分,可以通过其接口访问它的服务
模块的特性:结构化开发的产物
对象的特性:
- 一个实例单元,具有唯一的标志
- 可能具有状态,此状态外部可见
- 封装了自己的状态和行为
构件的特性:
- 独立部署单元
- 作为第三方的组装单元
- 没有(外部的)可见状态
10.7.2 构件的复用
一、检索与提取:
1、基于关键字的检索
- 特点:树形或有向无回路图结构
2、刻面检索法
- 特点:利用Facet描述构件执行的功能、被操作的数据、构件应用的语境或任意其他特征
3、超文本检索法
- 特点:按照人类的联想思维方式任意跳转到包含相关概念或构件的文档
二、理解与评价构件:
- 要复用构件,准确地理解构件至关重要,特别是对构件修改使用时
- 为达到目的,必须要求构件的开发过程遵循公共标准
- 一般构件库的文档中全面而准确地说明以下内容:
- 构件的功能与行为、相关的领域知识、可适应性约束条件与例外情形、可以预见的修改部分及修改方法
三、修改构件
- 理想状态是直接复用构件库中现成的构件,但大多数情况下,必须对构件进行或多或少的修改,以应对新需求
- 为了减少构件修改的工作量,要求开发人员尽量使构件的功能、行为和接口设计更为抽象化、通用化和参数化,这样,复用者即可通过对实参的选取来调整构件的功能或行为,如果这种调整仍不足以使构件适用于新系统,复用者就必须借助设计信息和文档来修改构件
- 构件库中若无可修改使用的构件,则按新需求开发构件,并存入构件库
四、组装构件
1、组装的三种方式
- 基于功能的组装:采用子程序调用和参数传递的方式将构件组装起来
- 基于数据的组装:仍然是传统的子程序调用与参数传递,但它所依赖的软件设计方法不再是功能分解,而是面向数据的设计方法,例如,Jackson系统开发方法
- 面向对象的组装:如果从类库中检索出来的基类能够完全满足新系统的需求,则可以直接应用,否则,必须以基类为父类,生成相应的子类,以满足新系统的需求
2、构件组装失配问题
- 由构件引起的失配,包括由于系统对构件基础设施、构件控制模块和构件数据模型的假设存在冲突引起的失配
- 由连接子引起的失配,包括由于系统对构件交互协议、连接子数据模型的假设存在冲突引起的失配
- 由于系统成分对全局体系结构的假设存在冲突引起的失配等,要解决失配问题,首先需要检测出失配问题,并在此基础上通过适当的手段消除检测出的失配问题
10.7.3 构件的分类
从构件的外部形态看,构件可分为5类
- 独立而成熟的构件:已在实际运行环境多次检验,该类构件隐藏了所有接口,用户只需用规定好的命令进行使用,例如,数据库管理系统和操作系统等
- 有限制的构件:有限制的构件提供了接口,指出了使用的条件和前提,这种构件在装配时,会产生资源冲突、覆盖等影响,在使用时需要加以测试,例如,各种面向对象程序设计语言中的基础类库等
- 适应性构件:适应性构件进行了包装或使用了接口技术,把不兼容、资源冲突等进行了处理,可以直接使用,这种构件可以不加修改地使用在各种环境中,例如ActiveX等
- 装配的构件:装配的构件在安装时,已经装配在操作系统、数据库管理系统或信息系统不同层次上,使用胶水代码(glue code)就可以进行连接使用,目前一些软件商提供的大多数软件产品都属于这一类
- 可修改的构件: 对原构件修改错误、增加新功能,可以利用重新”包装”或写接口来实现构件的版本替换,这种构件在应用系统开发中使用得比较多
10.7.4 中间件
中间件是一类构件
中间件是一类系统构件
简化结构、屏蔽差异、利于复用
采用中间件技术的优点
- 面向需求:即设计师集中精力于业务逻辑本身
- 业务的分隔和包容性:应用开发人员可以按照不同的业务进行功能的划分,体现为不同的接口或交互模式
- 设计与实现隔离:构件对外发生作用或构件间的交互,都是通过接口进行的,构件使用者只需要知道构件的接口,而不必关心其内部实现,这是设计与实现分离的关键
- 隔离复杂的系统资源:架构很重要的一个功能就是将系统资源与应用构件隔离,这是保证构件可复用甚至”即插即用”的基础,与中间件的意图也是一致的
- 符合标准的交互模型:中间件则实现了架构的模型,实现了标准的协议
- 软件复用:中间件提供了构件封装、交互规则、与环境的隔离等机制,这些都为软件复用提供了方便的解决方案
- 提供对应用构件的管理:基于中间件的软件可以方便地进行管理,因为构件总可以通过标识机制进行划分
中间件分类 | 特点 |
---|---|
通信处理消息中间件 | 可靠、高效、实时跨平台通信、eLink、MQSeries |
事务处理交易中间件 | 事务分发,负载均衡,Tuxedo |
数据存储管理中间件 | 为虚拟缓冲存取、格式转换、解压等带来方便 |
Web服务器中间件 | 有负载均衡、缓存、安全性等功能 |
安全中间件 | 如:加密、认证 |
跨平台和架构的中间件 | 解决跨平台问题,如:CORBA |
专用平台中间件 | 为特定应用领域设计领域参考模式,建立相应架构 |
网络中间件 | 功能包括网管、接入、网络测试、虚拟社区和虚拟缓冲等 |
10.7.5 构件标准
三大构件标准
一、CORBA

伺服对象(Servant):CORBA对象的真正实现,负责完成客户端请求
对象适配器(Object Adapter):用于屏蔽ORB内核的实现细节,为服务器对象的实现者提供抽象接口,以便他们使用ORB内部的某些功能
对象请求处理(Object Request Broker):解释调用并负责查找实现该请求的对象,将参数传给找到的对象,并调用方法返回结果。客户方不需要了解服务对象的位置、通信方式、实现、激活或存储机制
二、J2EE(EJB)
- 会话Bean:实现业务逻辑,负责完成服务端与客户端的交互
- 实体Bean:实现O/R映射,简化数据库开发工作
- 消息驱动Bean:处理并发与异步访问
三、DNA 2000
第十一章 系统可靠性分析与设计 0-3
考点:
- 可靠性计算、可靠性分析与设计、可靠性模型
11.1 可靠性相关基本概念
- 可靠性是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能性的基本能力
- 可用性是系统能够正常运行的时间比例
软件可靠性 ≠ 硬件可靠性
- 复杂性:软件复杂性比硬件高,大部分实效来自于软件失效
- 物理退化:硬件失效主要是物理退化所致,软件不存在物理退化
- 唯一性:软件是唯一的,每个COPY版本都一样,而两个硬件不可能完全一样
- 版本更新周期:硬件较慢,软件较快
11.2 可靠性分析与设计
11.2.1 可靠性指标

11.2.2 串联系统与并联系统

混合系统

11.2.3 可靠性设计
影响软件可靠性的主要因素

避错技术
降低复杂度设计
检错技术
- 出错后报警,人工处理,成本较低
容错技术
- N版本程序设计(静态冗余)
- 恢复块设计(动态冗余)
- 防卫式程序设计
冗余
- 结构冗余(硬件冗余、软件冗余)
- 信息冗余(校验码)
- 时间冗余(重复多次进行相同的计算)
N版本程序设计

- 与通常软件开发过程不同的是,N版本程序设计增加了三个新的阶段:相异成分规范与评审、相异性确认、背对背测试
- N版本程序的同步、N版本程序之间的通信、表决算法(全等表决、非精确表决、Cosmetie表决)、一致比较问题、数据相异性
恢复块方法

- 设计时应保证实现主块和后备块之间的独立性,避免相关错误的产生,使主块和备份块之间的共性错误降到最低程度
- 必须保证验证测试程序的正确性
恢复块方法 | N版本程序设计 | |
---|---|---|
硬件运行环境 | 单机 | 多机 |
错误检测方法 | 验证测试程序 | 表决 |
恢复策略 | 后向恢复 | 前向恢复 |
实时性 | 差 | 好 |
- 前向恢复:使当前的计算继续下去,把系统恢复成连贯的正确状态,弥补当前状态的不连贯情况
- 后向恢复:系统恢复到前一个正确状态,继续执行
防卫式程序设计
- 对于程序中存在的错误和不一致性,通过在程序中包含错误检测代码和错误恢复代码,使得一旦错误发生,程序能撤销错误状态,恢复到一个已知的正确状态中去
- 实现策略:错误检测、破坏估计、错误恢复
双机容错

双机模式是集群的前身
- 双机热备份 (主系统、备用系统) 50%的资源被利用
- 双机互备模式 (同时提供不同的服务,心不跳则接管)
- 双机双工模式 (同时提供相同的服务,集群的一种)
第十二章 系统安全性与保密性设计 5-7
考点:
- 安全政策与法律、加密算法、信息摘要与数字签名、数字证书、网络攻击、网络安全协议、安全攸关
12.1 信息安全基础
- 信息安全包括5个基本要素:
名称 | 说明 |
---|---|
机密性 | 机密性是指网络信息不泄露给非授权的用户、实体或程序,能够防止非授权者获取信息 |
完整性 | 完整性是指网络信息或系统未经授权不能进行更改的特性 |
可用性 | 可用性是指合法许可的用户能够及时获取网络信息或服务的特性 |
可控性 | 可控性是指可以控制授权范围内的信息流向及行为方式 |
可审查性 | 可审查性是指对出现的信息安全问题提供调查的依据和手段 |
信息安全的范围包括信息安全、数据安全、内容安全和行为安全
- 网络安全漏洞
网络安全隐患主要表现形式如下:
1、物理安全性
2、软件安全漏洞
3、不兼容使用安全漏洞
4、选择合适的安全哲理
- 网络安全威胁
网络安全威胁主要表现形式如下:
1、非授权访问
2、信息泄露或丢失
3、破坏数据完整性
4、拒绝服务攻击
5、利用网络传播病毒
- 安全措施的目标
安全措施的目标如下:
1、访问控制
2、认证
3、完整性
4、审计
5、保密
12.2 信息加解密技术
【对称加密】
加密解密用同一个密钥
- 加密强度不高,但效率高,易破解
- 密钥分发困难
【非对称加密】
加密用公钥,解密用私钥
- 加密强度高,但效率低,极难破解
- 密钥分发容易
任何人的【私钥】只有自己拥有
任何人的【公钥】可以明文公开发送
对称加密算法【共享密钥】 | 非对称加密算法【公开密钥】 |
---|---|
【用途】对消息明文进行加密传送 | 【用途】对密钥加密,做数字签名 |
1、DES:替换 + 移位、56位密钥、64位数据块、速度块、密钥易产生 2、3DES(三重DES) 密钥长度112【两个56位的密钥K1、K2】 加密:K1加密 -> K2解密 -> K1加密 解密:K1解密 -> K2加密 -> K1解密 3、IDEA:128位密钥、64位明文/密文、PGP 4、其他对称加密算法:RC-5、AES |
1、RSA:2048位(或1024位)密钥 2、Elgamal:安全性依赖于计算在有限域上离散对数这一难题 3、ECC:椭圆曲线算法 4、Diffie-Hellman |
12.3 密钥管理技术
数字证书内容
- 证书的版本信息
- 证书的序列号,每个证书都有一个唯一的证书序列号
- 证书所使用的签名算法
- 证书的发行机构名称,命名规则一般采用X.500格式
- 证书的有效期,现在通用的证书一般采用UTC时间格式,它的计时范围1950-2049
- 证书所有人的名称,命名规则一般采用X.500格式
- 证书所有人的公开密钥
- 证书发行者对证书的签名
PKI公钥体系
- CA(Certificate Authority):认证中心
- RA(Registration Authority):注册审批机构
- 证书受理点
- 密钥管理中心-KMC
flowchart TD InputData[密钥管理中心] --> Input1Data[CA] Input1Data[CA] --> Input2Data[RA] Input1Data[CA] --> Input3Data[RA] Input2Data[RA] --> Input4Data[受理点] Input2Data[RA] --> Input5Data[受理点] Input3Data[RA] --> Input6Data[受理点] Input3Data[RA] --> Input7Data[受理点]

12.4 数字签名技术
信息摘要:单向散列函数【不可逆】、固定长度的散列值
摘要用途:确保信息【完整性】防篡改
常用的信息摘要算法有MD5、SHA等,市场上广泛使用的MD5、SHA算法的散列值分别为128和160位,由于SHA通常采用的密钥长度较长,因此安全性高于MD5
抗弱碰撞性

生成消息摘要的目的是防止篡改,对摘要进行加密的目的是防止抵赖
12.5 访问控制技术
访问控制的基本模型
访问控制的目标有两个:
- 防止非法用户进入系统
- 阻止合法用户对系统资源的非法使用,即禁止合法用户的越权访问
访问控制的三要素:
- 主体:可以对其他实体施加动作的主动实体,记为S
- 客体:是接受其他实体访问的被动实体,记为O
- 控制策略:是主体对客体的操作行为集和约束条件集,记为KS
访问控制的实现技术
访问控制矩阵(ACM):矩阵中的每一格表示所在行的主体对所在列的客体的访问授权
file1 | file2 | file3 | |
---|---|---|---|
User1 | rw | rw | |
User2 | r | rwx | x |
User3 | x | r |
访问控制列表:访问控制矩阵按列分解,具体如下
flowchart LR InputData[file1] --> InputData1[User1
r,w] InputData1[User1
r,w] --> InputData2[User2
r] InputData2[User2
r] --> InputData3[User3
x]
能力表:访问控制矩阵按行分解,具体如下
flowchart LR InputData[User1] --> InputData1[file
r,w] InputData1[file
r,w] --> InputData2[file3
r,w]
授权关系表:对应访问矩阵中每一个非空元素的实现技术,像安全数据库系统通常用授权关系表来实现其访问控制安全机制
12.6 国产密码算法
算法名称 | 算法特性描述 | 备注 |
---|---|---|
SM1 | 对称加密,分组长度和密钥长度都为128bt | 广泛应用于电子政务、电子商务及国民经济的各个应用领域 |
SM2 | 非对称加密,用于公钥加密算法、密钥交换协议、数字签名算法 | 国家标准推荐使用素数域256位椭圆曲线 |
SM3 | 杂凑算法,杂凑值长度为256bt | 适用于商用密码应用中的数字签名和验证 |
SM4 | 对称加密,分组长度和密钥长度都为128bt | 适用于无线局域网产品 |
SM9 | 标识密码算法 | 不需要申请数字证书,适用于互联网应用的各种新兴应用的安全保障 |

12.7 信息安全的保障体系
计算机信息系统安全保护等级
公民、法人和其他组织权益 | 社会秩序和公共利益 | 国家安全 | |
---|---|---|---|
用户自主保护级 | 损害 | ||
系统审计保护级 | 严重损害 | 损害 | |
安全标记保护级 | 严重损害 | 损害 | |
结构化保护级 | 严重损害 | ||
访问验证保护级 | 特别严重损害 |