计算机系统基础复习提纲主要涵盖了计算机的多个核心领域,包括信息表示与处理、存储系统、程序的机器级表示、汇编语言、内存管理和处理器体系结构。以下是对这些知识点的详细阐述:
1. **信息的表示和处理**:
- 字长:计算机中数据的基本单位,决定了计算机一次能处理的最大数值或字符数量。
- 字节序:字节在内存中的存储顺序,分为大端字节序和小端字节序。
- 位运算和逻辑运算:位运算包括按位与、或、异或和非,逻辑运算则涉及逻辑与、逻辑或和逻辑非。
- 无符号数和有符号数:无符号数只能表示正数,而有符号数可以表示正负数,采用补码表示法。
2. **整数的表示**:
- 补码:用于表示有符号整数,包括符号位和数值位,正数的补码就是其原码,负数的补码是其反码加1。
- 整数的运算:包括加法、减法、乘法和除法,需要考虑溢出问题。
- 移位运算:左移相当于乘以2的幂次,右移分为逻辑右移和算术右移。
3. **浮点数**:
- 规格化数:浮点数的一种形式,尾数不为0且最高位为1。
- 浮点数编码:遵循IEEE 754标准,分为正负非规格化数、正负规格化数、零、无穷和NaN。
- 溢出与下溢出:当浮点数超出其表示范围时发生,可能导致精度丢失或结果错误。
4. **汇编语言**:
- x86-64架构:64位版本的x86指令集,支持更大寻址空间。
- 数据访问指令:如MOV用于数据传输,LEA用于地址计算。
- 条件码和比较指令:CMP用于比较,TEST用于位测试,SETX指令根据条件码设置标志位。
- 控制流指令:包括跳转指令JX和条件数据传输指令CMOVX,后者可以避免不必要的条件分支。
5. **内存管理**:
- 栈:自动分配和释放内存,使用LIFO(后进先出)原则,通过PUSH和POP指令进行操作。
- 过程调用:CALL用于调用函数,RET用于返回,参数传递和返回值存储在特定寄存器或栈中。
- 栈帧:每个过程调用的内存区域,包括局部变量、参数和返回地址。
- 内存对齐:为了优化访问效率,数据在内存中的位置会按照特定规则对齐。
6. **处理器体系结构**:
- CISC(复杂指令集)和RISC(精简指令集):CISC包含大量复杂指令,RISC则简化指令集,提高执行效率。
- 流水线:将指令执行分解为多个阶段,提高CPU利用率,但面临数据依赖和控制依赖等问题。
- 存储器层次结构:从高速缓存到主存再到磁盘,形成金字塔结构,利用局部性原理优化性能。
7. **存储技术**:
- ROM、SRAM和DRAM:ROM是只读存储器,SRAM速度快但成本高,DRAM速度慢但容量大。
- 磁盘访问:包括寻道时间、旋转时间和传输时间,使用DMA(直接内存访问)提高效率。
- SSD(固态硬盘):基于闪存技术,提供更快的读写速度和更低的延迟。
8. **高速缓存**:
- 直接映射、组相联和全相联:三种高速缓存组织方式,直接影响冲突未命中的可能性和替换策略。
- 块替换算法:LRU(最近最少使用)、LFU(最不经常使用)和随机算法。
- 缓存友好代码:通过调整循环顺序和数据结构来优化空间和时间局部性,减少未命中率。
以上内容构成了计算机系统基础的重要复习点,涵盖了计算机硬件和软件交互的基础知识,对于理解和优化程序性能至关重要。