20232022年408真题易错知识点整理
浮点数
考察了非规格化数:
IEEE 754标准中,浮点数的表示取决于阶码 (Exponent) 和尾数 (Mantissa) 的组合。下表清晰地展示了各种情况下的区别。
类型 | 阶码 (E) | 尾数 (M) | 隐藏位/处理方式 | 实际指数计算 | 表示的值/含义 |
---|---|---|---|---|---|
有符号零 | 全0 | 全0 | 无 | E实际=1−BiasE_{\text{实际}} = 1 - \text{Bias}E实际=1−Bias | ±0.0\pm 0.0±0.0 (符号位决定正负) |
非规格化数 (Denormalized) | 全0 | 非全0 | **0.**M (隐藏位为0) | E实际=1−BiasE_{\text{实际}} = 1 - \text{Bias}E实际=1−Bias (单精度: -126, 双精度: -1022) | (−1)S×0.M×2E实际(-1)^S \times 0.M \times 2^{E_{\text{实际}}}(−1)S×0.M×2E实际 用于表示非常接近0的数 |
规格化数 (Normalized) | 非全0 且非全1 | 任意 | **1.**M (隐藏位为1) | E实际=E−BiasE_{\text{实际}} = E - \text{Bias}E实际=E−Bias (Bias单精度为127, 双精度为1023) | (−1)S×1.M×2E实际(-1)^S \times 1.M \times 2^{E_{\text{实际}}}(−1)S×1.M×2E实际 绝大多数常规浮点数 |
无穷大 (Infinity) | 全1 | 全0 | 无 | 不适用 | ±∞\pm \infty±∞ (符号位决定正负) |
非数 (NaN) | 全1 | 非全0 | 无 | 不适用 | NaN (Not a Number),表示无效操作结果(如−1\sqrt{-1}−1、0/00/00/0) |
🧠 重要说明:
- Bias(偏移值):单精度下为127(阶码8位),双精度下为1023(阶码11位)。
- 非规格化数的意义:它填补了0与最小规格化正数之间的空白,实现了逐渐下溢 (Gradual Underflow),避免了突然下溢归零带来的精度损失。
- 特殊值的操作:对无穷大和NaN进行操作会产生特定结果(如有限数除以0得无穷大)或传递NaN。
中断响应
中断隐指令负责的是硬件自动执行的“基础保障”工作,而操作系统则负责后续更复杂的“具体处理”任务
中断处理阶段 | 主要负责方 | 核心任务与说明 |
---|---|---|
1. 中断响应与关中断 | 中断隐指令 (硬件自动完成) | CPU检测到中断请求后,自动将中断标志位(IF)清零,禁止响应新的可屏蔽中断,为后续处理提供一个稳定的初始环境。 |
2. 保存断点与关键状态 | 中断隐指令 (硬件自动完成) | CPU自动将程序计数器(PC)和处理机状态字(PSW)等关键寄存器的内容压入堆栈,确保事后能准确返回被中断的程序。 |
3. 识别中断源并转入处理程序 | 中断隐指令 (硬件自动完成) | 硬件通过查询中断向量表,自动找到对应中断服务程序(ISR)的入口地址,并加载到程序计数器中,使CPU开始执行ISR。 |
4. 保存与恢复完整现场 | 操作系统 (通过中断服务程序) | 中断服务程序(属于操作系统内核)负责保存和恢复通用寄存器等硬件自动保存之外的所有现场信息。 |
5. 开中断与允许嵌套 | 操作系统 (通过中断服务程序) | 在完成必要现场保护后,操作系统通过指令重新开启中断(将IF置1),允许更高优先级的中断嵌套发生。 |
6. 执行具体中断处理 | 操作系统 (通过中断服务程序) | 这是中断处理的实质阶段,由操作系统执行与中断事件相关的具体代码,如处理键盘输入、完成磁盘I/O或处理异常。 |
7. 中断返回 | 操作系统与硬件协作 | 中断服务程序最后执行一条中断返回指令(如IRET),该指令会触发硬件自动将之前保存的PSW和PC值从栈中弹出,从而恢复被中断程序的执行环境。 |
💡 理解协作的关键点
这种分工体现了计算机系统设计的重要思想:
- 效率与安全的平衡:中断隐指令用硬件实现最紧急、最基础的操作,速度极快,为后续软件处理打下安全基础。
- 软硬件协同:操作系统在硬件提供的基础保障之上,利用其灵活性和强大的功能,完成复杂多样的具体任务。
组成原理
- 地址译码器是:比如你的输入是三条线,输出是8条线
- 多路选择器是: 8根输入,和3个输入.一个输出
- 地址译码器的工作就像打固定电话。当你拨打一个完整的电话号码(地址信号)时,电话交换系统(地址译码器)会进行译码,最终只让唯一对应的那部分机(输出信号)响铃,从而建立连接
- 多路选择器的工作则像看电视选台。电视机内部有多个频道(输入数据)的信号同时存在,你通过遥控器按下“1”、“2”等数字(选择信号),来选择让哪一个频道的节目出现在屏幕上(输出端)
- 磁盘地址包含: 磁道号(柱面),磁头号,扇区号
DMA周期挪用是一种平衡CPU和I/O设备访问内存需求的技术,下面这个表格能帮你快速抓住核心要点。
特性维度 | 停止CPU访存 | 周期挪用(周期窃取) | DMA与CPU交替访问 |
---|---|---|---|
核心原理 | DMA期间CPU完全让出总线控制权 | I/O设备在需要时“窃取”本属于CPU的内存访问周期 | 将CPU工作周期分割,固定时间段分给CPU和DMA |
CPU活动 | 基本停止工作,保持状态 | 仅在需要访存时才被短暂延迟,多数时间继续执行指令 | 几乎不受影响,无缝交替 |
总线控制权转移 | 成组传送前交接,结束后归还 | 每次传送一个字都需要申请、建立和归还 | 无需申请,按固定时间片切换 |
内存利用率 | 较低(I/O设备准备数据时内存空闲) | 较高 | 很高 |
控制复杂度 | 简单 | 中等 | 复杂 |
适用场景 | 传输率极高的I/O设备成组传送 | I/O设备读写周期 > 内存存储周期 | CPU工作周期 >> 内存存取周期 |
💡 深入理解周期挪用
了解了基本概念后,我们来看看它是如何具体工作的,以及有哪些优缺点。
🔍 工作原理与场景
当I/O设备发出DMA请求时,会根据CPU的状态进入不同的处理流程:
- CPU未访存:如果CPU正在执行不需要访问内存的指令(例如复杂的算术运算),I/O设备可以立即使用总线,不会对CPU造成任何影响。
- CPU正在访存:如果CPU正在访问内存,I/O设备需要等待当前的存取周期结束后,才能挪用总线。
- CPU与DMA同时请求访存:当两者冲突时,I/O设备的访存请求通常具有更高优先级。这是因为I/O数据流(如来自网络或磁盘的数据)可能有实时性要求,不及时处理可能导致数据丢失。因此,DMA控制器会“窃取”1-2个内存周期,导致CPU的访存操作被轻微延迟。
⚖️ 优势与代价
周期挪用的主要优势在于其平衡性:它既满足了I/O设备的数据传输需求,又最大限度地保证了CPU能够持续工作,从而提高了整个系统的效率。
然而,这种灵活性也有代价:每次挪用周期都涉及总线控制权的申请、建立和归还,这个过程本身会消耗时间。因此,尽管对主存而言只占用一个周期,但对DMA控制器来说,实际可能消耗2-5个主存周期。这也导致了数据传送过程是不连续和不规则的。此外,实现精密的时序控制需要相对复杂的硬件电路。
DHCP运作流程
发现阶段 (DHCP Discover)
当一台设备(DHCP客户端)首次接入网络或需要获取IP地址时,由于不知道DHCP服务器的地址,它会向整个网络发送一个DHCP Discover广播报文。这个报文的源地址是0.0.0.0
,目标地址是255.255.255.255
,其中包含了客户端的MAC地址,用于唯一标识自己。这个步骤的目的是寻找网络中的DHCP服务器。
提供阶段 (DHCP Offer)
网络中的DHCP服务器收到Discover广播后,会从自己管理的IP地址池中挑选一个可用的IP地址,然后向客户端回复一个DHCP Offer报文。这个报文通常也以广播形式发送(因为客户端此时尚未有正式IP地址),其中包含了为客户端准备的IP地址、子网掩码、租约期限等信息。
请求阶段 (DHCP Request)
客户端可能会收到多个DHCP服务器发来的Offer报文。通常情况下,它会选择第一个到达的Offer,然后以广播形式发送一个DHCP Request报文。这个报文有两个作用:一是告知选中的服务器“我接受你提供的IP”;二是告知其他未被选中的服务器“我将不使用你们提供的地址”,以便它们收回预留的IP。
确认阶段 (DHCP ACK)
被选中的DHCP服务器收到Request报文后,会向客户端发送一个DHCP ACK报文作为最终确认。此报文中包含了客户端可以正式使用的完整网络配置信息,如IP地址、子网掩码、默认网关、DNS服务器地址等。客户端收到ACK后,会将此IP地址与网卡绑定,完成TCP/IP协议的初始化,从而可以开始网络通信。
地址续租与释放
IP地址的分配是有时间限制的,这个时间称为租约期限。为了能继续使用该IP地址,客户端需要进行续约。
- 租约更新:当租期到达50% 时,客户端会直接向原DHCP服务器发送一个单播的Request报文请求续约。如果服务器同意(回复DHCP ACK),租约会从零开始重新计算。如果此时服务器没有响应,客户端会在租期到达87.5% 时再次广播发送Request报文,寻找任何可以响应的DHCP服务器进行续约。
- 地址释放:当客户端主动断开网络连接(如执行
ipconfig /release
命令)时,会向DHCP服务器发送一个DHCP Release报文,告知服务器其不再需要当前使用的IP地址,服务器随后会将该地址回收并放回地址池以备重新分配。