软件架构师-第一章 计算机基础基础
计算机基础
计算机组成
计算机组成结构。计算机由主机和外设两大部分组成:
-
外设:
- 输入设备(如键盘、鼠标)
- 辅助存储器(如硬盘、U 盘 )
- 输出设备(如显示器、打印机)
-
主机:由主存储器、运算器、控制器(运算器和控制器合称为 CPU )构成。主存储器用于临时存储正在运行的程序和数据;运算器负责进行算术运算和逻辑运算;控制器则是计算机的指挥中心,负责协调和控制计算机各部件的工作。
存储系统 ⭐⭐⭐
Cache(高速缓冲存储器)
- 功能:Cache 能提高 CPU 数据输入输出的速率,突破冯・诺依曼瓶颈,也就是缓解 CPU 与存储系统之间数据传送带宽的限制
- 冯・诺依曼瓶颈指的是 CPU 处理速度和存储系统读写速度不匹配的问题,Cache 可以减少 CPU 等待数据的时间。
- 速度特性:在计算机的存储系统体系中,Cache 的访问速度是最快的,能够快速响应 CPU 的数据请求。
- 透明性:Cache 对程序员来说是透明的,意味着程序员在编写代码时无需考虑 Cache 的存在和运行机制,它由硬件自动管理。
- 原理依据:使用 Cache 改善系统性能依赖于程序的局部性原理,
- 时间局部性(即程序中的某条指令被执行后,不久后可能再次被执行;数据被访问后,不久后可能再次被访问)
- 空间局部性(即程序访问了某个存储单元后,不久后可能会访问其附近的存储单元) 。
Cache 命中率计算公式
Cache 命中率(h)的计算公式:
Cache 缺失率(m,Miss ratio)的计算公式:
平均访问时间((T_{avg}),Average access time):
磁盘管理
-
磁盘结构:
- 盘面:磁盘由多个盘面组成
- 磁道:在每个盘面上,以轴心为圆心的一系列同心圆就是磁道。数据存储在磁道上。
- 扇区:磁道被划分为若干个扇区,扇区是磁盘存储数据的基本单位。
- 柱面:所有盘面上相同编号的磁道构成一个柱面。
- 轴心、主杆、读写磁头:轴心是磁盘旋转的中心;主杆用于支撑和移动读写磁头;读写磁头负责对盘面进行数据的读取和写入操作。
-
磁盘存取时间:存取时间由寻道时间和等待时间组成。
-
寻道时间是指读写磁头移动到目标磁道所需的时间;
-
等待时间是指等待需要读写的扇区旋转到读写磁头下方所花费的时间 。
-
找磁道的时间:也叫寻道时间,是指磁盘的读写磁头从当前位置移动到目标数据所在磁道所花费的时间。磁头需要在盘面上径向移动来定位到特定的磁道。
-
找块(扇区)的时间,即旋转延迟时间 :磁盘在不断旋转,当磁头定位到目标磁道后,还需要等待目标扇区旋转到磁头下方,这个等待的时间就是旋转延迟时间。
-
传输时间:当磁头对准目标扇区后,完成数据从磁盘扇区传输到计算机内存等接收设备所需的时间 。
-
移臂调度算法:
- 先来先服务(FCFS):按照磁盘 I/O 请求到达的先后顺序进行处理,不考虑磁头的当前位置和目标磁道的距离。这种算法简单直观,但可能导致磁头频繁地在不同磁道间来回移动,增加寻道时间。
- 最短寻道时间优先(SSTF):优先处理与当前磁头位置距离最近的磁道请求。该算法可以减少寻道时间,提高磁盘的整体性能,但可能会导致某些请求长时间得不到响应,即出现 “饥饿” 现象。
- 扫描算法(SCAN):也叫电梯算法,磁头在一个方向上依次处理请求,直到该方向上没有请求,然后改变方向继续处理。就像电梯在楼层间运行一样,减少了磁头的来回摆动,提高了效率。
- 循环扫描(CSCAN):类似于 SCAN 算法,但磁头只在一个方向上扫描处理请求,到达磁盘一端后,立即返回到起始端,再继续下一轮扫描。这样可以保证每个磁道的请求有更均匀的响应时间。
页式存储
- 基本概念:页式存储是把程序和内存都划分成大小相同的块,以页为单位将程序调入内存。这样便于对内存和程序进行管理。
- 地址相关概念:
- 高级程序语言用的是逻辑地址,程序运行时内存中用的是物理地址。
- 逻辑地址由页号和页内地址组成,物理地址由页帧号(即物理块号)和页内地址组成。通过页表来建立页号和页帧号之间的对应关系,
- 优缺点:
- 优点是内存利用率高,产生的碎片小,分配和管理操作相对简单。
- 缺点是会增加系统开销,因为要维护页表等信息;还可能出现抖动现象,即频繁地进行页面置换,导致系统性能下降。
段式存储:
- 基本概念:段式存储按照用户作业中的自然段来划分逻辑空间,然后调入内存,各段的长度可以不相同,这种划分方式更符合用户对程序结构的理解和组织。
- 地址表示:逻辑段地址由(段号,段内偏移量)组成。通过段表来记录每个段的信息,如段号、段长和基址(该段在内存中的起始地址)。
- 优缺点:
- 优点是支持多道程序共享内存,而且各个段的程序修改时互不影响,便于程序的模块化设计和维护。
- 缺点是内存利用率较低,因为段的长度不固定,容易产生较大的内存碎片,造成内存资源的浪费 。
段页式存储:
- 基本概念:段页式存储是段式和页式存储管理方式的结合。先将程序按逻辑结构分段,然后再把每个段划分为若干大小相同的页。这样一个程序包含多个段,每个段又包含多个页,兼具了段式和页式的特点。
- 地址映射结构:通过段表寄存器找到段表,段表中记录了每个段的状态、页表大小和页表始址等信息。根据段表找到对应的页表,页表中记录了页号、状态和存储块号等,最终通过这些信息将逻辑地址映射到主存中的物理地址。
- 优缺点:
- 优点是空间浪费较小,因为页的大小固定减少了碎片;便于实现存储共享和存储保护,也支持动态连接,有利于程序的模块化设计和运行时的资源管理。
- 缺点是由于引入了段表和页表等管理结构,管理软件变得复杂,系统开销增大,而且需要更多的硬件支持和内存空间,导致程序的执行速度明显下降 。
单缓冲区万能公式
-
公式含义:
n*(max(C,T)+M)+min(C,T)
,n
是数据块的数量。- C:CPU 处理一个数据块的时间(CPU 处理时间)。
- T:输入设备(如磁盘)将一个数据块传输到缓冲区的时间(I/O 传输时间)。
- M:数据在缓冲区与用户区之间的传输时间。
-
适用场景与正确性:当使用单缓冲区进行数据的读取、传送和处理时,该公式适用。因为在单缓冲区中,数据的读取、传送和处理是串行交替进行的,每次操作时间取决于
C
、T
、M
中较大的两项相加,再考虑最后一块数据处理时的特殊情况(即min(C,T)
),所以这个公式能正确计算处理n
块数据的总时间。
双缓冲区万能公式
- 公式含义:
n*max(C+M,T)+min(C+M,T)
,这里各参数含义与单缓冲区公式中一致。n
为数据块数量,C
是读取时间,T
是处理时间,M
是传送时间。 - 适用场景与正确性:在双缓冲区的情况下,由于有两个缓冲区可以并行操作,数据的读取和传送可以和数据处理在一定程度上重叠进行,每次处理数据的时间主要由
C + M
和T
中的较大值决定,最后一块数据处理时也有特殊情况(即min(C+M,T)
),所以该公式能够正确计算处理n
块数据所需的总时间 。
操作系统 ⭐
操作系统的相关概念:
- 定义及层次结构:操作系统(OS)位于计算机硬件(裸机)之上,在语言处理程序和应用程序之下。硬件是计算机的物理基础,操作系统对其进行管理和抽象;语言处理程序负责处理编程相关的语言转换等工作;应用程序则是用户日常使用的软件,如办公软件、游戏等。操作系统起到承上启下的关键作用。
- 功能:
- 资源管理:对系统的硬件(如 CPU、内存、磁盘等)、软件(各类程序)和数据资源进行管理,合理分配和调度资源,提高资源利用率。
- 程序控制:控制程序的运行,包括程序的启动、暂停、终止等操作,确保程序能有序执行。
- 接口功能:作为人机之间的接口,为用户提供操作计算机的界面,方便用户使用计算机;同时也是应用软件与硬件之间的接口,让应用软件无需了解复杂的硬件细节就能与硬件交互。
- 具体管理:涵盖进程管理(管理程序的执行流程和资源分配)、存储管理(管理内存和外存的使用)、文件管理(管理文件的存储、检索和访问)、作业管理(管理用户提交的作业)以及设备管理(管理外部设备,如打印机、扫描仪等 )。
特殊的操作系统
-
批处理操作系统:
- 单道批:一次仅将一个作业加载到内存中进行处理,作业由程序(完成特定任务的代码)、数据(程序运行所需的数据)以及作业说明书(描述作业运行的相关要求和参数)组成。
- 多道批:一次可以将多个作业放入内存,这些作业在宏观上看起来是并行执行的,但在微观上,由于 CPU 同一时刻只能处理一个作业,所以是串行执行的。这种方式提高了系统资源的利用率和吞吐量。
-
分时操作系统:采用时间片轮转的策略,把 CPU 的运行时间划分为若干个时间片,轮流为多个用户程序服务。每个用户感觉自己独占整个系统资源。其特点包括多路性(支持多个用户同时使用系统)、独立性(各用户之间互不干扰)、交互性(用户能与系统进行交互操作)和及时性(系统能快速响应用户的请求)。
-
实时操作系统:包含实时控制系统(如工业生产中的自动控制系统)和实时信息系统(如航空订票系统)。这类系统对交互能力要求不高,但对可靠性要求极高,需要在规定的时间内对外部事件做出响应并处理,以确保系统的正常运行和任务的及时完成 。
-
网络操作系统:其主要功能是让用户方便且有效地共享网络资源,它是服务软件和相关协议的集合。常见的网络操作系统有 Unix、Linux 和 Windows Server 系统,这些系统为网络中的计算机提供文件共享、打印服务、用户管理等功能。
-
分布式操作系统:支持任意两台计算机通过通信进行信息交换,它是网络操作系统的更高级形式,具有透明性(用户无需了解系统中各计算机的具体位置和细节)、可靠性(部分计算机出现故障不影响整个系统运行)和高性能等特性,能更好地协调和管理分布在不同地点的计算机资源。
-
微机操作系统:
- Windows:由 Microsoft 开发,具有图形用户界面,支持多任务和多线程操作,方便普通用户使用,广泛应用于个人计算机。
- Linux:是可以免费使用和自由传播的类 Unix 操作系统,支持多用户、多任务、多线程以及多 CPU,具有高度的灵活性和可定制性,常被技术人员和开发者使用。
-
嵌入式操作系统:运行在智能芯片环境中,特点包括
- 微型化(占用资源少)
- 可定制(能根据硬件变化进行配置)
- 实时性(及时响应外部事件)
- 可靠性(稳定运行)
- 易移植性(借助硬件抽象层 HAL 和板级支持包 BSP 实现 )。
AI 芯片的三种主要技术架构:
- GPU(显卡芯片):拥有大量流处理器,擅长大规模浮点数计算,广泛应用于神经网络技术。因其并行处理能力强,能高效处理深度学习中的矩阵运算等任务。
- FPGA:可对硬件层进行编程与配置,实现半定制化,适用于特定 AI 场景。它的灵活性高,允许在硬件层面调整以适应需求,无需像专用芯片那样重新设计,适合需要快速迭代或有特定但非固定需求的场景。
- ASIC:专用芯片,针对特定场景深度定制,优化特定计算性能。它在目标场景中性能优异、功耗低,但缺乏通用性,需求改变时需重新设计芯片,常用于对性能和功耗要求苛刻的固定场景(如特定智能硬件中的 AI 加速)。
进程和线程 ⭐⭐⭐
进程概念
- 进程的基本概念:进程是程序在某个数据集合上运行的过程,也是系统进行资源分配和调度的独立单元。它由程序块(实现具体功能的代码)、**进程控制块(PCB)**和数据块(进程处理的数据)三部分组成。
- 进程控制块(PCB):它是进程存在的唯一标志。PCB 包含多种信息:
- 进程标识符:用于唯一标识一个进程。
- 状态:如运行、就绪、阻塞等,反映进程当前的执行情况。
- 位置信息:记录进程在内存或外存中的位置。
- 控制信息:包含进程的创建、撤销等控制相关信息。
- 队列指针:用于链接处于同一状态的进程,方便系统管理和调度。
- 优先级:表示进程获得 CPU 资源的优先程度。
- 现场保护区:用于保存进程在被中断时的运行环境,以便恢复运行 。
进程与程序的区别:
- 定义关联:进程是程序的一次执行过程,程序是进程运行的基础,没有程序就无法产生进程。
- 概念特性:程序是静态的,它是存放在存储介质(如硬盘)中的代码和数据的集合,不会自动执行。而进程是动态的,有创建、运行、撤销等生命周期阶段,它从被创建开始,到完成任务后被撤销结束。
- 资源分配角色:进程是系统进行资源分配和调度的独立单元,操作系统会为进程分配 CPU 时间、内存空间等资源。而程序只是一个静态的文件,不涉及资源的分配和调度 。
进程与线程的区别:
- 进程的基本属性:进程具有两个基本属性,
- 一是可拥有资源的独立单位,即进程可以拥有如内存、文件等系统资源;
- 二是可独立调度和分配资源的基本单位,操作系统依据一定的算法对进程进行调度,并分配 CPU、内存等资源,以保证各个进程有序运行。
- 进程与线程的关系:
- 一个进程可以包含多个线程。
- 不同线程之间可以共享内存地址空间、代码、数据、文件等资源,这使得线程之间的通信和数据共享相对便捷。
- 每个线程又拥有自己独立的程序计数器(记录下一条要执行的指令地址)、寄存器(用于临时存储数据)和栈(存储局部变量和函数调用信息),这些独立的资源保证了线程可以并发执行,互不干扰 。
进程的状态及其转换关系:
- 基本状态模型(三态):
- 运行:进程正在占用 CPU 执行任务。
- 就绪:进程已具备运行条件,只等待 CPU 资源分配,一旦获得 CPU 就可立即运行。
- 阻塞:进程因等待某个事件(如 I/O 操作完成、特定资源可用等)而暂停执行,此时即使有 CPU 资源也无法运行。
- 状态转换:
- 运行的进程可能因时间片用完转为就绪状态;
- 运行的进程若等待某个事件则会进入阻塞状态;
- 阻塞的进程在等待的事件发生后会变为就绪状态。
- 扩展状态模型(五态):在基本状态基础上引入了 “静止” 和 “活跃” 概念。
- 静止就绪:就绪状态的进程被挂起,暂时不参与 CPU 竞争,等待被恢复或激活后进入活跃就绪状态。
- 静止阻塞:阻塞状态的进程被挂起,当等待的事件发生后先变为静止就绪,再经恢复或激活进入活跃就绪。
- 活跃就绪:可直接竞争 CPU 资源,一旦获得就转入运行状态。
- 活跃阻塞:等待事件发生,事件发生后变为活跃就绪。
- 状态转换:
- 运行的进程可被挂起进入静止就绪;
- 静止就绪或静止阻塞的进程可通过恢复或激活操作分别进入活跃就绪和活跃阻塞 。
PV 操作
同步与互斥
-
临界资源:指多个进程之间需要以互斥的方式进行共享的资源。也就是说,在同一时刻,只能有一个进程访问这些资源,以避免数据不一致或错误。
-
临界区:每个进程中访问临界资源的那部分代码被称为临界区。进程进入临界区时,需要遵循一定的规则(如互斥访问),以保证临界资源的正确使用。
-
信号量:是一种特殊的变量,用于实现进程间的同步和互斥。通过对信号量的操作(如 P 操作和 V 操作),可以控制进程对临界资源的访问,协调多个进程的运行顺序 。P 小于0,V 小于等于0.
-
P 操作中 S<0 的原因
- P 操作含义:P 操作通常用于申请资源。信号量 S 代表可用资源的数量,在 P 操作中首先执行
S = S - 1
,表示尝试获取一个资源。 - 判断逻辑:当
S >= 0
时,说明当前还有可用资源,进程可以获取资源并继续执行;而当S < 0
时,意味着资源已被分配完,此时该进程无法获取资源,需要将其放入阻塞队列等待,直到有其他进程释放资源。所以通过判断S < 0
来决定是否阻塞当前进程。
- P 操作含义:P 操作通常用于申请资源。信号量 S 代表可用资源的数量,在 P 操作中首先执行
-
V 操作中 S<=0 的原因
- V 操作含义:V 操作一般用于释放资源,执行
S = S + 1
,表示释放一个资源,使可用资源数量增加。 - 判断逻辑:当
S > 0
时,说明有其他进程在等待该资源(因为之前资源被分配完时 S 会小于 0,释放资源后 S 增加),此时S <= 0
这个判断条件满足,就从阻塞队列中唤醒一个等待该资源的进程,让其有机会获取刚释放的资源并继续执行; 当S > 0
时,表明没有进程在等待该资源,就不需要唤醒其他进程。所以通过判断S <= 0
来决定是否唤醒阻塞队列中的进程 。
- V 操作含义:V 操作一般用于释放资源,执行
死锁
死锁是指在多道程序系统中,一组进程中的每一个进程都无限期地等待被该组进程中的另一个进程所占用且永远不会释放的资源,从而导致的一种僵持状态。
死锁发生的四个必要条件
- 互斥:资源不能被共享,只能被一个进程占用。
- 保持和等待:进程已经持有了一些资源,同时又在请求其他进程占用的资源,且不会释放已持有的资源。
- 不剥夺:进程已获得的资源在未使用完之前,不能被其他进程强行剥夺。
- 环路等待:存在一组进程,每个进程都在等待下一个进程占用的资源,形成一个环路。
关于死锁的应对策略
- 死锁的预防:通过打破死锁的四个必要条件中的一个或多个来预防死锁的发生。
- 死锁的避免:采用有序资源分配法或银行家算法等方法,在资源分配过程中,通过对资源分配进行评估和规划,避免系统进入死锁状态 。
- 资源数公式思路:,n个进程,每个进程最多需要m个资源,而系统中资源总数为R
银行家算法
- 银行家算法的核心:它是一种分配资源的原则,灵感源于银行系统给客户贷款时对风险的评估和控制,目的是在多进程环境中避免死锁。
- 接纳进程的条件:当一个进程对资源的最大需求量不超过系统中现有的资源总数时,系统可以接纳该进程,这样从总量上保证了系统有能力满足进程的最终需求。
- 资源请求限制:进程可以分多次请求资源,但请求的资源总数不能超过其事先声明的最大需求量,防止进程无节制地索要资源。
- 资源分配策略:如果系统当前的资源数量无法满足进程还需要的资源数量,那么可以推迟对该进程的资源分配,但要确保在有限时间内进程能获取到所需资源,避免进程长期等待,从而维持系统的动态平衡和正常运行。
文件存储⭐⭐⭐
索引文件结构这类题目的解题模板:
一、明确题目已知条件
- 数据块与索引块大小:确定磁盘索引块和磁盘数据块的大小(通常单位为 KB 或 B)。
- 地址项相关:了解每个文件索引节点中地址项的数量、每个地址项的大小,以及 直接地址索引、一级间接地址索引、二级间接地址索引分别对应的地址项。
- 要访问的逻辑块号:明确题目中要求访问的文件逻辑块号。
二、计算不同索引方式的可访问范围
- 直接地址索引
- 计算直接地址索引的数量(设为 n),可访问的逻辑块号范围是从 0 到 n - 1 。
- 判断题目中给出的逻辑块号是否在该范围内,若在,则采用直接地址索引。
- 一级间接地址索引
- 根据索引块大小和地址项大小,计算一个索引块能存放的地址项数量 m = 索引块大小 / 地址项大小。
- 可访问的逻辑块号范围是直接地址索引范围上限 + 1 到 直接地址索引范围上限 + m 。
- 判断逻辑块号是否在该范围内,若在,则采用一级间接地址索引。
- 二级间接地址索引
- 先算出一级间接索引能指向的索引块数量(同上述 m),每个索引块又能指向 m 个数据块,所以总共能访问 (m×m) 个数据块。
- 可访问逻辑块号范围是一级间接地址索引范围上限 + 1 及之后。判断逻辑块号是否在此范围,若在,则采用二级间接地址索引。
三、计算单个文件最大长度
- 分别计算各部分大小
- 直接地址索引部分:大小 = 直接地址索引数量 × 数据块大小。
- 一级间接地址索引部分:大小 = 一个索引块指向的数据块数量 × 数据块大小。
- 二级间接地址索引部分:大小 = 一级间接索引指向的索引块数量 × 一个索引块指向的数据块数量 × 数据块大小。
- 求和:将上述三部分大小相加,得到单个文件的最大长度。
性能指标 ⭐⭐
硬件相关的性能指标
- 计算机:涵盖时钟频率(主频)、运算速度与精度等基础性能指标,内存的存储容量、存储器的存取周期等存储相关指标,数据处理速率 PDR、吞吐量等数据处理指标,还有各种响应时间、利用率等运行状态指标,以及 RASIS 特性(可靠性、可用性、可维护性、完整性和安全性 )、平均故障响应时间等可靠性指标,另外还包括兼容性、可扩充性、性能价格比等综合指标。
- 路由器:设备吞吐量和端口吞吐量体现数据传输能力,全双工线速转发能力反映高效转发性能,丢包率、时延、时延抖动关乎数据传输质量,VPN 支持能力是特殊功能指标,端口硬件队列数影响数据缓冲处理,基于 Web 的管理和网管类型涉及管理便捷性与方式。
- 交换机:介绍了交换机类型、配置等基本信息,支持的网络类型决定适用范围,最大 ATM 端口数是端口数量指标,支持协议和标准则体现其与不同网络环境的适配性。
- 网络:从不同层级划分性能指标,包括设备级、网络级、应用级、用户级性能指标,吞吐量则是重要的综合性能衡量指标 。
软件角度的性能指标
- 操作系统:系统的可靠性指其持续稳定运行的能力;系统的吞吐量(量)表示单位时间内处理的任务数量;系统响应时间指从提交请求到接收到响应的时间间隔;系统资源利用率体现对 CPU、内存等资源的利用程度;可移植性指操作系统在不同硬件平台和环境中正常运行的能力。
- 数据库管理系统:包含数据库本身相关指标,如数据库大小、表数量、单个表大小等;也有管理系统方面的指标,像**最大并发事务处理能力(同一时间处理事务的数量)、负载均衡能力(合理分配任务负载)、最大连接数(允许同时连接到数据库的数量)**等。
- WEB 服务器:最大并发连接数指服务器能同时处理的客户端连接数量;响应延迟是从接收到请求到返回响应的时间;吞吐量表示单位时间内服务器处理的请求数量或数据量。 这些指标用于评估对应系统的性能表现。
性能指标
-
基本概念指标
- CPU时钟周期:CPU 时钟周期=1/主频
- 字长和数据通路宽度:
- 字长表示计算机一次能处理的二进制数据的位数,
- 数据通路宽度则是数据在计算机内部传输的通道宽度,
- 二者通常影响计算机的数据处理能力。
- 主频 = 外频 * 倍频:
- 主频即 CPU 的时钟频率,
- 外频是系统总线的工作频率,
- 倍频是 CPU 主频与外频之间的倍数关系,主频越高,CPU 运算速度理论上越快。
- 主存容量和存取速度:主存容量指计算机内存的大小,存取速度表示对内存数据读写的快慢,它们影响计算机的数据存储和读取效率。
-
运算相关指标
-
运算速度:包含
- CPI(平均每条指令的平均时钟周期个数)
- IPC(每时钟周期运行指令条数)。
- CPI 越低或 IPC 越高,运算速度越快。
-
MIPS 与 MFLOPS:
- MIPS(百万条指令每秒)用于衡量计算机每秒执行的整数指令数量;
- MFLOPS(每秒百万个浮点操作)用于衡量计算机每秒执行的浮点运算数量,
- 二者是衡量运算速度的量化指标
- 解题模板
- 计算执行一条基本指令的时间: 若已知执行一条基本指令需要的机器周期数为n,每个机器周期的时间为T(单位统一,如微秒),则执行一条基本指令的时间(t = n*T) 。
- 单位换算: 将执行一条基本指令的时间t的单位从微秒换算为秒,因为 MIPS 的时间基准是秒。换算
- 计算 MIPS 值: 根据 MIPS 定义,每秒执行的指令数为,再将其换算为 MIPS,即 。
-
-
其他性能指标
- 吞吐量与吞吐率:
- 吞吐量指在给定时间内系统处理的任务或数据量,
- 吞吐率是单位时间的吞吐量,反映系统的数据处理能力。
- 响应时间(RT)与完成时间(TAT):
- 响应时间是从提交请求到接收到响应的时间;
- 完成时间是完成一个任务所需的总时间,二者体现系统的及时性。
- 兼容性:指计算机硬件或软件在不同环境下正常工作,以及相互配合工作的能力。
- 吞吐量与吞吐率:
系统性能调整
性能调整的本质
- 当系统性能下降到较低水平时,性能调整主要是通过查找和消除系统中的瓶颈来实现,以提升系统性能。
不同系统的性能调整要点
- 数据库系统:性能调整涵盖多个方面,包括关注 CPU 和内存的使用状况,优化数据库设计(如表结构、索引等)和管理(如事务处理、数据备份等),监控进程或线程状态,留意硬盘剩余空间以及日志文件大小等,这些因素都会影响数据库系统的性能。
- 应用系统:主要从可用性(系统正常运行提供服务的能力)、响应时间(对用户请求的处理速度)、并发用户数(同时访问系统的用户数量)以及特定应用的系统资源占用(如 CPU、内存等资源的使用情况)等方面进行性能调整 。
性能调整的流程
- 准备工作:
- 识别约束:找出影响系统性能的各种限制因素,如硬件配置、软件版本等。
- 指定负载:明确系统在不同场景下需要处理的工作负荷,例如高峰时段和低谷时段的用户访问量。
- 设定性能目标:确定期望达到的性能指标,如响应时间要缩短到多少毫秒内,并发用户数要提升到多少等。
- 建立边界和期望:基于准备工作,确定性能调整的范围和预期效果。
- 循环流程:包括
- 分析(对系统当前性能状况进行分析,找出问题所在)
- 收集(收集系统运行数据,为分析和调整提供依据)
- 配置(根据分析结果对系统进行配置调整,如修改参数等)
- 测试(对调整后的系统进行测试,验证性能是否提升)
- 这个过程可能需要反复进行,直到达到满意的性能目标。
阿姆达尔(Amdahl)解决方案
基本原理
当对系统中的某个组件采用更快的执行方式时,系统性能的提升程度并非只取决于该组件改进的程度,还与这个组件在整个系统中被使用的频率,或者说其在总执行时间中所占的比例紧密相关。
加速比计算公式
公式为 ,其中:
- 代表不使用改进组件时完成整个任务的时间。
- 代表使用改进组件时完成整个任务的时间。
- 即加速比,用于衡量系统性能提升的倍数。
影响加速比的因素
- 改进比例:指在原系统中,能够被改进的部分在总执行时间里所占的比例,这个值始终小于(1) 。例如,若一个系统中可改进组件的执行时间占总时间的,那么。
- 性能提高值:表示如果整个系统都采用改进的执行方式,系统执行速度提高的倍数,该值总是大于(1)。比如,改进后组件的执行速度变为原来的(3)倍,那么 。
阿姆达尔定律强调了即使对系统的部分组件进行大幅优化,但如果该部分在整体中占比较小,系统整体性能提升也会受限,提醒在系统性能设计时要综合考虑可改进部分的占比和改进效果。
性能评价方法
-
基于 CPU 性能的评价方法
- 时钟频率法:通过 CPU 时钟频率的高低来衡量计算机运算速度,一般来说,时钟频率越高,运算速度越快。
- 指令执行速度法:用 MIPS(每秒百万条指令数)作为机器运算速度的单位,通过统计每秒执行的指令数量来评估性能。
- 等效指令速度法(Gibson mix,吉普森混合法):考虑到程序中各类指令使用比例不同,根据各类指令在程序中所占的比例((W_i))进行计算,从而更准确地评估计算机性能。
-
综合性能评价方法
- 数据处理速率法(PDR,Processing Data Rate):使用 PDR 值衡量机器性能,公式为(PDR = L/R) ,该方法不仅考虑 CPU,还考虑了存储内存等因素,PDR 值越大,性能越好。
- 综合理论性能法(CTP,Composite Theoretical Performance):以 MTOPS(每秒百万次理论运算)为单位,先算出处理部件每个计算单元的有效计算率,再根据不同字长调整得出理论性能,所有计算单元理论性能之和就是 CTP ,反映的是理论上的计算能力。
-
基于实际应用的评价方法
-
基准程序法:将应用程序中使用频率最高、最核心的部分作为基准测试程序(benchmark),通过运行这些典型程序来评估计算机系统性能,是目前广泛认可的较好测试方法 ,更贴近实际应用场景。
-
排名内容:从高到低依次是真实的程序、核心程序、小型基准程序、合成基准程序。
-
含义解读:
-
真实的程序:指在实际应用场景中完整运行的程序,由于它能全面反映计算机系统在真实工作负载下的性能表现,所以测试精确度最高。
-
核心程序:是从实际应用程序中提取出的使用最频繁、最关键的部分,虽然能模拟主要的计算任务,但相比真实程序缺少一些实际运行中的复杂情况,所以精确度次之。
-
小型基准程序:是专门为测试计算机性能设计的规模较小的程序,它针对特定的性能指标进行测试,但因场景简化,与实际应用有差距,测试精确度又低一些。
-
合成基准程序:是人为合成构造的用于测试性能的程序,它往往过于理想化,和真实的应用环境差异较大,因此测试精确度在这几类中最低 。
-
-
-
Web 服务器的性能评估
- 性能指标:在对 Web 服务器进行测试时,用于反映其性能的关键指标有
- 最大并发连接数(指服务器能够同时处理的客户端连接的最大数量)
- 响应延迟(从服务器接收到请求到返回响应所花费的时间)
- 吞吐量(单位时间内服务器处理的请求数量或数据量)。
- 评测方法:常见的 Web 服务器性能评测方法包括
- 基准性能测试(建立一个基础的性能参考标准,用于衡量服务器在正常负载下的性能表现)
- 压力测试(通过逐渐增加服务器的负载,测试其在高并发等极端情况下的性能极限)
- 可靠性测试(评估服务器在长时间运行过程中保持稳定性能和正常工作的能力) 。
流水线 ⭐⭐
执行时间计算公式
- 理论公式:
- 公式:) 。
- 其中,表示建立流水线的时间,即第一条指令在流水线各个阶段执行时间的总和,也就是第一条指令完整执行所花费的时间;
- 中,是指令的总数,是流水线周期(流水线中执行时间最长的阶段所需的时间),表示从第二条指令开始,后面条指令在流水线中执行所需的时间。
- 实践公式:
- 。
- 该公式是在实际应用中,假设流水线各个阶段的执行时间都相同且为(为阶段数)时的简化公式。
- 同样是第一条指令的执行时间(即流水线建立时间),含义与理论公式中一致,代表后续条指令的执行时间。
流水线吞吐量
流水线的吞吐量(Though Put rate,TP)指的是在单位时间内流水线所完成的任务数量或输出的结果数量。它是衡量流水线工作效率的重要指标。
吞吐量计算公式
- 基本公式: ,即通过完成的指令数量除以执行这些指令所花费的总时间,来计算流水线在这段时间内的平均吞吐量。
- 最大吞吐量公式: 。其中为指令条数,为流水线的段数,为流水线周期(各段执行时间的最大值)。当指令条数趋于无穷大时,可得出流水线的最大吞吐量,其值等于流水线周期的倒数。
校验码⭐⭐
奇偶校验
- 奇偶校验码编码方法:由若干位有效信息(例如一个字节,即 8 位二进制数)再加上一个二进制位(校验位)共同组成校验码。增加校验位是为了进行数据校验,检测数据传输或存储过程中是否出现错误。
- 奇校验和偶校验的定义:
- 奇校验要求整个校验码(包含有效信息位和校验位)中 “1” 的个数为奇数。比如有效信息位是 1010,其中 “1” 的个数是 2 个,为偶数,那么奇校验位就应该是 1,使得整个校验码 10101 中 “1” 的个数为 3(奇数) 。
- 偶校验要求整个校验码(有效信息位和校验位)中 “1” 的个数为偶数。例如有效信息位是 1101,“1” 的个数是 3 个,为奇数,偶校验位就应该是 1,这样整个校验码 11011 中 “1” 的个数为 4(偶数)。
- 奇偶校验的功能:奇偶校验能够检测出 1 位的错误。因为如果传输或存储过程中 1 位发生改变,那么 “1” 的个数奇偶性就会改变。但它不能纠错,因为只知道有一位出错了,却无法确定到底是哪一位出错。
循环校验码 CRC(Cyclic Redundancy Check)
- 基本功能:明确指出 CRC 校验可以检错,但不能纠错。这意味着它能发现数据在传输或存储过程中是否出现错误,但无法自动修正错误。
- 编码方法:在 k 位信息码后拼接 r 位校验码。关键在于如何从 k 位信息位得到 r 位校验位,以及如何根据拼接后的 k + r 位信息码判断是否出错。
- 编码规律:
- 首先把待编码的 N 位有效信息表示为多项式 M (X) 。
- 然后将 M (X) 左移 K 位,即 M (X)×X^K,空出 K 位用于拼接 K 位余数(校验位)。
- 接着选取一个 K + 1 位的产生多项式 G (X),对 M (X)×X^K 做模 2 除 。
- 最后把左移 K 位后的有效信息与余数 R (X) 做模 2 加减,并拼接为 CRC 码,此时 CRC 码共 N + K 位。
- 检错方式:接收端用约定的生成多项式 G (X) 去除收到的 CRC 码。若结果余数为 0,则表示数据正确;若余数不为 0,则表示某一位出错,且不同的出错位对应不同的余数,余数和出错位序号间有唯一对应关系。
循环冗余校验码(CRC)编码计算的题目:
- 题目条件:
- 给出原始报文为 “10111”,这是需要进行 CRC 编码的数据信息。
- 生成多项式为 “”
- 题目要求:基于给定的原始报文和生成多项式,计算出进行 CRC 编码后的结果 ,也就是要在原始报文后添加合适的校验位,得到完整的 CRC 编码数据。
校验码对比
- 奇偶校验:
- 校验码位数:固定为1位。
- 校验码位置:一般拼接在有效信息的头部。
- 检错纠错能力:可以检测出信息中奇数位的错误,但不具备纠错能力 。
- 校验方式:分为奇校验和偶校验。奇校验要求最终整个校验码中“1”的个数为奇数;偶校验要求最终整个校验码中“1”的个数为偶数。
- CRC循环冗余校验:
- 校验码位数:由生成多项式的最高次幂决定,比如生成多项式为,最高次幂是4,校验码就是4位。
- 校验码位置:拼接在有效信息位的尾部。
- 检错纠错能力:能够检测出错误,但不能自动纠错。
- 校验方式:通过模2除法对有效信息多项式运算求余数,将得到的余数拼接作为校验位。
- 海明校验:
- 校验码位数:需满足,其中(m)是信息位的位数,r是校验位的位数。
- 校验码位置:插入在有效信息位中间的特定位置,即)位置 ,如第1、2、4、8等位。
- 检错纠错能力:不仅可以检测错误,还能够纠正错误。
- 校验方式:本质是分组奇偶校验,通过对不同分组进行奇偶校验来确定错误位置并纠错。
数据传输⭐
数据传输控制的几种方式
- 程序控制(查询)方式:包含无条件传送和程序查询方式。
- 这种方式方法简单,硬件开销小,但输入输出(I/O)能力不高,会严重影响中央处理器(CPU)的利用率,因为 CPU 需要不断查询设备状态。
- 程序中断方式:相比程序控制方式,CPU 无需一直等待 I/O 设备准备好,当 I/O 设备完成操作时,会向 CPU 发送中断请求,CPU 响应中断处理数据,提高了传输请求的响应速度。
- 直接内存访问(DMA)方式:用于在主存与外设之间实现高速、批量的数据交换。
- 直接内存访问控制器(DMAC)向总线裁决逻辑提出总线请求,
- CPU 执行完当前总线周期后释放总线控制权,
- 随后 DMA 响应并通过 DMAC 通知 I/O 接口开始 DMA 传输,比程序控制和中断方式更高效。
- 通道方式:通道是一种专用的、有较强 I/O 处理能力的部件,它能独立执行通道程序,使 CPU 从繁杂的 I/O 操作中解脱出来。
- I/O 处理机:I/O 处理机基本独立于 CPU 工作,具有更强的 I/O 处理能力,可进一步提高系统的并行处理能力。