第一章:计算机系统概述
硬件核心部件
中央处理器(CPU)
- 定义:计算机系统的核心部件
- 功能:负责执行程序中的指令、处理数据,并控制计算机各部件协调工作
- 组成:包含算术逻辑单元(ALU)和控制单元
- 执行内容:算术运算、逻辑运算、数据传送和输入/输出操作的控制
- 记忆关键词:核心 + 执行指令 + 处理数据 + 协调控制
- 类比:相当于人的大脑,负责思考和指挥
算术逻辑部件(ALU)
- 定义:CPU中的一个关键组件
- 功能:负责执行算术运算(加、减、乘、除)和逻辑运算(与、或、非、异或)
- 工作方式:接收来自控制单元的操作码,根据操作码执行相应运算
- 记忆关键词:算术 + 逻辑 + 运算执行者
- 类比:相当于计算器,专门负责计算
控制器
-
定义:CPU中的另一个关键组件
-
功能:
- 从主存储器中取出指令
- 对指令进行译码
- 根据指令要求,有序地、协调地指挥和控制计算机各部件自动工作
-
记忆关键词:取指令 + 译码 + 指挥协调
-
类比:相当于总指挥/调度员
寄存器类
通用寄存器
- 定义:CPU内部的高速存储单元
- 功能:用于暂存指令、数据和地址
- 特点:可以被CPU快速访问,从而加速数据处理速度
- 记忆关键词:CPU内部 + 高速 + 暂存 + 快速访问
程序计数器(PC)
- 定义:一个特殊的寄存器
- 功能:存储下一条将要执行的指令的地址
- 工作方式:CPU执行一条指令时,PC自动加1(或按照跳转指令更改),指向下一条要执行的指令
- 记忆关键词:存下一条指令地址 + 自动加1 + 可被跳转修改
- 易混淆:PC存的是"下一条"而不是"当前"指令的地址
指令寄存器(IR)
- 定义:用于暂存当前正在执行的指令
- 功能:CPU从主存储器中读取一条指令后,将其放入IR中,解码并执行
- 记忆关键词:存当前指令 + 解码执行
- 与PC对比:PC指向"下一条",IR存的是"当前这条"
主存地址寄存器(MAR)
- 定义:用于存放欲访问的主存单元的地址
- 地址来源:由CPU中的程序计数器给出
- 连接方式:与主存储器地址译码电路相连
- 功能:为CPU访问主存提供所要访问的主存单元的地址
- 记忆关键词:存地址 + 连接地址译码器 + 告诉主存"去哪取"
主存数据寄存器(MDR)
- 定义:用于暂存从主存储器读出的一条指令或一个数据字,或准备写入主存储器的字
- 连接方式:与主存储器数据总线相连
- 配合使用:与MAR配合,实现CPU与主存储器之间的数据交换
- 记忆关键词:存数据 + 读出/写入 + 连接数据总线 + 和MAR配合
MAR与MDR对比记忆
| 比较项 | MAR | MDR |
|---|
| 存什么 | 地址(去哪取) | 数据(取到了什么) |
| 连什么 | 地址译码电路 | 数据总线 |
| 方向 | CPU→主存 | 双向(读/写) |
存储与传输
主存储器
- 定义:计算机中的主要存储部件
- 功能:用于存储程序和数据
- 特点:CPU可以直接访问主存储器中的数据,不需要通过其他外部设备
- 记忆关键词:主要存储 + 存程序和数据 + CPU直接访问
总线
- 定义:计算机各部件之间传输信息的公共通道
- 组成:由导线组成
- 功能:在CPU、主存储器、I/O设备之间传输数据和控制信号
- 记忆关键词:公共通道 + 导线 + 连接各部件
- 类比:相当于城市里的公路系统
指令相关
机器指令
- 定义:CPU能直接识别并执行的指令
- 组成:由操作码和操作数地址码组成
- 功能:每条指令完成一个基本微操作(如数据传送、算术运算等)
- 记忆关键词:CPU直接执行 + 操作码+操作数 + 基本微操作
指令操作码
- 定义:机器指令中的一部分
- 功能:用于指定该指令所要执行的操作类型(如加法、减法、存储等)
- 记忆关键词:指令的一部分 + 指定操作类型
语言层次
高级程序设计语言
- 定义:一种接近于人类自然语言和数学语言的程序设计语言
- 特点:易于编写和理解
- 执行方式:经过编译或解释后能转换成机器语言执行
- 例子:C、Java、Python
- 记忆关键词:接近人类语言 + 易编写 + 需编译/解释
汇编语言
- 定义:一种用助记符表示的指令系统中的指令
- 层级:低级程序设计语言
- 执行方式:需要汇编程序翻译成机器语言才能执行
- 例子:
MOV AX, BX
- 记忆关键词:助记符 + 低级语言 + 需汇编程序翻译
机器语言
- 定义:直接用二进制代码指令表达的计算机语言
- 特殊地位:计算机唯一能直接识别和执行的语言
- 例子:
10110000 01100001
- 记忆关键词:二进制 + 唯一直接执行
机器级语言
- 定义:与特定机器或处理器直接相关的低级编程语言
- 包含:机器语言和汇编语言
- 记忆关键词:特定机器相关 + 包含机器语言和汇编语言
程序类型
源程序
- 定义:用高级程序设计语言编写的、尚未编译或解释的程序
- 记忆关键词:高级语言写的 + 还没翻译
目标程序
- 定义:源程序经编译或解释后得到的机器语言程序
- 特点:可以直接被计算机执行
- 记忆关键词:翻译后的 + 机器语言 + 可执行
源程序→目标程序的对比
| 比较项 | 源程序 | 目标程序 |
|---|
| 语言 | 高级语言 | 机器语言 |
| 状态 | 未翻译 | 已翻译 |
| 可否执行 | ❌ | ✅ |
翻译程序类
编译程序
- 定义:将高级语言源程序整体翻译成目标程序的软件工具
- 过程:词法分析 → 语法分析 → 语义分析 → 优化 → 代码生成
- 特点:先全部翻译,再执行;生成独立的目标程序
- 记忆关键词:整体翻译 + 五个阶段 + 生成目标程序
解释程序
- 定义:直接执行高级语言源程序的软件工具
- 工作方式:对源程序进行逐句扫描和解释,并立即执行
- 特点:不生成独立的目标程序
- 记忆关键词:逐句执行 + 不生成目标程序
汇编程序
- 定义:将汇编语言源程序翻译成机器语言目标程序的软件工具
- 过程:将汇编指令转换为机器指令,并分配内存地址
- 记忆关键词:汇编→机器 + 分配地址
编译vs解释vs汇编对比
| 比较项 | 编译程序 | 解释程序 | 汇编程序 |
|---|
| 输入 | 高级语言 | 高级语言 | 汇编语言 |
| 输出 | 目标程序 | 无独立输出 | 机器语言程序 |
| 方式 | 整体翻译 | 逐句执行 | 逐条翻译 |
| 执行速度 | 快(已编译) | 慢(边译边执行) | 快 |
语言处理系统
- 定义:用于处理各种程序设计语言的软件工具集合
- 包含:编译器、解释器、汇编器等
- 记忆关键词:工具集合 + 编译器+解释器+汇编器
人员与设备
设备控制器
- 定义:计算机中的一个硬件部件
- 功能:控制和管理外部设备(如打印机、磁盘驱动器等)与CPU之间的数据传输
- 记忆关键词:硬件 + 控制外部设备 + 数据传输桥梁
最终用户
- 定义:直接使用计算机系统和应用程序的个人或组织
- 交互方式:通过用户界面与计算机交互,完成各种任务
- 记忆关键词:直接使用 + 用户界面
系统管理员
- 定义:负责管理和维护计算机系统的专业人员
- 职责:安装、配置、监控和维护计算机硬件、软件和网络
- 记忆关键词:管理维护 + 硬件软件网络
应用程序员
- 定义:负责开发、编写和维护各种应用程序的专业人员
- 使用工具:高级程序设计语言
- 目标:满足用户的特定需求
- 记忆关键词:开发应用程序 + 高级语言 + 用户需求
系统程序员
- 定义:负责设计、开发和维护计算机系统软件的专业人员
- 工作内容:编��操作系统、编译器、数据库管理系统等核心软件
- 记忆关键词:系统软件 + 操作系统+编译器+DBMS
体系结构与性能
指令集体系结构(ISA)
- 定义:定义了计算机指令的格式、数量和功能,以及CPU如何执行这些指令
- 重要性:是软件和硬件之间的接口规范
- 记忆关键词:指令格式+数量+功能 + 软硬件接口
微体系结构(Microarchitecture)
- 定义:计算机处理器设计的一个关键部分
- 内容:定义了处理器内部各组件的结构、功能以及它们之间的交互方式
- 影响:决定了处理器如何执行指令、管理数据、处理中断,影响性能、功耗和效率
- 记忆关键词:处理器内部设计 + 组件结构和交互 + 影响性能功耗
- 与ISA区别:ISA是"做什么",微体系结构是"怎么做"
透明(Transparency)
- 定义:某个方面对使用者是不可见的或不需要考虑的
- 例子:内存管理的某些细节对程序员是透明的,由操作系统或硬件自动管理
- 记忆关键词:不可见 + 不需关心 + 自动管理
- 注意:计算机中的"透明"与日常用语相反,日常说"透明"是看得见,计算机中是看不见
响应时间(Response Time)
- 定义:系统从接收到输入/请求到产生相应输出/响应所需的时间
- 应用:衡量用户界面、网络请求、数据库查询等的速度
- 记忆关键词:从请求到响应的时间 + 衡量速度
- 用户关心:单个任务的完成时间
吞吐率(Throughput)
- 定义:系统在单位时间内处理输入或输出数据的数量或速度
- 衡量:系统处理数据的整体效率
- 度量单位:每秒处理事务数、每秒传输字节数等
- 记忆关键词:单位时间 + 处理量 + 整体效率
- 与响应时间区别:响应时间关注单个任务,吞吐率关注整体处理能力
用户CPU时间(User CPU Time)
- 定义:CPU在执行用户程序时所花费的时间
- 区分:不同于系统CPU时间(执行操作系统内核任务的时间)
- 记忆关键词:执行用户程序的时间 + 不含系统时间
时钟周期(Clock Cycle)
- 定义:计算机处理器中的一个基本时间单位
- 含义:处理器执行一个基本操作所需的时间
- 作用:每个时钟周期,处理器执行一系列预定义的指令或操作
- 记忆关键词:最小时间单位 + 一个基本操作
主频(Clock Rate)
- 定义:处理器每秒钟的时钟周期数
- 单位:赫兹(Hz)、兆赫兹(MHz)、吉赫兹(GHz)
- 关系:主频 = 1 / 时钟周期
- 规律:主频越高,执行指令速度通常越快
- 记忆关键词:每秒周期数 + 越高越快
CPI(Cycles Per Instruction)
- 定义:处理器执行一条指令所需的平均时钟周期数
- 衡量:处理器的指令执行效率
- 规律:CPI越低,执行指令速度越快
- 公式:执行时间 = 指令数 × CPI × 时钟周期
- 记忆关键词:每条指令的平均周期数 + 越低越快
三者关系公式
执行时间 = 指令数 × CPI / 主频
= 指令数 × CPI × 时钟周期
基准程序(Benchmark Program)
- 定义:一组用于测试和评估计算机系统性能的预定义程序和测试套件
- 功能:通过运行基准程序,比较不同系统的性能,找出性能瓶颈
- 记忆关键词:测试性能 + 预定义程序 + 比较不同系统
MIPS(Millions of Instructions Per Second)
- 定义:衡量处理器性能的指标
- 含义:处理器每秒钟能执行的百万条指令数
- 规律:MIPS越高,性能越好
- 局限:不能全面反映计算机性能
- 记忆关键词:每秒百万条指令 + 越高越好 + 有局限性
峰值MIPS(Peak MIPS)
- 定义:处理器在理想条件下能达到的最高MIPS值
- 条件:没有遇到任何瓶颈(内存延迟、I/O限制等)
- 本质:性能上限,实际很难达到
- 记忆关键词:理想条件 + 最高MIPS + 性能上限
相对MIPS(Relative MIPS)
- 定义:用于比较不同处理器或系统性能的MIPS指标
- 计算:将一个系统的MIPS值除以另一个基准系统的MIPS值
- 结果:得到一个相对性能的比值
- 记忆关键词:比较用 + 除以基准值 + 相对比值
第二章:数据的表示和运算
数值基本概念
真值
- 定义:数学上的值,即实际想要表示的数
- 特点:不考虑计算机内部如何表示
- 例子:+5、-3、0.75
- 记忆关键词:数学真实值 + 不涉及编码方式
机器数
- 定义:在计算机内部用来表示数值的二进制编码
- 特点:可能因编码方式(原码、补码等)和机器特性而不同
- 例子:-5的补码表示为
11111011(8位)
- 记忆关键词:计算机内部编码 + 与编码方式有关
真值vs机器数
| 比较项 | 真值 | 机器数 |
|---|
| 含义 | 实际数学值 | 计算机内部编码 |
| 表示 | 带正负号 | 二进制序列 |
| 例子 | -5 | 11111011(补码) |
数据类型
数值数据
- 定义:可以表示数量或大小的数据
- 例子:整数、浮点数
- 记忆关键词:表示数量/大小
非数值数据
- 定义:不能表示为数量或大小的数据
- 例子:字符、文本、图片、音频
- 记忆关键词:不是数量,是符号/图像
无符号整数
- 定义:一个非负的二进制数
- 特点:只表示大小,不表示正负
- 范围:n位可表示 0 到 2ⁿ-1
- 记忆关键词:非负 + 只有大小 + 无正负
带符号整数
- 定义:可以表示正数或负数的整数
- 表示方式:最高位作为符号位(0正1负),其余位表示数值大小
- 编码方式:原码、反码、补码
- 记忆关键词:有正负 + 最高位是符号位
数的表示方法
定点数
- 定义:一种数值表示方法,小数点位置是固定的
- 用途:主要用于表示整数或小数
- 分类:定点整数(小数点在最后)、定点小数(小数点在符号位后)
- 记忆关键词:小数点位置固定
浮点数
- 定义:一种数值表示方法,小数点位置可以浮动
- 组成:由尾数(mantissa)和阶码(exponent)两部分组成
- 用途:表示非常大或非常小的数
- 表示:N = M × 2^E(M是尾数,E是阶码)
- 记忆关键词:小数点位置浮动 + 尾数+阶码 + 表示极大/极小数
尾数
- 定义:浮点数中用于表示数值大小的部分
- 作用:决定浮点数的精度
- 记忆关键词:数值大小部分 + 决定精度
阶和阶码
- 阶:浮点数中小数点实际位置与默认位置之间的偏移量
- 阶码:这个偏移量的编码表示
- 作用:决定浮点数的表示范围
- 记忆关键词:偏移量 + 编码表示 + 决定范围
定点数vs浮点数
| 比较项 | 定点数 | 浮点数 |
|---|
| 小数点 | 固定 | 浮动 |
| 表示范围 | 较小 | 很大 |
| 精度 | 固定 | 可变 |
| 复杂度 | 简单 | 复杂 |
浮点数运算概念
溢出
- 定义:计算机在运算过程中,结果超出了它能表示的范围
- 后果:可能导致不正确的结果或错误
- 分类:上溢(太大)、下溢(太小)
- 记忆关键词:结果超范围 + 导致错误
规格化数
- 定义:满足特定条件的浮点数
- 条件:尾数的最高位是1(对于二进制数)
- 目的:提高浮点数的精度和范围
- 记忆关键词:尾数最高位为1 + 提高精度
左规
- 定义:浮点数运算中的一种规格化操作
- 操作:尾数向左移动,阶码相应减小
- 触发时机:尾数不满足规格化条件(最高有效位不是1)时
- 记忆口诀:左移尾数,阶码减
右规
- 定义:浮点数运算中的另一种规格化操作
- 操作:尾数向右移动,阶码相应增加
- 触发时机:尾数溢出时(运算结果尾数超出范围)
- 记忆口诀:右��尾数,阶码加
左规vs右规对比
| 比较项 | 左规 | 右规 |
|---|
| 尾数方向 | 左移 | 右移 |
| 阶码变化 | 减小 | 增加 |
| 触发条件 | 尾数不规格化 | 尾数溢出 |
| 可能次数 | 可能多次 | 最多一次 |
编码系统
ASCII码
- 全称:American Standard Code for Information Interchange
- 功能:用于表示英文字符和其他控制字符的编码系统
- 特点:7位编码,可表示128个字符
- 记忆关键词:美国标准 + 英文字符 + 7位/128个
汉字输入码
- 定义:用户通过键盘等设备输入汉字时所使用的编码
- 例子:拼音、五笔等
- 特点:不是二进制编码,是为方便人类输入设计的
- 记忆关键词:输入用 + 拼音/五笔 + 非二进制
汉字内码
- 定义:计算机内部用于表示汉字的编码
- 例子:GB2312、GBK、UTF-8
- 特点:二进制编码,是计算机存储和传输汉字的唯一标识
- 记忆关键词:内部存储 + 二进制 + 唯一标识
三种汉字编码对比
| 编码类型 | 用途 | 是否二进制 | 举例 |
|---|
| 输入码 | 人输入汉字 | ❌ | 拼音、五笔 |
| 内码 | 计算机内部存储 | ✅ | GB2312、UTF-8 |
| 字模码 | 显示汉字字形 | ✅ | 点阵信息 |
数据存储
字长
- 定义:计算机内部处理数据的位数
- 例子:32位或64位处理器
- 意义:决定了计算机一次能处理的数据量
- 影响:字长越长,处理能力越强,地址空间越大
- 记忆关键词:一次处理的位数 + 32位/64位
大端方式(Big Endian)
- 定义:一种数据存储方式
- 规则:高位字节存储在内存的低地址端,低位字节存储在高地址端
- 记忆口诀:大端 = 大头(高位)在前(低地址)
- 类比:像人类读数字的习惯,从高位读到低位
小端方式(Little Endian)
- 定义:另一种数据存储方式
- 规则:低位字节存储在内存的低地址端,高位字节存储在高地址端
- 记忆口诀:小端 = 小头(低位)在前(低地址)
- 使用者:Intel x86处理器采用小端方式
大端vs小端图示
数据:0x12345678
大端(高位在低地址):
地址 0x00 0x01 0x02 0x03
数据 12 34 56 78
小端(低位在低地址):
地址 0x00 0x01 0x02 0x03
数据 78 56 34 12
ALU(算术逻辑单元)
- 定义:计算机中的一个重要组件
- 功能:执行算术运算(加、减、乘、除)和逻辑运算(与、或、非)
- 位置:CPU内部
- 记忆关键词:算术+逻辑运算 + CPU内部核心组件
第三章:程序的转换及机器级表示
程序与代码
1. 机器语言程序
- 定义:由二进制代码组成的程序,直接由计算机硬件执行的指令集合
- 特点:计算机唯一能直接执行的程序形式
- 记忆关键词:二进制 + 硬件直接执行
2. 汇编指令
- 定义:由助记符表示的机器指令
- 关系:与机器语言一一对应
- 转换:可被汇编器转换成对应的机器语言指令
- 例子:
MOV AX, BX
- 记忆关键词:助记符 + 一一对应机器指令
3. 汇编语言程序
- 定义:使用汇编语言编写的程序,以助记符形式表示的指令序列
- 执行前:需要经过汇编器转换为机器语言程序
- 记忆关键词:助记符序列 + 需汇编器转换
4. 汇编助记符
- 定义:在汇编语言中使用的符号
- 功能:代表对应的机器指令
- 例子:MOV、ADD、SUB、JMP
- 记忆关键词:符号 + 代表机器指令
5. 汇编程序
- 定义:将汇编语言程序转换成机器语言程序的程序
- 别名:汇编器(Assembler)
- 记忆关键词:汇编→机器 + 翻译工具
6. 反汇编程序
- 定义:将机器语言程序转换回汇编语言程序的程序
- 用途:调试、逆向工程
- 方向:与汇编程序方向相反
- 记忆关键词:机器→汇编 + 反向翻译
7. 机器级代码
- 定义:直接在计算机硬件上执行的指令
- 来源:通常由汇编器将汇编语言转换而来
- 记忆关键词:硬件直接执行 + 汇编器生成
指令集架构
8. CISC(Complex Instruction Set Computer)
- 全称:复杂指令集计算机
- 特点:指令集包含多种复杂指令
- 指令特征:指令长度不固定、功能强大、一条指令可完成复杂操作
- 代表:Intel x86
- 记忆关键词:复杂 + 指令多样 + 长度不固定
9. RISC(Reduced Instruction Set Computer)
- 全称:精简指令集计算机
- 特点:指令集相对简单,每条指令执行时间相对较短
- 指令特征:指令长度固定、格式规整、易于流水线
- 代表:ARM、MIPS
- 记忆关键词:精简 + 指令简单 + 长度固定 + 适合流水线
CISC vs RISC
| 比较项 | CISC | RISC |
|---|
| 指令数量 | 多(数百条) | 少(几十条) |
| 指令长度 | 不固定 | 固定 |
| 指令复杂度 | 复杂 | 简单 |
| 执行时间 | 不等 | 基本相等 |
| 流水线 | 难实现 | 易实现 |
| 代表 | x86 | ARM、MIPS |
寄存器类(第三章扩展)
10. 通用寄存器
- 功能:存储临时数据和地址,存储计算过程中的中间结果
- IA-32中:EAX、EBX、ECX、EDX等
11. 变址寄存器
- 功能:存储地址计算中的偏移量
- 用途:实现数组、结构体等数据结构的访问
- IA-32中:ESI、EDI
12. 基址寄存器
- 功能:存储内存地址的基址
- 配合:与变址寄存器一起使用,计算实际内存地址
- IA-32中:EBX、EBP
13. 栈指针寄存器
- 功能:存储栈顶地址
- 用途:实现函数调用和局部变量存储
- IA-32中:ESP
- 特点:随push/pop操作自动变化
14. 指令指针寄存器
- 功能:存储当前正在执行指令的地址(实际指向下一条)
- IA-32中:EIP(即PC)
- 记忆关键词:指向下一条指令
15. 标志寄存器
- 功能:存储程序运行状态标志
- 包含:零标志ZF、进位标志CF、溢出标志OF、符号标志SF等
- IA-32中:EFLAGS
16. 条件标志(条件码)
- 定义:标志寄存器中的一部分
- 功能:表示上一条指令的执行结果
- 用途:控制条��跳转指令的执行
- 主要标志:
| 标志 | 含义 | 设置条件 |
|---|
| ZF | 零标志 | 结果为0时置1 |
| CF | 进位/借位标志 | 发生进位/借位时置1 |
| OF | 溢出标志 | 有符号数溢出时置1 |
| SF | 符号标志 | 结果为负时置1 |
寻址方式
17. 寻址方式
- 定义:指定操作数地址的方式
- 种类:立即寻址、寄存器寻址、相对寻址、直接寻址等
- 记忆关键词:怎么找到操作数
18. 立即寻址
- 定义:直接将操作数的值嵌入到指令中
- 特点:最快,不需要访存
- 例子:
movl $5, %eax(把5直接放入EAX)
- 记忆关键词:数据在指令里 + 最快
19. 寄存器寻址
- 定义:使用寄存器存储操作数的地址
- 特点:很快,数据在寄存器中
- 例子:
movl %ebx, %eax(EBX的值送到EAX)
- 记忆关键词:数据在寄存器里
20. 相对寻址
- 定义:使用相对于某个基址的偏移量来寻址
- 特点:常用于跳转指令
- 例子:
jmp .+10(跳转到当前地址+10处)
- 记忆关键词:基址+偏移量
21. 存储器操作数
- 定义:指令中的操作数直接引用存储器中的数据
- 特点:需要访问内存,速度较慢
- 记忆关键词:操作数在内存中
寻址方式速度排序
立即寻址 > 寄存器寻址 > 直接寻址 > 间接寻址
(最快) (最慢)
地址模式
22. 实地址模式
- 定义:CPU直接使用物理地址访问内存的模式
- 特点:没有地址保护,程序可以访问任意地址
- 使用:早期8086处理器,现代计算机启动时短暂使用
- 记忆关键词:直接物理地址 + 无保护
23. 保护模式
- 定义:一种CPU工作模式
- 功能:操作系统可在其中对内存和其他资源进行保护和管理
- 特点:使用虚拟地址,有地址保护和权限检查
- 使用:现代操作系统的正常工作模式
- 记忆关键词:有保护 + 虚拟地址 + 权限管理
24. 有效地址
- 定义:执行指令时计算出的操作数在内存中的真实地址
- 计算:基址 + 变址 × 比例因子 + 位移量
- 记忆关键词:计算后的真实内存地址
25. 比例变址
- 定义:根据一个基址寄存器和一个比例系数来计算操作数地址
- 公式:有效地址 = 基址 + 变址 × 比例因子 + 偏移
- 用途:访问数组元素(比例因子 = 元素大小)
- 例子:
8(%ebp, %esi, 4) → 地址 = EBP + ESI×4 + 8
26. 非比例变址
- 定义:仅根据一个基址寄存器来计算操作数的地址
- 特点:没有比例系数
- 例子:
(%ebp, %esi) → 地址 = EBP + ESI
27. 比例系数(比例因子)
- 定义:用于比例变址计算的一个数值
- 取值:通常为1、2、4、8
- 对应:byte=1, short=2, int=4, double=8
- 记忆关键词:乘以变址寄存器 + 对应数据类型大小
多媒体指令
28. MMX指令
- 定义:Intel处理器中用于多媒体处理的指令集
- 特点:64位SIMD操作
- 记忆关键词:Intel + 多媒体 + 64位
29. SSE指令集
- 定义:Intel处理器中的扩展指令集
- 功能:实现**单指令多数据(SIMD)**操作
- 特点:128位SIMD操作,比MMX更强
- 记忆关键词:扩展 + SIMD + 128位
30. SIMD(Single Instruction Multiple Data)
- 定义:一种并行计算技术
- 功能:能够同时处理多个数据
- 原理:一条指令对多个数据同时执行相同操作
- 记忆关键词:单指令 + 多数据 + 并行
31. 多媒体扩展通用寄存器
- 定义:用于SIMD指令集操作的寄存器
- 例子:XMM0-XMM7(SSE),MM0-MM7(MMX)
- 记忆关键词:SIMD专用寄存器
栈与函数调用
32. 栈(Stack)
- 定义:一种**后进先出(LIFO)**的数据结构
- 用途:临时存储函数调用的上下文和局部变量
- 操作:push(压栈)、pop(弹栈)
- 增长方向:在x86中,栈向低地址方向增长
- 记忆关键词:LIFO + 函数调用 + 向低地址增长
33. 调用者保存寄存器
- 定义:在函数调用过程中,由调用者负责保存和恢复的寄存器
- IA-32中:EAX、ECX、EDX
- 含义:被调用函数可以随意修改这些寄存器
- 记忆关键词:调用者负责 + 被调用者可随意用
34. 被调用者保存寄存器
- 定义:在函数调用过程中,由被调用者负责保存和恢复的寄存器
- IA-32中:EBX、ESI、EDI
- 含义:被调用函数使用前必须先保存,返回前恢复
- 记忆关键词:被调用者负责 + 用前保存用后恢复
调用者vs被调用者保存
| 比较项 | 调用者保存 | 被调用者保存 |
|---|
| 谁保存 | 调用函数的一方 | 被调用的函数 |
| IA-32寄存器 | EAX, ECX, EDX | EBX, ESI, EDI |
| 含义 | 调用前自己保存 | 被调用者进入时保存 |
35. 帧指针寄存器
- 功能:指向当前函数调用的栈帧底部
- IA-32中:EBP
- 用途:作为访问函数参数和局部变量的基准地址
- 记忆关键词:栈帧底部 + EBP + 基准地址
36. 当前栈帧
- 定义:当前函数调用的栈帧
- 内容:存储了函数的参数、局部变量、返回地址等信息
- 边界:EBP指向底部,ESP指向顶部
- 记忆关键词:当前函数的栈空间 + 参数+局部变量+返回地址
参数传递与调用
37. 按值传递参数
- 定义:将参数的值传递给函数
- 特点:函数内部修改不影响原始变量
- 原理:传递的是值的副本
- 记忆关键词:传值副本 + 修改不影响原值
38. 按地址传递参数
- 定义:将参数的地址传递给函数
- 特点:函数可以直接访问和修改参数的值
- 原理:传递的是指针
- 记忆关键词:传地址 + 可修改原值
39. 嵌套调用
- 定义:在一个函数内部调用另一个函数的过程
- 例子:
func_A() 内部调用 func_B()
- 实现:通过栈保存每层调用的上下文
- 记忆关键词:函数内调函数 + 栈保存上下文
40. 递归调用
- 定义:函数直接或间接地调用自身的过程
- 必须有:终止条件(否则无限递归→栈溢出)
- 例子:阶乘
n! = n × (n-1)!
- 开销:深度越深,时间和空间开销越大
- 记忆关键词:调用自身 + 需要终止条件 + 开销大
第四章:可执行文件的生成与加载执行
链接相关
链接
- 定义:将多个源文件或目标文件中的代码和数据组合成一个可执行文件或共享库文件的过程
- 包含:符号解析 + 重定位
- 记忆关键词:多个文件→一个可执行文件
可重定位文件
- 定义:包含了程序的代码和数据,但还没有完成地址的最终分配
- 特点:可以在链接时进行地址的重定位
- 后缀:
.o(Linux)、.obj(Windows)
- 记忆关键词:有代码数据 + 地址未确定 + 需链接
可执行文件
- 定义:经过链接之后,完成了地址的最终分配,可以直接在操作系统上执行的文件
- 后缀:无后缀(Linux)、
.exe(Windows)
- 记忆关键词:地址已确定 + 可直接执行
符号解析
- 定义:在链接过程中,将符号(函数名、变量名)与其在程序中的地址或其他符号关联的过程
- 解决问题:确定每个符号引用对应哪个符号定义
- 记忆关键词:符号→地址 + 确定对应关系
重定位
- 定义:将程序中的符号引用与其真正的地址关联起来的过程
- 为什么需要:编译时不知道最终地址,链接时才确定
- 记忆关键词:符号引用→真正地址 + 修改地址
ELF文件结构
ELF头
- 全称:Executable and Linkable Format头
- 功能:描述可执行文件和共享库文件整体结构的数据结构
- 包含:文件类型、目标架构、入口地址、节头表位置等
- 记忆关键词:文件总体描述 + 入口信息
节头表
- 定义:包含可执行文件或共享库文件中各个**节(section)**的信息
- 信息:起始地址、大小、属性等
- 用途:链接器使用,用于组织各节
- 记忆关键词:各节的信息 + 链接器用
程序头表
- 定义:包含可执行文件或共享库文件中各个**程序段(segment)**的信息
- 信息:加载地址、大小、权限等
- 用途:加载器使用,用于将段映射到内存
- 记忆关键词:各段的信息 + 加载器用
节头表vs程序头表
| 比较项 | 节头表 | 程序头表 |
|---|
| 描述单位 | 节(section) | 段(segment) |
| 使用者 | 链接器 | 加载器 |
| 用途 | 组织代码和数据 | 映射到内存 |
段与节
只读代码段
- 内容:程序的代码
- 权限:只允许读取,不允许写入
- 组成:.text节 + .rodata节
- 记忆关键词:代码 + 只读
可读/写数据段
- 内容:程序的数据
- 权限:允许读取和写入
- 组成:.data节 + .bss节
- 记忆关键词:数据 + 可读写
符号类型
全局符号
- 定义:在整个程序中都可见的符号,可以被其他文件引用
- 例子:非static的函数和全局变量
- 记忆关键词:全局可见 + 可被其他文件引用
外部符号
- 定义:在当前文件中未定义,但在其他文件中定义的符号
- 例子:当前文件调用了其他文件定义的函数
- 记忆关键词:本文件未定义 + 其他文件定义
本地符号
- 定义:仅在当前文件中可见的符号,对其他文件不可见
- 例子:static修饰的函数和变量
- 记忆关键词:仅本文件可见 + static
强符号
- 定义:在链接过程中,优先选择的符号
- 例子:函数定义、已初始化的全局变量
- 规则:两个强符号同名→链接错误
- 记忆关键词:优先 + 函数和已初始化变量
COMMON符号
- 定义:未被初始化的全局变量或未定义的外部变量的符号
- 特点:弱符号的一种,链接时可被强符号覆盖
- 记忆关键词:未初始化全局变量 + 弱符号
链接方式
静态链接
- 定义:在编译时将所有的库文件链接到可执行文件中
- 特点:可执行文件包含所有代码,文件较大,不依赖外部库
- 优点:独立运行,不需要额外库文件
- 缺点:文件大,更新库需重新编译
- 记忆关键词:编译时链接 + 全部包含 + 文件大
共享库文件
- 定义:包含可执行文件所需的代码和数据
- 特点:可以在多个进程间共享使用
- 后缀:
.so(Linux)、.dll(Windows)
- 记忆关键词:共享代码 + 多进程共用
动态链接
- 定义:在程序运行时将共享库文件链接到内存中
- 特点:文件小,多程序共享库,更新方便
- 优点:节省空间,更新方便
- 缺点:运行时需要库文件,有额外加载开销
- 记忆关键词:运行时链接 + 共享库 + 文件小
动态链接器
- 定义:负责在程序运行时将共享库文件链接到内存中的系统程序
- 工作时机:程序加载时或运行中首次调用库函数时
- 记忆关键词:运行时 + 加载共享库 + 系统程序
动态链接库
- 定义:可以在程序运行时被动态链接到内存中使用的库文件
- 别名:共享库(.so)、DLL(.dll)
- 记忆关键词:运行时加载 + 可共享
静态链接vs动态链接
| 比较项 | 静态链接 | 动态链接 |
|---|
| 时机 | 编译时 | 运行时 |
| 文件大小 | 大 | 小 |
| 依赖性 | 不依赖外部库 | 需要共享库 |
| 更新 | 需重新编译 | 替换库文件即可 |
| 内存 | 每程序一份 | 多程序共享 |
进程与执行
进程
- 定义:计算机中正在运行的程序的实例
- 地位:操作系统进行资源分配和调度的基本单位
- 包含:代码、数据、堆栈、寄存器状态等
- 记忆关键词:运行中的程序 + 资源分配单位
进程描述符
- 定义:操作系统中用于描述进程的数据结构
- 内容:进程状态、PID、内存映射、打开文件等信息
- 记忆关键词:描述进程的数据结构 + 包含各种进程信息
命令行解释程序
- 定义:接收用户输入的命令行,将其解释为操作系统能执行的命令的程序
- 例子:bash、sh、cmd
- 别名:shell
- 记忆关键词:接收命令 + 解释执行 + shell
CPU执行相关
指令周期
- 定义:CPU执行一条指令所经历的时间周期
- 包含:取指、译码、执行、访存、写回等阶段
- 注意:不同指令的指令周期可能不同
- 记忆关键词:一条指令的完整执行时间
指令译码器
- 定义:负责将指令解码成对应的操作控制信号的硬件模块
- 位置:CPU控制器内部
- 功能:读取指令操作码,生成控制信号驱动各部件工作
- 记忆关键词:解码指令 + 生成控制信号 + 硬件模块
内部异常
- 定义:由程序执行过程中的错误或不正常情况引起的异常
- 例子:除零错误、缺页异常、非法指令
- 特点:同步的,由指令执行触发
- 记忆关键词:程序自身错误 + 同步 + 内部触发
外部中断
- 定义:由外部设备引起的中断
- 例子:硬件中断、时钟中断、键盘中断
- 特点:异步的,与当前执行指令无关
- 记忆关键词:外部设备 + 异步 + 外部触发
内部异常vs外部中断
| 比较项 | 内部异常 | 外部中断 |
|---|
| 来源 | 程序自身 | 外部设备 |
| 同步性 | 同步(可预期) | 异步(不可预期) |
| 例子 | 除零、缺页 | 键盘输入、时钟 |
数据通路与控制
数据通路
- 定义:CPU中负责数据传输和处理的部件的集合
- 包含:ALU、寄存器组、内部总线、多路选择器等
- 记忆关键词:数据流经的路径 + 传输和处理
执行部件
- 定义:CPU中负责执行指令的部件
- 包含:算术逻辑单元(ALU)等
- 记忆关键词:执行指令的部件 + ALU
功能部件
- 定义:CPU中用于实现特定功能的部件
- 例子:乘法器、除法器、浮点运算单元
- 记忆关键词:特定功能 + 乘法器/除法器
控制器
- 定义:CPU中负责控制整个运算过程的部件
- 功能:产生控制信号,协调各部件工作
- 记忆关键词:控制运算过程 + 产生控制信号
时钟信号
- 定义:CPU内部的时钟信号
- 功能:用于同步各个部件的工作
- 特点:周期性的方波信号
- 记忆关键词:同步各部件 + 周期性方波
指令流水线
- 定义:CPU中用于提高指令执行速度的一种技术
- 原理:将指令执行过程划分为多个阶段并行处理
- 类比:像工厂流水线,多条指令在不同阶段同时执行
- 典型阶段:取指→译码→执行→访存→写回
- 记忆关键词:提高速度 + 多阶段并行 + 流水线
第五章:存储器层次结构
存储器基本类型
随机存取存储器(RAM)
- 全称:Random Access Memory
- 功能:临时存储计算机当前正在处理的数据和程序
- 特点:可以快速读写,但断电数据丢失
- 类别:易失性存储器
- 记忆关键词:临时存储 + 快速读写 + 断电丢失
只读存储器(ROM)
- 全称:Read-Only Memory
- 功能:一旦数据被写入,就不能被修改或删除
- 用途:存储计算机的基本启动指令或固件(如BIOS)
- 特点:非易失性,断电不丢失
- 记忆关键词:只读 + 不可修改 + 存启动指令
易失性存储器
- 定义:当电源关闭后,数据会丢失的存储设备
- 例子:RAM(SRAM和DRAM)
- 记忆关键词:断电丢失
RAM vs ROM
| 比较项 | RAM | ROM |
|---|
| 可读写 | ✅ 读写都行 | ❌ 只能读 |
| 断电 | 数据丢失 | 数据保留 |
| 速度 | 快 | 较慢 |
| 用途 | 运行中的数据和程序 | 启动指令、固件 |
存储器组织
存储阵列(Bank)
- 定义:一组物理上相互独立的内存模块
- 特点:每个模块有自己的地址和数据总线
- 优势:允许处理器并行访问多个Bank,提高性能
- 记忆关键词:独立内存模块 + 并行访问
编址单位
- 定义:在存储设备中用于标识和访问单个数据元素的最小单位
- 常见:按字节编址(每个地址对应一个字节)
- 记忆关键词:最小寻址单位
记忆单元(Cell)
- 定义:存储设备中最基本的存储单位
- 存储量:一个二进制位(bit)
- 记忆关键词:最基本存储单位 + 存1bit
存储周期
- 定义:存储器进行连续两次独立操作(读或写)之间所需的最小时间间隔
- 注意:存储周期 > 存取时间(因为需要恢复时间)
- 记忆关键词:两次操作的最小间隔 + 大于存取时间
编址方式
- 定义:给存储设备中每个单元分配地址的方法
- 常见:按字节编址、按字编址
- 影响:存储器的访问速度和效率
- 记忆关键词:分配地址的方法
SRAM与DRAM
静态RAM(SRAM)
- 全称:Static Random Access Memory
- 存储原理:使用**双稳态电路(触发器)**存储数据
- 特点:不需要刷新,速度快,但功耗高、价格贵、集成度低
- 用途:Cache(高速缓存)
- 记忆关键词:触发器 + 不需刷新 + 快但贵 + 用于Cache
动态RAM(DRAM)
- 全称:Dynamic Random Access Memory
- 存储原理:使用电容存储数据
- 特点:需要定期刷新保持数据,速度较慢,但价格便宜、集成度高
- 用途:主存
- 记忆关键词:电容 + 需要刷新 + 便宜 + 用于主存
SRAM vs DRAM
| 比较项 | SRAM | DRAM |
|---|
| 存储元件 | 触发器 | 电容 |
| 是否刷新 | 不需要 | 需要 |
| 速度 | 快 | 慢 |
| 价格 | 贵 | 便宜 |
| 集成度 | 低 | 高 |
| 功耗 | 高 | 低 |
| 用途 | Cache | 主存 |
闪存(Flash存储器)
- 定义:一种非易失性存储设备
- 存储原理:使用浮栅晶体管存储数据
- 特点:断电不丢失数据,可电擦写
- 用途:USB驱动器、SSD、手机存储
- 记忆关键词:非易失性 + 浮栅晶体管 + U盘/SSD
SDRAM
- 全称:Synchronous Dynamic Random Access Memory(同步动态RAM)
- 特点:内部命令发送与接收采用时钟同步方式
- 优势:与系统总线同步,传输效率高
- 应用:现代计算机系统的主存
- 记忆关键词:同步 + 时钟同步 + 现代主存
DRAM信号
行地址选通信号(RAS)
- 全称:Row Address Strobe
- 功能:在DRAM中指定要访问的存储单元的行地址
- 记忆关键词:选行 + Row
列地址选通信号(CAS)
- 全称:Column Address Strobe
- 功能:在DRAM中指定要访问的存储单元的列地址
- 记忆关键词:选列 + Column
DRAM寻址过程
先发送行地址(RAS有效)→ 选中一行
再发送列地址(CAS有效)→ 选中一列
行列交叉 → 定位到具体存储单元
为什么分两次发送:减少地址线数量(地址线复用)
磁盘相关
磁盘驱动器
- 定义:用于读取和写入磁盘数据的设备
- 组成:磁盘片、读写头、马达、控制电路
- 记忆关键词:读写磁盘的设备
寻道时间
- 定义:磁盘驱动器将读写头移动到指定磁道所需的时间
- 影响因素:当前磁道与目标磁道的距离
- 典型值:几毫秒到十几毫秒
- 记忆关键词:移动读写头到目标磁道的时间
旋转(等待)时间
- 定义:从开始寻找数据到数据所在扇区旋转到读写头下方所需的时间
- 平均值:磁盘旋转半周的时间
- 计算:平均旋转时间 = 60 / (2 × 转速RPM)
- 记忆关键词:等待扇区转到读写头下 + 平均半圈
数据传输率
- 定义:存储设备在单位时间内可以传输的数据量
- 单位:MB/s、GB/s
- 记忆关键词:单位时间传输量
磁盘访问时间 = 寻道时间 + 旋转时间 + 数据传输时间
固态硬盘(SSD)
- 定义:使用闪存技术存储数据的存储设备
- 优点:比传统机械硬盘更快、更耐用、无机械部件
- 缺点:价格较贵、写入次数有限
- 记忆关键词:闪存 + 快 + 耐用 + 无机械部件
磁盘控制器
- 定义:管理和控制磁盘驱动器操作的硬件或软件组件
- 功能:接收CPU命令,控制磁盘读写操作
- 记忆关键词:控制磁盘操作
局部性原理
时间局部性
- 定义:如果一个信息项被访问,那么在未来不久它很可能再次被访问
- 例子:循环中的变量被反复使用
- 记忆关键词:最近用过的,很快还会用
- 类比:你刚查过的单词,很快可能还会查
空间局部性
- 定义:如果程序访问了某个存储单元,那么在不久的将来,其附近的存储单元也很可能被访问
- 例子:数组的顺序访问
- 记忆关键词:用了一个,旁边的也会用
- 类比:看书翻到某页,接下来几页也会看
两种局部性对比
| 比较项 | 时间局部性 | 空间局部性 |
|---|
| 关注点 | 时间维度 | 空间维度 |
| 含义 | 同一数据会被重复访问 | 相邻数据会被依次访问 |
| 例子 | 循环变量 | 数组遍历 |
| Cache利用 | 保留最近访问的数据 | 一次加载一整行数据 |
Cache相关
Cache行(槽)
- 定义:缓存中用于存储数据的基本单元
- 组成:有效位 + 标记(Tag)+ 数据块
- 大小:通常包含多个字节的数据(如64字节)
- 记忆关键词:Cache的基本存储单元 + 有效位+标记+数据
主存块
- 定义:主存中可以被作为一个单元整体传输到缓存中的一组数据
- 大小:与Cache行大小相同
- 记忆关键词:主存到Cache的传输单位
命中率
- 定义:缓存中访问成功的次数与总访问次数的比例
- 公式:命中率 = 命中次数 / 总访问次数
- 通常值:95%以上
- 记忆关键词:成功次数/总次数 + 越高越好
命中时间
- 定义:缓存命中时,从发出数据请求到数据实际可用所需的时间
- 特点:很短(几个时钟周期)
- 记忆关键词:命中时的访问时间 + 很短
缺失损失
- 定义:当缓存未命中时,从慢速存储器(如主存)获取数据所需的额外时间和开销
- 特点:远大于命中时间
- 记忆关键词:未命中的额外代价 + 很长
平均存取时间
- 定义:从发出数据访问请求到数据实际可用所需的平均时间
- 公式:平均存取时间 = 命中率 × 命中时间 + (1-命中率) × 缺失损失
- 记忆关键词:综合考虑命中和缺失的平均时间
Cache映射方式
直接映射(Direct Mapping)
- 定义:每个主存块只能映射到Cache中的特定(固定)位置
- 映射规则:Cache行号 = 主存块号 mod Cache行数
- 优点:简单,不需要替换策略
- 缺点:可能产生冲突,命中率较低
- 记忆关键词:固定位置 + 简单 + 可能冲突
全相联映射
- 定义:主存中的任一块可以映射到Cache中的任一行
- 优点:最灵活,冲突最少,命中率高
- 缺点:需要全部比较,硬件成本高
- 记忆关键词:随便放 + 最灵活 + 硬件贵
组相联映射
- 定义:介于直接映射和全相联映射之间的方式
- 原理:将Cache分成若干组,组间直接映射,组内全相联
- n路组相联:每组有n行
- 优点:折中方案,性价比好
- 记忆关键词:组间直接映射 + 组内全相联 + 折中方案
三种映射对比
| 比较项 | 直接映射 | 全相联 | 组相联 |
|---|
| 放置位置 | 固定一个 | 任意一个 | 固定组内任意 |
| 冲突率 | 高 | 低 | 中 |
| 硬件复杂度 | 低 | 高 | 中 |
| 替换策略 | 不需要 | 需要 | 需要 |
| 查找速度 | 快 | 慢 | 中 |
替换与写策略
替换策略
- 定义:当缓存满时,如何选择数据项进行替换
- 使用场景:全相联和组相联映射
- 常见策略:LRU、FIFO、随机替换
- 记忆关键词:缓存满时 + 替换谁
FIFO算法(First-In-First-Out)
- 全称:先进先出算法
- 规则:最早进入缓存的数据项最先被替换
- 特点:实现简单,但可能替换频繁使用的数据
- 记忆关键词:先来的先走
LRU算法(Least Recently Used)
- 全称:最近最少使用算法
- 规则:最久未使用的数据项被替换
- 特点:性能好,但实现复杂
- 依据:时间局部性原理
- 记忆关键词:最久没用的走 + 基于时间局部性
LRU位
- 功能:跟踪缓存中数据项的使用情况
- 工作方式:每次数据项被访问时,LRU位被更新
- 用途:替换时找到最久未使用的数据项
- 记忆关键词:记录使用情况 + 用于LRU替换
FIFO vs LRU
| 比较项 | FIFO | LRU |
|---|
| 替换谁 | 最早进入的 | 最久没用的 |
| 实现难度 | 简单 | 复杂 |
| 性能 | 一般 | 较好 |
| 硬件开销 | 小 | 大 |
Cache写策略
Cache写策略
- 定义:CPU对Cache数据修改时,如何更新主存中数据的策略
- 核心问题:保持Cache和主存的数据一致性
- 两种策略:写回法和写通法
回写法(Write Back)
- 定义:CPU修改Cache数据时,不立即写回主存
- 时机:等到Cache中的数据块被替换或显式写回操作时,才写回主存
- 优点:减少主存写操作次数
- 缺点:Cache和主存可能不一致
- 需要:修改位(脏位)来标记是否被修改
- 记忆关键词:先改Cache + 替换时才写回 + 需要脏位
通写法(Write Through)
- 定义:CPU修改Cache数据时,立即写回主存
- 优点:Cache和主存始终一致
- 缺点:每次修改都要写主存,速度慢
- 记忆关键词:立即写回 + 始终一致 + 速度慢
写回vs写通对比
| 比较项 | 写回法 | 写通法 |
|---|
| 写主存时机 | 替换时 | 立即 |
| 一致性 | 差 | 好 |
| 写速度 | 快 | 慢 |
| 主存写次数 | 少 | 多 |
| 额外开销 | 需要脏位 | 可能需要写缓冲 |
虚拟存储
虚拟地址(逻辑地址)
- 定义:用户程序中的地址表示方式
- 特点:不直接对应物理内存中的实际地址
- 转换:需要通过地址映射转换为物理地址
- 记忆关键词:程序中的地址 + 不是真实地址 + 需要转换
物理地址
- 定义:内存中各存储单元的编号,即存储单元的真实地址
- 特点:可识别、可寻址、实际存在
- 使用:CPU访问内存时实际使用的地址
- 记忆关键词:真实地址 + CPU实际用的
虚拟页号
- 定义:虚拟地址中的一部分
- 功能:标识虚拟内存中的页面
- 记忆关键词:虚拟地址的高位部分 + 标识页面
物理页号
- 定义:物理地址中的一部分
- 功能:标识物理内存中的页面
- 记忆关键词:物理地址的高位部分 + 标识页框
页框(页帧)
- 定义:物理内存中的一个固定大小的块
- 功能:存储从虚拟内存中加载的数据
- 大小:通常4KB
- 记忆关键词:物理内存的固定大小块 + 存放页面
页表
- 定义:操作系统用于记录虚拟内存页面与物理内存页面之间映射关系的数据结构
- 功能:将虚拟地址转换为物理地址
- 每个进程:有自己独立的页表
- 记忆关键词:虚拟→物理的映射表 + 每进程一个
页表基址寄存器
- 功能:存放当前运行程序的页表的起始地址
- 使用:CPU访问虚拟地址时,与页表基址拼接找到页表项
- IA-32中:CR3寄存器
- 记忆关键词:页表起始地址 + CR3
页面状态
未分配页
- 定义:尚未被进程申请使用的虚拟内存页面
- 特点:不占用物理内存或磁盘空间
- 记忆关键词:未申请 + 不占空间
未缓存页
- 定义:在虚拟内存中,但尚未被加载到物理内存中的页面
- 状态:数据在磁盘上
- 记忆关键词:已分配 + 不在内存中 + 在磁盘上
三种页面状态
| 状态 | 是否分配 | 是否在内存 | 说明 |
|---|
| 未分配页 | ❌ | ❌ | 未使用 |
| 未缓存页 | ✅ | ❌ | 在磁盘上 |
| 已缓存页 | ✅ | ✅ | 在内存中 |
有效位(装入位)
- 功能:标识页面是否在物理内存中
- 值为1:页面在内存中,可以直接访问
- 值为0:页面不在内存中,需要从磁盘加载
- 记忆关键词:标记页面在不在内存
修改位(脏位)
- 功能:标识缓存/内存中的页面是否被修改过
- 值为1:已修改,替换时需写回磁盘
- 值为0:未修改,替换时不需写回
- 记忆关键词:标记是否被改过 + 决定是否写回
页故障(Page Fault)
请求分页
- 定义:一种内存管理技术
- 原理:程序在需要时才从磁盘加载页面到物理内存
- 特点:不一次性加载全部页面
- 记忆关键词:按需加载 + 用到时才调入
TLB与地址转换
快表(TLB)
- 全称:Translation Lookaside Buffer
- 定义:一种缓存机制,存储虚拟地址到物理地址的转换表的一部分
- 功能:加速地址转换过程
- 工作方式:CPU先查TLB → 命中则直接转换 → 未命中则查页表
- 本质:页表的Cache
- 记忆关键词:页表的缓存 + 加速地址转换
地址转换完整流程
虚拟地址 → 查TLB
├── TLB命中 → 直接得到物理地址 → 访问Cache/主存
└── TLB未命中 → 查页表
├── 页在内存 → 更新TLB → 得到物理地址
└── 页不在内存 → 页故障 → 从磁盘调入 → 更新页表和TLB
保护与权限
用户态
- 定义:操作系统的一种运行模式
- 权限:程序运行在非特权级别
- 限制:不能执行特权指令,不能直接访问系统资源
- 记忆关键词:非特权 + 受限制 + 普通程序运行态
内核态
- 定义:操作系统内核的运行模式
- 权限:具有最高权限级别
- 能力:可以执行所有指令并访问所有内存区域
- 记忆关键词:最高权限 + 无限制 + OS内核运行态
特权模式
- 定义:等同于内核态
- 特点:程序可以执行特权指令并直接访问系统资源
- 记忆关键词:= 内核态
特权指令
- 定义:只能由操作系统或具有特权级别的程序执行的指令
- 用途:访问硬件、修改系统状态、管理内存等
- 例子:修改页表、切换用户态/内核态
- 记忆关键词:只有OS能执行 + 系统级操作
用户态vs内核态
| 比较项 | 用户态 | 内核态 |
|---|
| 权限 | 受限 | 最高 |
| 可执行指令 | 普通指令 | 所有指令 |
| 访问范围 | 用户空间 | 全部空间 |
| 运行程序 | 用户程序 | OS内核 |
存储保护
- 定义:操作系统提供的一种机制
- 功能:防止程序访问或修改其不应该访问的内存区域
- 目的:确保系统的稳定性和安全性
- 方式:地址越界检查 + 访问权限检查
- 记忆关键词:防止越权访问 + 保护系统安全
地址越界
- 定义:程序尝试访问其权限范围之外的内存地址
- 后果:导致程序崩溃或系统错误
- 处理:OS产生异常,终止程序
- 记忆关键词:访问超出范围 + 产生异常
访问权限
- 定义:程序对特定内存区域的访问级别
- 类型:可读、可写、可执行
- 例子:代码段通常是可读可执行不可写
- 记忆关键词:读/写/执行权限
访问越权
- 定义:程序尝试执行超出其权限范围的操作
- 例子:试图写入只读内存、用户态执行特权指令
- 后果:产生异常
- 记忆关键词:操作超出权限 + 产生异常
第六章:I/O系统
I/O基础
I/O硬件
- 定义:输入/输出设备
- 例子:键盘、鼠标、显示器、磁盘等
- 功能:与计算机进行数据传输
- 记忆关键词:输入输出设备 + 数据传输
I/O软件
- 定义:用于管理和控制I/O硬件操作的一组程序和工具
- 包含:设备驱��程序、中断处理程序、缓冲管理、系统调用等
- 记忆关键词:管理I/O硬件的软件集合
系统调用相关
系统调用处理程序
- 定义:操作系统内核中的一部分
- 功能:处理来自用户空间的系统调用请求
- 作用:实现用户程序与内核之间的交互
- 记忆关键词:内核中 + 处理系统调用请求
系统调用服务例程
- 定义:系统调用处理程序调用的内核函数
- 功能:实现具体的系统调用功能
- 关系:处理程序→调用→服务例程
- 记忆关键词:具体实现功能的内核函数
系统级I/O函数
- 定义:操作系统提供的用于执行I/O操作的API
- 例子:C语言中的stdio函数库(printf、scanf)
- 记忆关键词:OS提供的I/O接口
文件系统相关
虚拟文件系统(VFS)
- 定义:分布式文件系统接口
- 功能:允许不同的文件系统与操作系统交互,无需考虑具体实现细节
- 优势:统一接口,支持多种文件系统
- 记忆关键词:统一接口 + 屏蔽不同文件系统差异
流缓冲区
- 功能:提高I/O操作的效率和性能
- 方式:在数据读取或写入时进行暂存
- 优势:减少系统调用次数和内存访问延迟
- 记忆关键词:暂存数据 + 减少系统调用
索引节点(inode)
- 定义:文件系统中的关键数据结构
- 内容:文件的元数据(文件大小、权限、创建时间、数据块位置等)
- 功能:定位和访问文件
- 特点:不包含文件名(文件名在目录项中)
- 记忆关键词:文件元数据 + 定位文件 + 不含文件名
系统打开文件表
- 定义:操作系统内核维护的数据结构
- 内容:记录当前打开的文件及其相关信息
- 信息:文件描述符、文件状态、读写位置等
- 记忆关键词:内核维护 + 记录所有打开文件
文件描述符
- 定义:由无符号整数表示的句柄
- 功能:进程使用它来标识打开的文件
- 关联信息:文件的打开模式、位置类型、初始类型等
- 标准值:0=标准输入,1=标准输出,2=标准错误
- 记忆关键词:整数句柄 + 标识打开文件
目录文件
- 定义:文件系统中的特殊文件
- 内容:存储多个文件或目录的元数据信息
- 功能:方便文件系统管理和查找文件
- 记忆关键词:特殊文件 + 存储目录信息
目录项
- 定义:文件系统中用于记录文件或目录信息的条目
- 内容:文件名、属性、inode编号等
- 功能:用户查找和访问文件
- 记忆关键词:文件名+inode编号 + 查找文件用
文件元数据
- 定义:关于文件自身的信息
- 内容:创建时间、修改时间、大小、权限等
- 存储位置:文件系统的元数据结构(inode)中
- 记忆关键词:文件的属性信息 + 存在inode中
磁盘高速缓存
- 定义:操作系统用于提高磁盘I/O性能的技术
- 方式:缓存最近访问过的磁盘数据块
- 效果:减少对磁盘的物理访问次数
- 记忆关键词:缓存磁盘数据 + 减少物理访问
高速缓存RAM
- 定义:用于暂时存储数据和程序的内存设备
- 特点:快速读写
- 用途:存储CPU经常访问的数据
- 记忆关键词:快速暂存 + CPU频繁访问的数据
I/O控制方式
程序直接控制I/O
- 定义:用户程序直接通过I/O指令进行I/O操作
- 工作方式:CPU发命令 → 不断轮询状态 → 设备就绪 → 传输数据
- 缺点:CPU忙等待,效率极低
- 记忆关键词:CPU轮询等待 + 效率最低
中断控制I/O
- 定义:通过中断机制进行I/O操作
- 工作方式:CPU发命令 → CPU做别的事 → 设备完成发中断 → CPU处理
- 优点:CPU不用等,可以并行工作
- 记忆关键词:设备发中断通知CPU + CPU可做别的事
DMA方式
- 全称:Direct Memory Access(直接内存访问)
- 定义:允许某些硬件子系统直接访问主存,无需通过CPU传输数据
- 工作方式:CPU启动DMA → DMA自己搬数据 → 搬完发中断
- 优点:减少CPU干预,提高效率
- 记忆关键词:设备直接访问内存 + 不经过CPU + 搬完通知
I/O控制方式
- 定义:计算机系统中管理I/O操作的方法和技术
- 种类:程序直接控制、中断驱动、DMA
- 记忆关键词:管理I/O操作的方式
三种I/O控制方式对比
| 比较项 | 程序直接控制 | 中断控制 | DMA |
|---|
| CPU参与度 | 全程参与 | 开始和结束 | 只有开始和结束 |
| 数据传输 | CPU搬运 | CPU搬运 | DMA控制器搬运 |
| 传输单位 | 字/字节 | 字/字节 | 数据块 |
| CPU效率 | 最低 | 中等 | 最高 |
| 适用场景 | 简单设备 | 一般设备 | 高速批量传输 |
中断相关
就绪状态
- 定义:进程/线程已准备好执行,等待被调度器分配到CPU上运行
- 记忆关键词:准备好了 + 等CPU
多重中断
- 定义:一个中断处理程序执行过程中,又发生了另一个中断
- 处理:暂时保存当前中断上下文,处理新中断
- 记忆关键词:中断中又来中断
中断嵌套
- 定义:与多重中断类似,强调中断的层次关系
- 原理:高优先级中断可以打断低优先级中断
- 记忆关键词:高优先级打断低优先级 + 层层嵌套
中断响应优先级
- 定义:决定哪个中断应该首先被响应的优先级规则
- 功能:当多个中断同时到达时,决定处理顺序
- 记忆关键词:谁先被响应
中断处理优先级
- 定义:决定哪个中断处理程序应该首先被执行的优先级规则
- 功能:当中断嵌套时,决定执行顺序
- 记忆关键词:谁先被执行
中断屏蔽字
- 定义:用于控制中断响应的寄存器或变量
- 功能:屏蔽或允许特定的中断请求
- 用途:实现中断的优先级管理
- 记忆关键词:控制哪些中断可以响应 + 优先级管理
中断服务程序
- 定义:操作系统内核中用于处理特定中断事件的程序
- 执行时机:中断发生时,CPU跳转到对应的中断服务程序
- 记忆关键词:处理中断的程序 + CPU跳转执行
设备与端口
设备控制器
- 定义:硬件设备与计算机之间的接口电路
- 功能:控制和管理硬件设备的操作
- 例子:磁盘控制器、显卡控制器
- 记忆关键词:设备接口 + 控制管理设备
设备驱动程序
- 定义:用于控制计算机上硬件设备的软件
- 功能:使硬件与计算机系统协调工作
- 提供者:通常由设备制造商提供
- 集成:与操作系统紧密集成
- 记忆关键词:控制硬件的软件 + 厂商提供
I/O端口
- 定义:CPU与外部设备通信的接口
- 功能:发送和接收数据以及控制信号
- 记忆关键词:CPU与设备通信的接口
状态端口
- 定义:I/O端口的一种
- 功能:读取或设置硬件设备的状态信息
- 记忆关键词:读取/设置设备状态
控制端口
- 定义:用于发送和接收控制信号的端口
- 功能:控制设备的操作和行为
- 记忆关键词:发送控制信号
数据端口
- 定义:用于传输数据的端口
- 功能:与硬件设备之间发送和接收数据
- 记忆关键词:传输数据
三种端口对比
| 端口类型 | 功能 | 方向 |
|---|
| 状态端口 | 读取设备状态 | 设备→CPU |
| 控制端口 | 发送控制命令 | CPU→设备 |
| 数据端口 | 传输数据 | 双向 |
I/O地址空间与编址
I/O地址空间
- 定义:计算机内存中用于映射I/O端口和设备控制器的地址范围
- 功能:使CPU可以通过地址访问I/O设备
- 记忆关键词:I/O设备的地址范围
存储器映射I/O
- 定义:将I/O端口或设备控制器映射到内存地址空间
- 效果:CPU可以像访问内存一样访问I/O设备
- 优点:可以使用普通访存指令操作I/O
- 记忆关键词:I/O映射到内存地址 + 用访存指令操作I/O
I/O指令
- 定义:CPU执行的指令,用于启动I/O操作
- 功能:读取或写入数据
- 使用场景:独立编址方式下使用专门的I/O指令
- 记忆关键词:专门的I/O操作指令
独立编址方式
- 定义:I/O端口地址和内存地址相互独立,使用不同的地址空间
- 特点:需要专门的I/O指令访问设备
- 优点:I/O和内存互不干扰
- 缺点:需要额外的I/O指令
- 记忆关键词:I/O和内存分开编址 + 需专门I/O指令
统一编址方式
- 定义:I/O端口地址和内存地址统一进行编址,使用相同的地址空间
- 特点:可以用普通访存指令操作I/O
- 优点:编程简单,不需要专门I/O指令
- 缺点:占用部分内存地址空间
- 记忆关键词:I/O和内存统一编址 + 用访存指令操作
独立编址vs统一编址
| 比较项 | 独立编址 | 统一编址 |
|---|
| 地址空间 | 分开 | 统一 |
| I/O指令 | 需要专门指令 | 用访存指令 |
| 内存空间 | 不占用 | 占用部分 |
| 复杂度 | 需要区分指令 | 编程简单 |
DMA与中断控制器
DMA控制器
- 定义:实现DMA方式数据传输的硬件设备
- 功能:在内存和设备之间直接传输数据,无需CPU干预
- 发中断时机:数据块传输完毕时
- 记忆关键词:硬件 + 直接搬数据 + 完成时发中断
可编程中断控制器
- 定义:用于管理中断请求的硬件设备
- 功能:对中断进行优先级排序、屏蔽和响应控制
- 例子:Intel 8259A
- 记忆关键词:管理中断 + 优先级排序 + 可编程
中断请求寄存器
- 定义:记录当前待处理的中断请求的寄存器
- 工作方式:中断发生时,对应位被置1
- 记忆关键词:记录待处理中断 + 对应位置1
I/O软件层次
用户空间I/O软件
- 定义:运行在操作系统用户空间中的程序
- 功能:处理I/O操作
- 交互:通过系统调用与内核空间I/O软件交互
- 例子:printf、scanf、fread、fwrite
- 记忆关键词:用户空间 + 通过系统调用访问内核
内核空间I/O软件
- 定义:操作系统内核中负责处理I/O操作的部分
- 功能:管理设备驱动、处理中断、提供系统调用接口
- 记忆关键词:内核中 + 管理驱动和中断
总结:名词解释答题模板
模板一:定义型
XX是...(定义),它的功能/作用是...(功能),特点是...(特点)
模板二:对比型
XX是一种...方式/方法/技术,与YY不同的是...(区别),其优点是...(优势)
模板三:组件型
XX是计算机/CPU/存储器中的一个...部件/组件,负责...(功能),位于...(位置),与...配合工作(关联)
答题要点
- 先给定义(一句话说清"是什么")
- 再说功能("做什么"或"有什么用")
- 补充特点("有什么特别的")
- 举例说明(如果有的话)
字数控制
- 考试中名词解释一般写3-5句话即可
- 核心是定义+功能+特点三要素
- 有余力再加举例
本文使用 mdnice 排版