Appearance
计算机系统
更新: 4/10/2025 字数: 0 字 时长: 0 分钟
计算机组成(⭐)
处理器体系结构
冯·诺依曼结构【普林斯顿结构】
程序指令与数据存储器合并在一起,指令和数据都通过相同的数据总线传输。一般用于PC处理器,如i3、i5、i7处理器。

提示
平常使用的计算机属于冯·诺依曼结构。
哈佛结构
程序指令与数据分开存储,可以并行读取,有较高的数据吞吐率。一般用于嵌入式系统处理器。
有4条总线:指令的数据总线和地址总线;数据的数据总线和地址总线。
提示
DSP属于哈佛结构。
存储系统

局部性原理
- 时间局部性:指程序中的某条指令一旦执行,不久后该指令可能再次执行。典型原因是程序中存在着大量的循环操作。
- 空间局部性:指一旦程序访问了某个存储单元,不久后其附近的存储单元也会被访问,即程序在一段时间内所访问的地址可能集中在一定的范围内。典型情况是程序顺序执行。
总线
总线是一组能为多个部件分时共享的信息传输线,用来连接多个部件并为之提供信息交换通路。总线通常是半双工的。
- 挂接在总线上的多个部件智能分时向总线发送数据,但可以同时从总线接收数据。
- 通过总线复用方式可以减少总线中信号线的数量,以较少的信号线传输更多的信息。
总线分类
- 芯片内总线:用于集成电路芯片内部各部分的连接元件级总线。用于一块电路板内各元器件的连接。
- 内总线:用于计算机各组成部分(CPU、内存和接口等)的连接。
- 外总线:用于计算机与外部设备或计算机与计算机之间的连接或通信。
- 串行总线:数据是一位一位进行传输的,在传输中每一位数据都占据一个固定的时间长度。用于长距离传输,波特率可调整,正确性依赖校验码,数据传输方式可以使用多种。
- 并行总线:将数据字节的各位用多条数据线同时传输。用于短距离传输。
效率 | 传输方式 | 描述 |
---|---|---|
低 | 程序控制(查询)方式 | 分为无条件传送和程序查询方式;方法简单,硬件开销小, 但I/O能力不高,严重影响CPU利用率。 |
程序中断方式 | 与程序控制方式相比,中断方式因为CPU无需等待而提高了 传输请求的响应速度。CPU与I/O传输可并行。 | |
DMA方式 | 为了主存与外设之间实现高速、批量数据交换而设置的。 CPU与I/O传输可并行。 | |
通道方式 | ||
高 | I/O处理机 |
计算机语言

CISC和RISC
复杂指令集【CISC】 | 精简指令集【RISC】 | |
---|---|---|
指令 | 数量多,使用频率差别大,可变长格式 | 数量少,使用频率接近,定长格式; 大部分为单周期指令,操作寄存器, 只有Load/Store操作内存 |
寻址方式 | 多 | 少 |
实现方式 | 微程序控制技术(微码) | 增加了通用寄存器;硬布线逻辑控制为主; 适合采用流水线 |
其它 | 研制周期长 | 优化编译,有效支持高级语言 |
代表 | Inter、AMD的x86平台CPU | ARM和Power |
操作系统(⭐⭐⭐⭐)

- 人机之间的接口
- 应用软件与硬件之间的接口
- 控制程序运行
- 管理系统的硬件、软件、数据资源
- 为应用程序的开发和运行提供一个高效率的平台
- 进程管理、内存管理、文件管理
操作系统分类 | 描述 |
---|---|
批处理 | 单道批:一次一个作业入内存,作业由程序、数据、作业说明书组成。 多道批:一次多个作业入内存。宏观上并行,微观上串行。提高CPU和外部设备利用率 |
分时 | 采用时间片轮转的方式为多个用户提供服务,每个用户感觉独占系统。 特点:多路性、独立性、交互性和及时性。 |
实时 | 实时控制系统和实时信息系统。 交互能力要求不高,可靠性要求高(规定时间内响应并处理) |
网络 | 方便有效共享网络资源,提供服务软件和有关协议的集合 主要有:Unix、Linux和Windows Server系统 |
分布式 | 任意两台计算机可以通过通信交换信息,是网络OS的更高级形式, 具有透明性、可靠性和高性能等特性 |
微机 | Windows:微软开发的图形用户界面、多任务、多线程操作系统 Linux:免费使用和自由传播的类Unix操作系统,多用户、多任务、多线程和多CPU |
嵌入式 | 运行在智能芯片环境中,特点:微型化、可定制(针对硬件变化配置)、实时性、 可靠性、易移植性(HAL和BSP支持) |
进程管理
进程是程序在一个数据集合上运行的过程,是系统进行资源分配的基本单位,拥有独立的地址空间。它由程序块、进程控制块PCB和数据块三部分组成。
PCB是进程存在的唯一标志,包含进程标识符、状态、位置信息、控制信息、队列指针(链接同一状态的进程)、优先级、现场保护区等。
线程
线程是处理器调度和执行的基本单位。分为用户线程和内核线程。
进程状态

- 就绪态:进程获得了除CPU外的一切所需资源,一旦分配到CPU即可运行。
- 运行态:进程占用CPU正在运行的状态。
- 阻塞态【等待态】:一个进程正在等待某一事件发生(例如I/O请求)而暂时停止运行,此时即使把CPU分配给进程也无法运行。
进程调度
同步与互斥
- 临界资源:一次仅允许一个进程(线程)使用的共享资源。每个进程中访问临界资源的那段代码成为临界区。
- 互斥(间接制约关系):如千军万马过独木桥。
- 同步(直接制约关系):速度有差异,在一定情况下相互等待。
信号量
信号量是一种特殊的变量(全局变量)。
- 可以表示资源数量,为0表示所有资源都在使用中,申请资源的进程会阻塞直到信号量大于0。
- 为负数时可以表示排队进程数量。
PV操作(操作系统原语):
- P操作:信号量-1,申请资源
- V操作:信号量+1,释放资源

前驱图
前驱图用于描述进程之间执行的先后顺序。
- 1个箭头表示1个前驱关系。如上图进程P1指向P2,则记录一个前驱关系为 (P1, P2)。
- 没有前驱进程的节点是起始进程,没有后继进程的节点是终结进程。如上图P1是起始进程,P4是终结进程。
资源分配图
- 资源R指向进程P表示分配资源;P指向R表示申请资源。
- 先分配资源,后申请资源

上图中,P1和P2阻塞,P3非阻塞。
死锁
死锁成立的四大条件:
- 互斥
- 占用并等待
- 非抢占
- 循环等待
提示
不可能死锁条件:系统资源数 >= 进程数 * (进程所需资源数 - 1) + 1
如何预防死锁?答:打破死锁成立的四大条件。
如何避免死锁?答:银行家算法。
银行家算法
分配资源的原则:
- 当一个进程对资源的最大需求量不超过系统中的资源数时,可以接纳该进程。
- 进程可以分期请求资源,但请求的总数不能超过最大需求量。
- 当系统现有的资源不能满足进程尚需的资源数时,对进程的请求可以推迟分配,但总能使进程在有限的时间里得到资源。
内存管理
为什么要有虚拟内存管理?
- 解决物理内存产生的碎片问题。
- 缓解物理内存不足的问题,充分利用系统资源。
分段式
每个程序在编译时会被分成几个段:如代码区、堆区、栈区、全局变量区等。根据这些区(段)来分配内存。每个段使用自己单独的虚拟地址空间 ,且段内的内存空间可以动态增加或减少。
优点:多道程序共享内存,各段程序修改互不影响。
缺点:内存利用率低,很容易产生内存外部碎片,导致没有足够连续的内存运行新的进程,需要进行内存交换(swap),由于硬盘速度比内存慢很多,如果交换的内存空间比较大,将严重影响系统性能。
练习:下图中段地址(0, 25K)和(0, 35K)是否合法?

点击查看答案
(0, 25K)合法;(0, 35K)非法。
(段号, 段长),段号为0的段长为30K,基址为40K,即内存空间范围是40K~70K,25K+40K=65K<70K,没有越界,是合法的;而35K+40K=75K>70K,越界了,非法。
分页式
将物理内存(帧)和逻辑内存(页)都分为同样大小的块(Linux中,1块=4KB), 由MMU进行逻辑内存和物理内存的转换管理。相比于分段式,其划分的粒度更小。
提示
高级程序语言编程使用的是逻辑地址,实际程序运行时内存中使用的是物理地址。
- 逻辑地址 = 页号 + 页内地址
- 物理地址 = 页帧号 + 页内地址
优点:利用率高,碎片小,分配和管理简单
缺点:增加了系统开销;可能产生抖动现象
4KB的页可表示0-4095,二进制为12个1,所以12位是页内地址,多余的高位表示页号/页帧号。如:
逻辑地址2CDE,010 1100 1101 1110,高2位10即表示页号2,假设页号2对应的页帧号为6,则
物理地址6CDE,110 1100 1101 1110
淘汰原则(按下面的顺序考虑):
- 状态位必须为1
- 访问位为0
- 修改位为0
段页式
分段式和分页式的综合体。先分段,再分页。程序的地址空间划分成多个拥有独立地址空间的段,每个段上的地址空间划分成大小相同的页。
优点:空间浪费小,存储共享容易,存储保护容易。
缺点:由于管理软件的增加,复杂性和开销也随之增加,需要的硬件以及占用的内存也有所增加,使得执行速度大大降低。

页面置换算法(扩展知识)
最佳页面置换算法【OPT】:置换未来最长时间不访问的页面。由于未来难以估算,这只是理想中的最优算法,可以用来对比其他算法的优化程序。
先进先出置换算法【FIFO】:即对内存中驻留时间最长的页面进行置换。
最近最久未使用【LRU】:需要维护一个链表维护所有的页面,开销较大,实际应用比较少。
时钟页面置换算法【CLOCK】:将所有页面保存在一个环形链表中。
最不常用页面置换算法【LFU】:对每个页面加入一个计数器,每次访问该页面计数器就+1,淘汰计数值最小的。
缺点:加入计数器的硬件成本较高;只考虑了频率问题,没考虑时间问题,可能由于某个页面在之前访问频率高而导致计数值很大,即使未来不用了也不能被置换出去(可以周期性将值除以2)。
文件管理
磁盘管理
读取磁盘数据的时间应该包括三部分:
- 寻道时间:磁头移动到磁道所需要的时间。
- 等待时间【旋转延迟时间】:磁头到达指定磁道后要等待磁盘旋转到指定的扇区所需的时间。
- 传输时间
磁盘调度算法
算法 | 特点 | 描述 |
---|---|---|
先来先服务【FCFS】 | 顺序 | 按请求磁道号的顺序移动 |
最短寻道时间有限【SSTF】 | 贪心 | 按距离当前磁道号距离最短的磁道移动 |
扫描算法【SCAN】 | 单向 | 像电梯一样先沿着一个方向处理完所有请求,然后反向处理 |
循环扫描算法【CSCAN】 | 双向 | SCAN是处理完一个方向的所有请求后就反向, CSCAN是沿着此方向移动到磁盘的末端才反向。 |
SCAN和CSCAN举例:楼层有30层,SCAN算法就是电梯从15层向下移动,可能到第3层就已经处理了向下方向的所有请求,此时电梯就会在第3层反向处理上升的请求。而CSCAN是不管向下还有没有请求,必须向下移动到第1层(磁盘末端)才会反向。
文件系统
索引文件

位示图
系统性能(⭐)
性能指标
硬件性能指标
分类 | 主要指标 |
---|---|
计算机 | 时钟频率(主频)、数据处理速率PDR、吞吐率 |
路由器 | 端口吞吐量、丢包率、时延、时延抖动 |
交换机 | 支持协议和标准、最大ATM端口数 |
网络 | 吞吐量;设备级、网络级、应用级、用户级性能指标 |
主频:即每秒有多少个CPU时钟周期T。
CPI(Clock Per Instruction): 平均每条指令的平均时钟周期个数
IPC(Instruction Per Clock):每个时钟周期内运行的指令条数
MIPS(Million Instruction Per Second):每秒多少百万条指令,适合衡量标量处理机的性能。
MFLOPS(Million Float-point Operations Per Second):每秒多少百万个浮点操作,适合衡量向量处理机的性能。
此外,MIPS和MFLOPS通常是峰值性能。
软件性能指标
分类 | 主要指标 |
---|---|
操作系统 | 吞吐率(量)、响应时间、资源利用率、可靠性 |
数据库 | 最大并发事务处理能力、负载均衡能力、最大连接数 |
Web服务器 | 最大并发连接数、响应延迟、吞吐量 |
性能调整
当系统性能降到最基本的水平时,性能调整由查找和消除瓶颈组成。
- 数据库系统:性能调整主要包括CPU/内存使用情况、优化数据库设计、优化数据库管理以及进程/线程状态、硬盘剩余空间、日志文件大小等。
- 应用系统:性能调整主要包括可用性、响应时间、并发用户数以及特定应用的系统资源占用情况等。
阿姆达尔解决方案
对系统中某组件采用某种更快的执行方式,所获得的系统性能的改变程度,取决于该组件被使用的频率,或所占总执行时间的比例。加速比计算公式如下:
其中,
性能评估方法
方法 | 描述 | 评估维度 |
---|---|---|
时钟频率法 | 以时钟频率的高低来衡量速度 | CPU |
指令执行速度法 | 用加法指令的MIPS来衡量机器运算速度 | CPU |
等效指令速度法 【吉普森混合法】 | 通过各类指令在程序中所占比例进行计算所得。 | CPU和指令比例不同问题 |
数据处理速率法【PDR】 | 衡量机器性能:值越大,机器性能越好 | CPU和存储 |
综合理论性能法【CTP】 | 使用MTOPS(每秒百万次理论计算)表示。 首先算出处理部件每个计算单元的有效计算率, 再按不同字节加以调整,得出该计算单元的理论性能, 所有组成该部件的计算单元的理论性能之和即为CTP。 | CPU和存储 |
基准程序法 | 把程序中用得最多、最频繁的核心代码作为评价标准,是目前一致承认测试系统性能的较好方法。 | 综合考虑多部分 |
测试精确度排名:真实程序 > 核心程序 > 小型基准程序 > 合成基准程序
Web服务器的性能评测方法:
- 基准性能测试
- 压力测试
- 可靠性测试
系统监视的常见方式:
- 通过系统本身提供的命令。如:Unix/Linux系统中的ps、top等。
- 通过系统记录文件查询系统在特定时间内的运行状态。
- 集成命令、文件记录和可视化技术的监控工具。如:Windows的Perfmon应用程序。