使用说明
这份资料适合:
- 期末考前快速背诵
- 简答题、名词解释、对比题突击
- 不知道怎么组织答案时,直接套模板
一、简答题万能答题方法
1. 标准答题结构
结论 + 原因 + 过程/特点 + 小结
也可以记成:
是什么 + 为什么 + 怎么做 + 有什么作用
2. 标准书写模板
先下结论:
×××是……
再写原因:
这样做是因为……
再写具体过程/特点:
其过程(或特点)包括……
1. …
2. …
3. …
最后总结:
因此,……
3. 阅卷老师喜欢的答题方式
- 先写关键词,再展开
- 用“1、2、3”分点写
- 每点尽量只写一个中心
- 优先写教材原话和术语
- 对比题一定列“相同点 / 不同点”
第一章 计算机系统概述
1. 冯·诺依曼计算机的组成及功能
速记口诀
两输运控存
即:
- 输入设备
- 输出设备
- 运算器
- 控制器
- 存储器
标准答案
冯·诺依曼计算机由输入设备、输出设备、运算器、控制器和存储器五大部件组成。
- 输入设备:将程序和数据输入计算机。
- 输出设备:将计算机处理结果输出给用户。
- 运算器:完成算术运算和逻辑运算。
- 控制器:负责取指令、分析指令,并发出控制信号,协调各部件工作。
- 存储器:用于存放程序、数据以及中间结果。
关键结论
- 运算器和控制器合起来称为 CPU
- 冯·诺依曼机的核心思想是 存储程序
2. 存储程序工作方式
3句话速记版
- 程序和数据都用二进制表示,并预先存入存储器。
- 计算机运行时按地址自动取出指令并执行。
- 程序可实现自动、连续运行,提高了工作效率。
标准答案
存储程序工作方式是指:把程序和数据以二进制形式事先存放在存储器中,计算机在运行时自动从存储器中逐条取出指令、分析并执行,从而实现程序的自动连续控制。这种方式是现代计算机工作的基础。
高频关键词
- 二进制
- 预先存储
- 自动取指
- 连续执行
3. 指令执行过程的四个阶段
速记口诀
取分执存
即:
- 取指令
- 分析指令
- 执行指令
- 存储结果
标准答案
一条指令的执行通常包括以下四个阶段:
- 取指令:根据程序计数器 PC 给出的地址,从存储器中取出指令。
- 分析指令(译码) :分析该指令的操作码和地址码,确定要完成什么操作。
- 执行指令:由相应部件完成具体操作。
- 存储结果:将运算结果写回寄存器或存储器。
图示记忆
取指令 → 分析指令 → 执行指令 → 存储结果
4. 计算机系统层次结构
速记口诀
微机操汇高
从低到高分别是:
- 微程序机器层
- 机器语言机器层
- 操作系统机器层
- 汇编语言机器层
- 高级语言机器层
标准答案
计算机系统通常按功能抽象为多个层次,由低到高依次为:
- 微程序机器层:最靠近硬件,由微指令控制硬件工作。
- 机器语言机器层:直接执行机器指令。
- 操作系统机器层:向上提供系统调用和管理功能。
- 汇编语言机器层:用助记符表示机器指令。
- 高级语言机器层:面向程序员,使用高级语言编程。
记忆点
- 越往下越接近硬件
- 越往上越方便人使用
5. 为什么 MIPS 不能很好反映计算机性能?
标准答案
MIPS 表示每秒执行的百万条指令数,但它不能全面反映计算机性能,主要原因有:
- 忽略了指令复杂程度
不同指令完成的工作量不同,单纯比较条数不合理。 - 忽略了程序结构差异
不同程序使用的指令类型和比例不同,MIPS 不具有通用可比性。 - 忽略了存储器、I/O 等因素影响
程序运行性能不仅取决于 CPU 指令速度,还与 Cache、主存、外设等有关。 - 理论值和实际性能可能不一致
某机器 MIPS 高,不一定实际运行程序更快。
一句话总结
MIPS 只反映“指令执行速度”,不能全面反映“程序实际运行性能”。
第二章 数据的表示和运算
1. 为什么计算机采用二进制?
标准答案
计算机采用二进制的主要原因有:
- 易于物理实现
二进制只有 0 和 1 两种状态,正好与电子器件的通断、高低电平对应。 - 运算规则简单
二进制运算规则比十进制简单,便于设计硬件电路。 - 抗干扰能力强
只有两种状态,识别可靠,不易受噪声影响。 - 适合逻辑运算
二进制中的 0、1 与逻辑真、假天然对应。
2. 原码、反码、补码的作用及补码优势
补码速记
正数不变,负数取反加 1
标准答案
计算机中有原码、反码和补码等带符号数表示方法,其中补码最常用。
- 原码:符号位表示正负,其余位表示数值大小。
- 反码:正数反��与原码相同,负数反码为原码符号位不变,其余位按位取反。
- 补码:正数补码与原码相同,负数补码等于反码加 1。
采用补码的优点:
- 可以把减法统一成加法,简化运算器设计。
- 0 的表示唯一,而原码和反码中 0 有正零、负零之分。
- 便于实现符号位和数值位统一处理。
3. 浮点数的表示范围和精度由什么决定?
速记
阶码管范围,尾数管精度
标准答案
浮点数一般由符号位、阶码和尾数组成。
- 阶码决定表示范围
阶码越长,指数范围越大,可表示的数值范围越广。 - 尾数决定表示精度
尾数位数越多,可保留的有效数字越多,精度越高。
一句话总结
阶码影响“能表示多大/多小”,尾数影响“表示得有多准”。
4. 为什么要对浮点数进行规格化?
标准答案
对浮点数进行规格化的目的主要有:
- 提高表示精度
通过调整尾数,使最高有效位尽量非 0,从而充分利用尾数位。 - 统一表示形式
同一个数只保留一种规范表示,便于比较和运算。 - 提高运算效率
规格化后,浮点加减乘除的处理规则更统一。
两种规格化操作
| 操作 | 方向 | 结果 |
|---|---|---|
| 左规 | 尾数左移,阶码减小 | 用于尾数过小的情况 |
| 右规 | 尾数右移,阶码增大 | 用于尾数过大的情况 |
记忆说明
- 左移尾数 → 数值变大,所以要阶码减小来平衡
- 右移尾数 → 数值变小,所以要阶码增大来平衡
5. 为什么汉字信息要使用多种编码?
标准答案
汉字处理通常需要多种编码,因为不同环节的需求不同。
- 输入码:供人输入汉字,如拼音码、五笔码。
- 内码:供计算机内部存储和处理,如 GB2312、GBK。
- 字模码:用于显示或打印汉字字形,如点阵信息。
原因总结
- 人输入要方便
- 机器处理要统一
- 显示输出要有字形
记忆口诀
输入给人用,内码给机器用,字模给显示用
第三章 程序的转换及机器级表示
1. 高级语言程序如何变成可执行文件?
标准流程
源程序
→ 编译
→ 目标文件
→ 链接
→ 可执行文件
详细过程
- 词法分析:把源程序字符流分解成单词符号。
- 语法分析:检查程序结构是否符合语法规则。
- 语义分析:检查语义是否正确,如类型是否匹配。
- 代码生成:生成目标代码。
- 代码优化:改进目标代码,提高运行效率。
- 链接:把多个目标文件和库文件连接成最终可执行文件。
2. 无条件转移指令与调用指令的区别
标准答案
无条件转移指令和调用指令都能改变程序执行顺序,但两者不同:
相同点
- 都会修改程序计数器 PC
- 都会引起程序流程转移
不同点
- 无条件转移指令
只改变 PC 的值,程序跳到新地址继续执行,一般不自动返回。 - 调用指令
除了改变 PC 的值外,还要保存返回地址,以便子程序执行结束后返回原程序。
一句话区分
跳转只走不回,调用先记住来路再过去。
3. 按值传递和按地址传递的区别
标准答案
- 按值传递
传递的是实参值的副本,形参修改不会影响实参。 - 按地址传递
传递的是变量的地址,通过地址访问原变量,因此形参修改可能影响实参。
对比表
| 方式 | 传递内容 | 是否影响原变量 |
|---|---|---|
| 按值传递 | 值的副本 | 不影响 |
| 按地址传递 | 地址 | 影响 |
记忆比喻
- 按值传递 = 给你一张复印件
- 按地址传递 = 告诉你原件放哪里
4. 为什么递归开销较大?
标准答案
递归的开销较大,主要体现在以下方面:
- 栈空间开销大
每次递归调用都要保存返回地址、局部变量、现场信息等。 - 函数调用次数多
每层递归都要执行调用和返回操作,增加时间消耗。 - 递归层数深时容易栈溢出
当递归过深时,系统栈空间可能不足。
一句话总结
递归本质上是“用时间和栈空间换程序结构的简洁”。
5. 为什么数据要地址对齐?
标准答案
数据地址对齐是指把数据存放在其长度整数倍的地址上。这样做的原因有:
- 提高访存效率
存储器通常按字、块进行访问,对齐后一次访存即可取出完整数据。 - 减少访存次数
若数据跨越两个存储单元,CPU 需要两次访问才能取到。 - 有利于硬件设计
对齐访问更符合总线和存储器的工作方式。
结论
地址对齐的核心目的是提高访问速度。
第四章 可执行文件的生成与加载
1. 链接器的两项主要工作
标准答案
链接器的主要工作包括:
- 符号解析
把程序中引用的符号与其定义对应起来,比如函数名、全局变量名。 - 重定位
在各目标模块最终位置确定后,修改指令和数据中的地址信息,使其指向正确位置。
一句话记忆
先找人(符号解析),再定住址(重定位)
2. 可执行文件中常见节的内容
标准答案
| 节名 | 存放内容 |
|---|---|
.text | 程序指令代码 |
.rodata | 只读数据、常量、字符串常量 |
.data | 已初始化的全局变量、静态变量 |
.bss | 未初始化的全局变量、静态变量 |
补充理解
.text:能执行.rodata:只读不能改.data:有初值.bss:没初值
3. 静态链接与动态链接的区别
标准答案
静态链接和动态链接的主要区别如下:
| 对比项 | 静态链接 | 动态链接 |
|---|---|---|
| 链接时机 | 生成可执行文件时 | 程序运行时 |
| 处理方式 | 将库代码复制到可执行文件中 | 运行时装入共享库 |
| 可执行文件大小 | 较大 | 较小 |
| 是否依赖外部库 | 不依赖 | 依赖 |
| 是否共享库代码 | 不能共享 | 可以共享 |
总结
- 静态链接:独立、稳定,但文件大
- 动态链接:节省空间、便于共享,但依赖环境
4. 虚拟地址空间有什么好处?
标准答案
虚拟地址空间的好处主要有:
- 为每个进程提供独立地址空间
程序都认为自己独占内存,彼此互不干扰。 - 避免地址冲突
不同进程可以使用相同的逻辑地址,而映射到不同物理地址。 - 提高安全性和稳定性
一个进程一般不能直接访问另一个进程的空间。 - 便于实现内存管理
支持分页、分段、按需调页等机制。 - 扩充主存容量效果
借助外存形成虚拟内存,使程序感觉可用内存更大。
5. shell 加载程序的过程
标准答案
shell 加载并运行程序的一般过程是:
- 用户在命令行输入命令。
- shell 对命令进行解释,识别要执行的程序。
- shell 创建新进程。
- 操作系统加载可执行文件到该进程的地址空间。
- 设置程序运行所需环境。
- 程序从入口地址开始执行。
一句话总结
shell 负责“接收命令并发起执行”,真正装入和运行由操作系统完成。
第五章 存储器层次结构
1. 为什么要采用层次化存储结构?
标准答案
采用层次化存储结构,是为了同时满足速度快、容量大、成本低这三个要求。
由于:
- CPU 速度越来越快,而主存速度相对较慢,形成速度矛盾;
- 主存容量有限,而程序规模越来越大,形成容量矛盾;
- 高速存储器价格高,低速存储器价格低,存在成本矛盾。
因此,计算机采用由寄存器、Cache、主存、外存组成的层次结构,以取得综合性能最优。
2. 为什么引入 Cache 能提高效率?
标准答案
Cache 是位于 CPU 和主存之间的高速小容量存储器。引入 Cache 能提高效率的原因是:
-
Cache 访问速度接近 CPU
比主存快得多,可减少 CPU 等待时间。 -
程序访问具有局部性
- 时间局部性:刚访问过的数据以后可能还会访问
- 空间局部性:访问某地址后,其附近地址也可能很快被访问
-
CPU 优先访问 Cache
若命中,则快速完成访问;若未命中,再访问主存。
结论
利用局部性原理提高命中率,从而提高平均访存速度。
3. Cache 三种映射方式比较
标准答案
| 映射方式 | 关系 | 是否要替换策略 | 特点 |
|---|---|---|---|
| 直接映射 | 主存块只能放到固定行 | 不需要 | 简单、快,但冲突多 |
| 全相联映射 | 主存块可放任意行 | 需要 | 冲突少,但成本高 |
| 组相联映射 | 主存块映射到固定组,组内任意行 | 需要 | 折中方案 |
详细理解
1)直接映射
- 一个主存块只能对应一个固定 Cache 行
- 实现最简单
- 但不同主存块可能争同一个位置,冲突较大
2)全相联映射
- 一个主存块可放在任意 Cache 行
- 最灵活,冲突少
- 但查找成本高,硬件实现复杂
3)组相联映射
- 先分组,再在组内灵活放置
- 兼顾速度与命中率
- 实际中较常用
4. 为什么直接映射不需要替换策略?
标准答案
因为直接映射中,每个主存块在 Cache 中只有唯一固定位置。当该位置已有旧块时,新块到来直接覆盖即可,不存在“该换哪一个”的选择问题,所以不需要替换策略。
5. 为什么要考虑 Cache 的写策略?
标准答案
当 CPU 修改数据时,通常先修改 Cache 中的副本,而主存中的对应数据可能尚未同步更新,这会导致 Cache 与主存内容不一致。因此需要规定何时、如何把修改结果写回主存,这就是 Cache 写策略。
常见写策略
| 写策略 | 做法 | 优点 | 缺点 |
|---|---|---|---|
| 写回法 | 仅在该块被替换时写回主存 | 写主存次数少,速度快 | Cache 与主存可能暂时不一致 |
| 写通法 | 每次写 Cache 时同步写主存 | 数据一致性好 | 写主存频繁,速度慢 |
6. Cache-主存 与 主存-外存 分别解决什么问题?
标准答案
- Cache—主存层次
主要解决 CPU 与主存之间的速度不匹配问题。 - 主存—外存层次
主要解决主存容量不足带来的容量问题。
一句话区分
上层解决“快不快”,下层解决“够不够”。
7. 物理地址与逻辑地址的区别
标准答案
| 对比项 | 逻辑地址 | 物理地址 |
|---|---|---|
| 含义 | 程序中使用的地址 | 内存芯片中的真实地址 |
| 是否能直接访问主存 | 不能 | 能 |
| 是否需要转换 | 需要 | 不需要 |
补充
逻辑地址到物理地址的转换通常由 MMU(内存管理单元) 完成。
为什么由硬件实现?
- CPU 访问内存非常频繁
- 若由软件转换,会严重降低效率
- 硬件转换速度快,能满足实时访问要求
第六章 I/O 子系统
1. I/O 子系统的层次结构
标准答案
I/O 子系统一般包括以下层次:
用户层 I/O 软件
↓
设备独立性软件
↓
设备驱动程序
↓
中断处理程序
↓
I/O 硬件
各层作用简述
- 用户层 I/O 软件:提供给用户的接口,如库函数。
- 设备独立性软件:统一不同设备的使用方式。
- 设备驱动程序:直接控制具体设备工作。
- 中断处理程序:处理设备发出的中断请求。
- I/O 硬件:实际完成输入输出操作。
2. 三种 I/O 控制方式比较
标准答案
| 方式 | CPU 参与情况 | 效率 | 适用场景 |
|---|---|---|---|
| 程序直接控制 | CPU 一直轮询等待 | 低 | 低速、简单设备 |
| 中断控制 | I/O 完成时才通知 CPU | 中 | 中速设备 |
| DMA 控制 | CPU 仅在开始和结束介入 | 高 | 高速、大批量数据传输 |
详细说明
1)程序直接控制方式
- CPU 不断查询设备是否完成
- CPU 长时间等待
- 利用率低
2)中断控制方式
- 设备完成后主动通知 CPU
- CPU 不必一直等待
- 提高了 CPU 利用率
3)DMA 方式
- 数据在设备和主存之间直接传送
- CPU 不参与中间搬运
- 适合高速成块传输
记忆规律
效率越来越高,CPU 参与越来越少
3. 为什么 DMA 能提高批量数据传输效率?
标准答案
DMA(直接存储器存取)能提高批量数据传输效率,原因有:
- 数据不再经过 CPU 中转
由 DMA 控制器直接在设备和主存之间传送数据。 - 减少 CPU 开销
CPU 只需在开始时进行设置,结束后进行处理。 - CPU 与 I/O 可并行工作
在 DMA 传输过程中,CPU 可以继续执行其他任务。 - 适合高速和大批量数据传输
如磁盘读写、网卡收发等场景。
4. 保护和恢复现场时为什么要关中断?
标准答案
在中断处理过程中,需要先保护现场、处理完后再恢复现场。如果在保护或恢复过程中再次发生中断,就可能打乱原有寄存器和状态信息,导致现场被破坏、系统状态不一致,甚至产生严重错误。
因此,在保护和恢复现场时通常要暂时关中断,以保证这一过程的原子性和正确性。
核心关键词
- 防止嵌套打断
- 防止现场破坏
- 保证原子性
5. I/O 端口编址方式有哪些?
标准答案
I/O 端口编址方式主要有两种:
| 编址方式 | 地址空间 | 优点 | 缺点 |
|---|---|---|---|
| 独立编址 | I/O 与内存分开 | 互不占用地址空间 | 需专用 I/O 指令 |
| 统一编址 | I/O 与内存统一 | 指令系统统一,编程方便 | 占用内存地址空间 |
记忆点
- 独立编址:地址分家
- 统一编址:地址合并
高频简答题“可直接背诵版”
1. 为什么引入 Cache?
Cache 是位于 CPU 和主存之间的高速缓冲存储器。由于 CPU 的工作速度远高于主存,若每次都访问主存,会使 CPU 长时间等待。程序访问又具有时间局部性和空间局部性,因此把近期常用的数据放入 Cache 中,CPU 优先访问 Cache,命中后可快速取数,从而提高平均访存速度和系统整体性能。
2. 为什么采用层次化存储结构?
采用层次化存储结构是为了同时解决速度、容量和成本之间的矛盾。高速存储器速度快但价格高、容量小,低速存储器容量大但速度慢,因此把寄存器、Cache、主存和外存按层次组织起来,可以在较低成本下获得较高的整体性能。
3. 静态链接与动态链接的区别
静态链接是在生成可执行文件时,把所需库代码复制到程序中,因此可执行文件较大,但运行时不依赖外部库。动态链接是在程序运行时装入共享库,可执行文件较小,多个程序还能共享同一份库代码,但运行时依赖外部环境。
4. 三种 I/O 控制方式的区别
程序直接控制方式中,CPU 必须不断轮询设备状态,效率最低;中断控制方式中,设备完成后通过中断通知 CPU,CPU 不必一直等待,效率较高;DMA 方式中,数据可直接在设备和主存之间传送,CPU 只在开始和结束时参与,效率最高,适合高速批量传输。
5. 虚拟地址空间有什么好处?
虚拟地址空间为每个进程提供独立的地址环境,避免进程之间发生地址冲突,同时提高系统安全性和稳定性。通过地址映射,还可方便地实现内存保护、共享和虚拟内存管理,使程序看起来拥有比实际主存更大的空间。
高频对比题模板
1. 静态链接 vs 动态链接
相同点
- 都是为了解决程序中外部符号引用问题
- 都用于生成或支持程序运行
不同点
- 时机不同
- 处理方式不同
- 文件大小不同
- 是否依赖外部库不同
- 是否支持共享不同
2. 按值传递 vs 按地址传递
相同点
- 都是函数参数传递方式
不同点
- 传递内容不同
- 是否影响原变量不同
- 适用场景不同
3. 直接映射 vs 全相联映射 vs 组相联映射
对比角度
- 映射灵活性
- 实现复杂度
- 命中率
- 是否需要替换策略
4. 程序直接控制 vs 中断控制 vs DMA
对比角度
- CPU 参与程度
- 数据传输路径
- 系统效率
- 适用设备类型
考前速背口诀总表
| 知识点 | 口诀 |
|---|---|
| 冯·诺依曼五大部件 | 两输运控存 |
| 指令执行过程 | 取分执存 |
| 计算机层次结构 | 微机操汇高 |
| 浮点数 | 阶码管范围,尾数管精度 |
| 参数传递 | 值传副本,址传位置 |
| 链接器工作 | 先解析,后重定位 |
| Cache 作用 | 利用局部性,提高命中率 |
| I/O 控制方式 | 效率递增,CPU 递减 |
考前 30 分钟速查版
- 冯·诺依曼五大部件及功能
- 存储程序工作方式
- 指令执行四阶段
- 计算机系统五层结构
- 二进制优点
- 补码规则和优点
- 浮点数范围与精度
- 规格化原因
- 高级语言到可执行文件过程
- 按值传递与按地址传递
- 递归为什么开销大
- 地址对齐原因
- 链接器两大任务
-
.text/.rodata/.data/.bss内容 - 静态链接与动态链接区别
- 虚拟地址空间的好处
- 为什么用层次存储
- 为什么 Cache 能提高效率
- Cache 三种映射方式
- Cache 写回与写通
- 逻辑地址与物理地址
- I/O 子系统层次
- 三种 I/O 控制方式
- DMA 的优点
- 为什么中断现场保护要关中断
- I/O 两种编址方式
最后答题提醒
简答题得分关键不在“写多”,而在“写准”。
建议按下面顺序作答:
- 先写定义/结论
- 再写 2~4 个关键理由
- 最后一句总结作用或意义
如果你愿意,我还可以继续帮你整理成以下任一种版本:
- 超适合打印的 A4 双页浓缩版
- 按“名词解释 / 简答题 / 对比题”分类版
- 每道题都整理成“可直接默写的标准答案版”
- 再压缩成考前 10 分钟速背版
本文使用 mdnice 排版