计算机系统基础
知识点分布

计算机组成原理

冯诺依曼计算机组成

CISC与RISC指令集

缓存速度

时间局部性原理与空间局部性原理


DMA(直接存储访问)工作方式是在主存与外设之间建立起来的数据通路。
操作系统
操作系统是应用软件与硬件之间的接口。

操作系统分类


进程管理

进程与线程

同一进程可以共享的内存区域:内存地址空间,代码、数据、文件等。
进程状态切换的三态模型:

默认系统都是非抢占式的,无剥夺的。如果是抢占式调度,优先级高的抢着做。

常见的临界资源:打印机,缓冲区。

信号量是全局变量,信号量表示资源数量,信号量初值表示没有任何操作的时候,资源的总数。
信号量是复数的时候,表可以欠别人资源的个数,绝对值是排队进程数。
V操作有进程则唤醒进入就绪队列,注意不是直接执行。

开始前检查前驱,有几个前驱进程就要用P操作来检查几次,检查后继的时候,需要通知,有几个后继就要通知几次。

死锁与银行家算法


银行家算法:分配资源的原则:
- 当一个进程对资源的最大需求量不超过系统中的资源数时可以接纳该进程
- 进程可以分期请求资源,但请求的总数不能超过最大需求量
- 当系统现有的资源不能满足进程尚需资源数时,对进程的请求可以推迟分配,但总能使进程在有限的时间里得到资源
系统可以正常执行:安全序列;死锁:不安全的序列。
存储管理

操作系统会将内存中的几个存储位置分配个某个进程来使用。
需要掌握:逻辑地址到物理地址的二进制形式和十六进制形式的转换

根据局部性原理:访问位为1的页面,尽量保留。
淘汰规则:先淘汰访问位为0的,如果有多个访问位为0的,则优先淘汰修改位为0的页,因为不用考虑数据一致性的问题。

段的逻辑地址:段号,段内偏移量。
如果段内偏移量大于段长逻辑地址转物理地址溢出。

磁盘管理
考点:1.平均存取时间 2.优化分布 3.移臂调度序列 4.单缓冲区与双缓冲区(流水线技术)


注意:磁头都是一起转动的。
读取数据的时间应包括以下三个部分:
- 找磁道的时间
- 找块(扇区)的时间,即旋转延迟时间
- 传输时间(磁头在对应扇区上移动的时候)
处理记录的时间等于:旋转延迟时间 + 数据传输时间 + 数据处理时间。
移臂调度算法:
- 先来先服务(FCFS)
- 最短寻道时间优先(SSTF)
- 扫面算法(SCAN)
- 循环扫面(CSCAN)算法
最常考的算法:最短寻道时间优先


文件系统

索引可能的含义:目的、指针、地址项、磁盘块号。
直接索引 0-9 号页。
一般索引节点表在内存索引块和数据块在磁盘。

0表示空闲,1表示占用。
系统性能


吞吐量:请求完成的数量。

性能设计方案


性能评估方法

重点掌握,基准程序法。


Web服务器的性能评估:
- 在Web服务器的测试中,反映其性能的的指标主要有:最大并发连接数、响应延迟和吞吐量等
- 常见的Web服务器性能评测方法有基准性能测试、压力测试和可靠性测试

嵌入式系统
嵌入式系统

嵌入式系统的组成

操作系统与硬件无关性,硬件无关性可以提高可移植性。
操作系统的易移植性依赖于硬件抽象层和板级支撑技术。



嵌入式软件设计层面的功耗控制主要可以从以下方面展开:
- 软硬件协同设计,即软件的设计要与硬件的匹配,考虑硬件因素
- 编译优化,采用低功耗优化的编译技术
- 减少系统的持续运行时间,可以从算法角度进行优化
- 用“中断”代替“查询”
- 进行电源的有效管理

嵌入式硬件

重点关注信号处理器。






单工:只能往一个方向传数据;双工:既可以发数据,也可以收数据;半双工:分时分享,同一时刻,只允许1个设备发送,但是允许多个设备接收。
总线通常分为以下几类:
- 芯片内总线。用于集成电路芯片内部各部分的连接元件级总线。用于一块电路板内各元器件的连接
- 系统总线,又称内总线。用于计算机各组成部分(CPU、内存和接口等)的连接
- 外总线,又称通信总线。用于计算机与外设或计算机与计算机之间的连接或通信

海明码可以纠正1个比特位的错误,通常认为90%以上只会出现一个比特位的错误。
嵌入式操作系统








嵌入式数据库
与传统的数据库相比,嵌入式数据库系统有以下几个主要特点:
- 嵌入式
- 实时性
- 移动性
- 伸缩性
嵌入式数据库分类
按照数据库存储位置的不同而进行分类是目前广泛采用的分类方法,它可以划分为三类:
- 基于内存方式(Main Memory Database System,MMDB)
- 基于文件方式(File Database,FDB)
- 基于网络方式(Netware Database ,NDB)

重点掌握基于网络的数据库。

计算机网络
计算机网络概述
网络延时 = 处理时延 + 排队延迟 + 发送延迟 + 传播延迟。
如果不考虑网络环境,服务器的延迟的主要因素是队列延迟和磁盘I/O延迟。





组网技术

以太网帧最小长度为64字节。


路由器和交换机的区别:
- 路由器连接不同子网,交换机连接的是同一个网络
- 交换机不能做路由功能,路由器可以做数据转发,但它还有其他的一些功能
- 路由器一个端口是一个广播域,交换机所有端口是一个广播域
TCP/IP协议族


HTTPS的默认端口:443
TCP端口号的作用是:对应用层进程的寻址。
Internet网络核心采取的交换方式为:分组交换。




网络规划与设计

数据库系统
数据库概述
数据库模式:外模式(视图级)、概念模式(表级别)、内模式(存储模式,文件级)。
外模式到概念模式的映射保证了逻辑独立性,概念模式到内模式保证了物理独立性。
聚簇索引的修改会影响内模式。
分布式数据库:数据在多个物理节点存放。
分布式数据库的特性:
- 数据独立性
- 集中与自治共享结合的控制结构
- 适当增加数据冗余度
- 全局一致性、可串行性和可恢复性
分布式数据库透明性分类
- 分片透明
- 位置透明
- 复制透明
- 逻辑透明
数据库设计阶段

概念结构设计阶段:
需求分析 -> 抽象数据 -> 设计局部ER模型 -> 合并局部模型消除冲突 -> 重构优化消除冗余 -> 逻辑设计
实体完整性:主键,唯一且非空
参照完整性约束:外键,要么为空,要么是其他关系的主键
候选码:是一个属性集合,可以只有一个属性,可以有多个属性。
关系代数
关系代数的结果:并交差 笛卡尔积 自然连接
笛卡尔积和自然连接
关系代数与查询语句
查询性能的考察
水平方向:元组行/记录/实例
垂直:属性列




性能问题:
1.运算对象尽可能先压缩
2.理论上自然连接的性能优于笛卡尔积
规范化理论
重点掌握:属性集合 函数依赖 公理体系 候选键和非候选键 主属性和非主属性的判断






要注意:候选键是单属性,也可以是多属性的集合。
主键说的是,实体完整性,外键说的是参照完整性。

通常找到入度为0的属性,就可以找到候选键。
如果没有入度为0的候选键,需要结合中间节点来判断候选关键字。

学会判断范式、消除1-3NF。


候选键:(学号,课程号);非主属性:学分、成绩。
如果候选键是单个属性,1NF的前提下,至少能达到第2范式。

如果没有非主属性,在1NF的前提下,至少满足第三范式。

模式分解

如果没有同名属性列,那么分解一定是有损的。

例1:没有保持函数依赖。
例2:保持函数依赖,但是有损,因为没有同名属性列。
如何判断是否有损:先求拆分的属性交集,再求属性的差集,判断是狗满足原来任意一个函数依赖。
数据控制
数据控制功能包括:
- 安全性
- 完整性
- 并发控制
- 故障恢复







系统工程与信息基础
系统工程



信息系统生命周期


信息系统建设原则



信息系统的分类




决策支持系统DSS

专家系统


政府信息化与电子政务


企业信息化与电子商务

信息化是指在国家宏观信息政策指导下,通过信息技术开发、信息产业的发展、信息人才的配置,最大程度利用信息资源以满足全社会的信息需求 ,从而加锁社会各个领域的共同发展以推进信息社会的过程。
信息化的主体是全体社会成员(政府、企业、团体和个人),时域是一个长期过程,空域是经济和社会的一切领域,手段是先进社会生产工具。
企业信息化涉及三类创新

信息化需求的3个层次

企业信息化方法










数据库与数据仓库:
| 数据库 | 数据仓库(特点) |
|---|---|
| 面向应用:按应用组织数据 | 面向主体:按主题组织数据 |
| 零散的:一个应用对应一个数据库 | 集成的:整个企业对应的一个数据仓库 |
| CRUD:增删改查是常态 | 相对稳定的(非易失的):查询为主、基本无修改与删除 |
| 解决当下应用问题 | 反映历史变化(时变的):各个阶段信息都有,并可预测未来趋势 |











数字化转型与智能制造


软件工程
软件过程模型
敏捷开发中,增量与迭代经常一起出现。
螺旋模型强调风险。
喷泉模型的主要特点:不严格区分阶段,面向对象。
基于构件的软件工程

敏捷方法-XP(极限编程)
4大价值观:
- 沟通【加强面对面沟通】
- 简单【不过度设计】
- 反馈【及时反馈】
- 勇气:接受变更的勇气
12条过程实践规则:
- 简单设计
- 测试驱动
- 代码重构
- 结对编程
- 持续集成
- 现场客户
- 发行版本小型化
- 系统隐喻
- 代码集体所有制
- 规划策略
- 规范代码
- 40小时工作制

敏捷方法:
- 极限编程(XP):价值观(交流、朴素、反馈、勇气)、近螺旋式的开发方法
- 水晶方法:提倡“机动性”的方法,拥有对不同类型的项目非常有效的敏捷过程
- SCRUM:侧重于项目管理
- 特征驱动开发方法(FDD):认为有效的软件开发需要3要素(人、过程、技术)。定义了6钟关键的项目角色:项目经理、首席架构设计师、开发经理、主程序员、程序员和领域专家
- 开放式源码:程序开发人员在地域上分布很广(其他方法强调集中办公)
- ASD方法:其核心是三个非线性的、重叠的开发阶段:猜测、合作与学习
- 动态系统开发方法(DSDM):倡导以业务为核心
逆向工程

实体关系模型:ER模型,UML模型。
与逆向工程相关的概念有重构、设计恢复、再工程和正向工程
- 重构/重组:重构是指再【同一抽象级别】上【转换系统描述形式】
- 设计恢复:设计恢复是指借助工具从已有程序中抽象出有关数据设计、总体结构设计和过程设计等方面的信息
- 逆向工程:逆向工程是分析程序,力图在源代码更高抽象层次上建立程序的表示过程,逆向工程是设计的恢复过程
- 正向工程:正向工程是指不仅从现有系统中恢复设计信息,而且使用该信息去改变或重构现有西永,以改善其整体质量
- 再工程/重构工程:再工程是对现有系统的重新开发过程,包括逆向工程、新需求的考虑过程和正向工程三个步骤
净室软件工程

净室工程的核心:正确性验证。
净室工程的缺点:
- 太理论化,正确性验证的步骤比较困难且耗时
- 开发小组不进行传统的模块测试,这是不现实的
- 脱胎于传统软件工程,不可避免带来传统软件工程的一些弊端
需求工程


需求获取的方法


核心:行为模型、数据模型、功能模型




需求阶段:哪些东西该做,哪些东西不该做。
开发阶段:具体的解决方案,具体该如何实现。
UML主要考察:构造块的内容。

搞清楚是静态图还是动态图以及具体的概念。
UML是面向对象分析的工具集合。

严格定义法:有瀑布模型的思想
原型法:有原型法的思想





人机界面设计(黄金三法则)


结构化设计(内聚)
| 内聚类型 | 描述 |
|---|---|
| 功能内聚 | 完成一个单一功能,各个部分协同工作,缺一不可 |
| 顺序内聚 | 处理元素相关,而且必须顺序执行 |
| 通信内聚 | 所有处理元素集中在一个数据结构的区域上 |
| 过程内聚 | 处理元素相关,而且必须按特定的次序执行 |
| 时间内聚(瞬时内聚) | 所包含的任务必须在同一时间间隔内执行 |
| 逻辑内聚 | 完成逻辑上相关的一组任务 |
| 偶然内聚(巧合内聚) | 完成一组没有关系或松散关系的任务 |
结构化设计(耦合)
| 耦合类型 | 描述 |
|---|---|
| 非直接耦合 | 两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的 |
| 数据耦合 | 一组模块借助参数表传递简单数据 |
| 标记耦合 | 一组模块通过参数表传递记录信息(数据结构) |
| 控制耦合 | 模块之间的传递信息中包含用于控制模块内部逻辑的信息 |
| 外部耦合 | 一组模块都访问同一全局简单变量,而且不是通过参数传递该全局变量的信息 |
| 公共耦合 | 多个模块都访问同一个公共数据环境 |
| 内容耦合 | 一个模块之间访问另一个模块的内部数据;一个模块不通过正常入口转到另一个模块的内部;两个模块有一部分程序代码重叠;一个模块有多个入口 |




系统分析与设计
软件测试

系统运行与软件维护
软件架构设计
软件架构的概念
架构的本质:
- 软件架构设计为软件系统提供了一个结构、行为和属性的高级抽象
- 软件架构风格是特定应用领域的惯用模式,架构定义一个词汇表和一组约束
架构的作用:
- 软件架构是项目干系人进行交流的手段
- 软件架构是可传递和可复用的模型,通过研究架构可以预测软件的质量
- 软件加否使推理和控制的更改更加简单,有助于循序渐进的原型设计,可以作为培训的基础
软件架构等于软件体系结构。

架构设计就是需求分配,即将满足需求的职责分配到组件上。
基于架构的软件开发
软件架构设计与生命周期

架构描述语言
架构描述语言ADL

”4+1“视图

配置、装配指的是源代码物理结构。
ABSD方法是架构驱动,即强调由业务【商业】、质量和功能需求的组合驱动架构设计
ABSD方法有三个基础:
- 功能的分解。在功能的分解中,ABSD方法使用已有的基于模块的内聚和耦合技术;
- 通过选择架构风格来实现质量和业务需求
- 软件模板的使用
视角与视图:从不同的视角来检查,所以会有不同的视图
用例用来捕获功能需求,特定场景【刺激、环境、响应】用来捕获质量需求




软件架构风格
| 五大架构风格 | 子风格 |
|---|---|
| 数据流风格 | 批处理 管道-过滤器 |
| 调用/返回风格 | 主程序/子程序 面向对象 分层架构 |
| 独立构件风格 | 进程通信 事件驱动(隐式调用) |
| 虚拟机风格 | 解释器 规则系统 |
| 以数据为中心 | 数据库系统 黑板系统 超文本系统 |
数据流风格

隐蔽性是指对数据有标准的输入和输出,无需了解具体的细节。
数据流风格的软件的典型实例:C语言编译器、网络报文处理。
数据流风格子风格

调用/返回风格

分层架构风格

独立构件风格

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

事件管理器的典型代表:MQ
虚拟机风格



低代码平台是虚拟机风格。
解释器:适用于需要”自定义规则的场合“。
规则为中心:适用于专家系统。

解释器模式风格的核心:解释器引擎。

以数据为中心

黑板系统的代表实现:语音识别、知识推理。
黑板系统一般都是数据库系统来实现的。
以数据为中心的架构特点:

过程控制风格需要从外界提取信息来指导当前系统的运作。
低代码平台借鉴了MDA的软件架构风格。
软件架构复用

服务本身就是一种构件。
软件架构复用类型有两种:机会复用和系统复用。
机会复用:开发过程中,只要发现有可复用资产,就对其进行复用。
系统复用:开发之前,要进行规划,以决定哪些需要复用。
特定领域软件架构
DSSA架构每次都会考。


DSSA建立过程:

DSSA三层模型:

软件产品线

软件架构评估
软件质量属性
几个比较主要的属性:性能、可用性、安全性、可修改性、易用性。
性能:
可用性:
安全性:

注意:用户信息数据库授权可用代表的是安全性,用户信息数据库可用表示的是可用性。
光有权限控制无法防止黑客攻击。
可修改性:

可修改性包含4个方面:可维护性、可扩展性、结构重组、可移植性。
注意:隐藏信息属于可修改性战术。
易用性:

易用性关注的是从用户的角度来说的。
架构评估

构件与中间件技术
系统可靠性分析
知识产权与标准化
项目管理
信息安全基础知识
信息安全基础
信息安全包含5个基本要素
| 名称 | 说明 |
|---|---|
| 机密性 | 机密性是指网络信息不泄密给非授权的用户,实体或程序,能够防止非 授权者获取信息 |
| 完整性 | 完整性是指网络信息或系统未经授权不能进行更改的特性 |
| 可用性 | 可用性是指合法许可的用户能够及时获取网络信息或服务的特性 |
| 可控性 | 可控性是指可以控制授权范围内的信息流记行为方式 |
| 可审查性 | 可审查性是指对出现的信息安全问题提供调查的依据和手段 |
信息安全的范围包括设备安全、数据安全、内容安全和行为安全。
可审查性指的是事后的环节。
网络安全漏洞:
安全隐患主要表现如下:
- 物理安全性
- 软件安全漏洞
- 不兼容使用安全漏洞
- 选择合适的安全哲理
信息安全措施的目标如下:
- 访问控制
- 认证
- 完整性
- 审计
- 保密
信息加密技术


加密技术对比
| 对称加密算法【共享密钥】 | 非对称加密算法【公开密钥】 |
|---|---|
| 【用途】对消息明文进行加密传送 | 【用途】对密钥加密,做数字签名 |
| DES:替换+移位、56位密钥、64位数据块、速度快、密钥易产生 | RSA:2048位(或1024位)密钥 |
| 3DES(三重DES): 密钥长度112【两个56位的密钥k1、k2】 加密:k1加密 > k2解密 > k1加密 解密:k1解密 > k2加密 > k1解密 |
Elgmal:安全性依赖于计算有限域上离散对数这一难题 |
| IDEA:128位密钥、64位明文/密文、PGP | ECC:椭圆曲线算法 |
| 其它对称加密算法:RC-5、AES | Diffie-Hellman |
一个密码系统至少由明文、密文、加密算法、解密算法和密钥五个部分组成,而其安全性是由密钥决定的。
密钥管理技术
数字证书的内容
- 证书的版本信息
- 证书的序列号,每个证书都有一个唯一的证书序列号
- 证书所使用的签名算法
- 证书的发行机构名称,命名规则一般使用X.500格式
- 证书的有效期,现在通用的证书一般采用UTC时间格式,它的计时范围是1950-2049
- 证书所有人的名称,命名规则一般采用X.5000格式
- 证书所有人的公开密钥
- 证书发行者对证书的签名


访问控制
访问控制的基本模型
访问控制的目标有两个:
- 防止非法用户进入系统
- 阻止合法用户对系统资源的非法使用,即禁止合法用户的越权访问
访问控制的三要素:
- 主体:可以对其他实体施加动作的主动实体,记为S
- 客体:是接受其他实体访问的被动实体,记为O
- 控制策略:是主体对客体操作行为集和约束条件集,记为KS


数字签名技术
数字签名不能解决机密性的问题,解决的是身份的真实性、不可抵赖性和完整性。



信息安全的保障体系

